pdsch_{ue,enodeb}: add -Q switch to enable use of standard LTE rates

this is useful for RF equipment that doesn't support the shorter symbol
size we use by default, e.g. the N310
This commit is contained in:
Andre Puschmann 2020-11-23 22:02:31 +01:00
parent 755325fc3e
commit 382f56fbea
2 changed files with 17 additions and 3 deletions

View File

@ -75,7 +75,8 @@ static char* rf_args = "";
static char* rf_dev = ""; static char* rf_dev = "";
static float rf_amp = 0.8, rf_gain = 60.0, rf_freq = 2400000000; static float rf_amp = 0.8, rf_gain = 60.0, rf_freq = 2400000000;
static bool enable_256qam = false; static bool enable_256qam = false;
static float output_file_snr = +INFINITY; static float output_file_snr = +INFINITY;
static bool use_standard_lte_rate = false;
static bool null_file_sink = false; static bool null_file_sink = false;
static srslte_filesink_t fsink; static srslte_filesink_t fsink;
@ -140,6 +141,7 @@ static void usage(char* prog)
printf("\t-v [set srslte_verbose to debug, default none]\n"); printf("\t-v [set srslte_verbose to debug, default none]\n");
printf("\t-s output file SNR [Default %f]\n", output_file_snr); printf("\t-s output file SNR [Default %f]\n", output_file_snr);
printf("\t-q Enable/Disable 256QAM modulation (default %s)\n", enable_256qam ? "enabled" : "disabled"); printf("\t-q Enable/Disable 256QAM modulation (default %s)\n", enable_256qam ? "enabled" : "disabled");
printf("\t-Q Use standard LTE sample rates (default %s)\n", use_standard_lte_rate ? "enabled" : "disabled");
printf("\n"); printf("\n");
printf("\t*: See 3GPP 36.212 Table 5.3.3.1.5-4 for more information\n"); printf("\t*: See 3GPP 36.212 Table 5.3.3.1.5-4 for more information\n");
} }
@ -147,7 +149,7 @@ static void usage(char* prog)
static void parse_args(int argc, char** argv) static void parse_args(int argc, char** argv)
{ {
int opt; int opt;
while ((opt = getopt(argc, argv, "IadglfmoncpqvutxbwMsB")) != -1) { while ((opt = getopt(argc, argv, "IadglfmoncpqvutxbwMsBQ")) != -1) {
switch (opt) { switch (opt) {
case 'I': case 'I':
@ -207,6 +209,9 @@ static void parse_args(int argc, char** argv)
case 'q': case 'q':
enable_256qam ^= true; enable_256qam ^= true;
break; break;
case 'Q':
use_standard_lte_rate ^= true;
break;
default: default:
usage(argv[0]); usage(argv[0]);
exit(-1); exit(-1);
@ -708,6 +713,8 @@ int main(int argc, char** argv)
parse_args(argc, argv); parse_args(argc, argv);
srslte_use_standard_symbol_size(use_standard_lte_rate);
uint8_t mch_table[10]; uint8_t mch_table[10];
bzero(&mch_table[0], sizeof(uint8_t) * 10); bzero(&mch_table[0], sizeof(uint8_t) * 10);
if (mbsfn_area_id > -1) { if (mbsfn_area_id > -1) {

View File

@ -109,6 +109,7 @@ typedef struct {
int sf_config; int sf_config;
int verbose; int verbose;
bool enable_256qam; bool enable_256qam;
bool use_standard_lte_rate;
} prog_args_t; } prog_args_t;
void args_default(prog_args_t* args) void args_default(prog_args_t* args)
@ -195,6 +196,7 @@ void usage(prog_args_t* args, char* prog)
printf("\t-M MBSFN area id [Default %d]\n", args->mbsfn_area_id); printf("\t-M MBSFN area id [Default %d]\n", args->mbsfn_area_id);
printf("\t-N Non-MBSFN region [Default %d]\n", args->non_mbsfn_region); printf("\t-N Non-MBSFN region [Default %d]\n", args->non_mbsfn_region);
printf("\t-q Enable/Disable 256QAM modulation (default %s)\n", args->enable_256qam ? "enabled" : "disabled"); printf("\t-q Enable/Disable 256QAM modulation (default %s)\n", args->enable_256qam ? "enabled" : "disabled");
printf("\t-Q Use standard LTE sample rates (default %s)\n", args->use_standard_lte_rate ? "enabled" : "disabled");
printf("\t-v [set srslte_verbose to debug, default none]\n"); printf("\t-v [set srslte_verbose to debug, default none]\n");
} }
@ -203,7 +205,7 @@ void parse_args(prog_args_t* args, int argc, char** argv)
int opt; int opt;
args_default(args); args_default(args);
while ((opt = getopt(argc, argv, "adAogliIpPcOCtdDFRqnvrfuUsSZyWMNBTG")) != -1) { while ((opt = getopt(argc, argv, "adAogliIpPcOCtdDFRqnvrfuUsSZyWMNBTGQ")) != -1) {
switch (opt) { switch (opt) {
case 'i': case 'i':
args->input_file_name = argv[optind]; args->input_file_name = argv[optind];
@ -308,6 +310,9 @@ void parse_args(prog_args_t* args, int argc, char** argv)
case 'q': case 'q':
args->enable_256qam ^= true; args->enable_256qam ^= true;
break; break;
case 'Q':
args->use_standard_lte_rate ^= true;
break;
default: default:
usage(args, argv[0]); usage(args, argv[0]);
exit(-1); exit(-1);
@ -396,6 +401,8 @@ int main(int argc, char** argv)
parse_args(&prog_args, argc, argv); parse_args(&prog_args, argc, argv);
srslte_use_standard_symbol_size(prog_args.use_standard_lte_rate);
#ifdef ENABLE_GUI #ifdef ENABLE_GUI
if (prog_args.mbsfn_area_id > -1) { if (prog_args.mbsfn_area_id > -1) {
enable_mbsfn_plot = true; enable_mbsfn_plot = true;