diff --git a/targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c b/targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c index e9f0c312bb677c3ff815de5b3f40eb632b1b8c6f..2ca93d37da05761a3b29fa636362676e6141fe9a 100644 --- a/targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c +++ b/targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c @@ -248,7 +248,7 @@ int openair0_stop_without_reset(int card) static exmimo_config_t *p_exmimo_config; static exmimo_id_t *p_exmimo_id; #define MY_RF_MODE (RXEN + TXEN + TXLPFNORM + TXLPFEN + TXLPF25 + RXLPFNORM + RXLPFEN + RXLPF25 + LNA1ON +LNAMax + RFBBNORM + DMAMODE_RX + DMAMODE_TX) -#define RF_MODE_BASE (TXLPFNORM + TXLPFEN + TXLPF25 + RXLPFNORM + RXLPFEN + RXLPF25 + LNA1ON +LNAMax + RFBBNORM) +#define RF_MODE_BASE (LNA1ON +LNAMax + RFBBNORM) int openair0_device_init(openair0_device *device, openair0_config_t *openair0_cfg) { @@ -256,7 +256,7 @@ int openair0_device_init(openair0_device *device, openair0_config_t *openair0_cf int ret; int ant; int resampling_factor=2; - + int rx_filter=RXLPF25, tx_filter=TXLPF25; ret = openair0_open(); @@ -284,7 +284,10 @@ int openair0_device_init(openair0_device *device, openair0_config_t *openair0_cf exit(-1); } - + if (!openair0_cfg) { + printf("Error, openair0_cfg is null!!\n"); + return(-1); + } if (p_exmimo_id->board_swrev>=9) p_exmimo_config->framing.eNB_flag = 0; @@ -293,15 +296,27 @@ int openair0_device_init(openair0_device *device, openair0_config_t *openair0_cf p_exmimo_config->framing.tdd_config = DUPLEXMODE_FDD + TXRXSWITCH_LSB; - if (openair0_cfg->sample_rate==30.72e6) + if (openair0_cfg->sample_rate==30.72e6) { resampling_factor = 0; - else if (openair0_cfg->sample_rate==15.36e6) + rx_filter = RXLPF10; + tx_filter = TXLPF10; + } + else if (openair0_cfg->sample_rate==15.36e6) { resampling_factor = 1; - else if (openair0_cfg->sample_rate==7.68e6) + rx_filter = RXLPF5; + tx_filter = TXLPF5; + } + else if (openair0_cfg->sample_rate==7.68e6) { resampling_factor = 2; + rx_filter = RXLPF25; + tx_filter = TXLPF25; + } else { printf("Sampling rate not supported, using default 7.68MHz"); resampling_factor = 2; + rx_filter = RXLPF25; + tx_filter = TXLPF25; + } #if (BOARD_SWREV_CNTL2>=0x0A) @@ -311,16 +326,12 @@ int openair0_device_init(openair0_device *device, openair0_config_t *openair0_cf p_exmimo_config->framing.resampling_factor = resampling_factor; #endif - if (!openair0_cfg) { - printf("Error, openair0_cfg is null!!\n"); - return(-1); - } for (ant=0;ant<max(openair0_cfg->tx_num_channels,openair0_cfg->rx_num_channels);ant++) p_exmimo_config->rf.rf_mode[ant] = RF_MODE_BASE; for (ant=0;ant<openair0_cfg->tx_num_channels;ant++) - p_exmimo_config->rf.rf_mode[ant] += (TXEN + DMAMODE_TX); + p_exmimo_config->rf.rf_mode[ant] += (TXEN + DMAMODE_TX + TXLPFNORM + TXLPFEN + tx_filter); for (ant=0;ant<openair0_cfg->rx_num_channels;ant++) { - p_exmimo_config->rf.rf_mode[ant] += (RXEN + DMAMODE_RX); + p_exmimo_config->rf.rf_mode[ant] += (RXEN + DMAMODE_RX + RXLPFNORM + RXLPFEN + rx_filter); switch (openair0_cfg->rxg_mode[ant]) { default: case max_gain: diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 130692a56a45d26804c8587b01b63bd5a0706e31..6daa3352fc02c15a7d76a9fe0828e8628f146455 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -304,7 +304,6 @@ static int mbox_bounds[20] = {8,16,24,30,38,46,54,60,68,7 static LTE_DL_FRAME_PARMS *frame_parms; int multi_thread=1; -int N_RB_DL=25; int16_t glog_level=LOG_DEBUG; int16_t glog_verbosity=LOG_MED; @@ -1817,21 +1816,26 @@ static void get_options (int argc, char **argv) { case 'r': switch(atoi(optarg)) { case 6: - N_RB_DL=6; + frame_parms->N_RB_DL=6; + frame_parms->N_RB_UL=6; break; case 25: - N_RB_DL=25; + frame_parms->N_RB_DL=25; + frame_parms->N_RB_UL=25; break; case 50: - N_RB_DL=50; + frame_parms->N_RB_DL=50; + frame_parms->N_RB_UL=50; break; case 100: - N_RB_DL=100; + frame_parms->N_RB_DL=100; + frame_parms->N_RB_UL=100; break; default: printf("Unknown N_RB_DL %d, switching to 25\n",atoi(optarg)); break; } + break; case 's': #ifdef USRP @@ -1877,11 +1881,12 @@ static void get_options (int argc, char **argv) { frame_parms->frame_type = enb_properties->properties[i]->frame_type; frame_parms->tdd_config = enb_properties->properties[i]->tdd_config; frame_parms->tdd_config_S = enb_properties->properties[i]->tdd_config_s; + frame_parms->Ncp = enb_properties->properties[i]->prefix_type; - for (j=0; j < enb_properties->properties[i]->nb_cc; j++ ){ - frame_parms->Nid_cell = enb_properties->properties[i]->cell_id[j]; - frame_parms->N_RB_DL = enb_properties->properties[i]->N_RB_DL[j]; - } // j + //for (j=0; j < enb_properties->properties[i]->nb_cc; j++ ){ + frame_parms->Nid_cell = enb_properties->properties[i]->cell_id[0]; + frame_parms->N_RB_DL = enb_properties->properties[i]->N_RB_DL[0]; + //} // j glog_level = enb_properties->properties[i]->glog_level; glog_verbosity = enb_properties->properties[i]->glog_verbosity; @@ -1956,6 +1961,11 @@ int main(int argc, char **argv) { frame_parms->frame_type = TDD; /* TDD */ frame_parms->tdd_config = 3; frame_parms->tdd_config_S = 0; + frame_parms->N_RB_DL = 25; + frame_parms->N_RB_UL = 25; + frame_parms->Ncp = NORMAL; + frame_parms->Ncp_UL = NORMAL; + frame_parms->Nid_cell = Nid_cell; get_options (argc, argv); //Command-line options @@ -2055,11 +2065,6 @@ int main(int argc, char **argv) { #endif // init the parameters - frame_parms->N_RB_DL = N_RB_DL; - frame_parms->N_RB_UL = N_RB_DL; - frame_parms->Ncp = NORMAL; - frame_parms->Ncp_UL = NORMAL; - frame_parms->Nid_cell = Nid_cell; frame_parms->nushift = 0; if (UE_flag==0) {