diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index c3e29a7d434fdaf5c84a9e5fa2e254ed7bcf79e4..7723d32e1bae12f1b3926c26de3bc608cde426a6 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -2002,6 +2002,7 @@ static void get_options (int argc, char **argv) break; case 'r': + UE_scan = 0; for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { switch(atoi(optarg)) { case 6: @@ -2251,11 +2252,11 @@ int main( int argc, char **argv ) for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { frame_parms[CC_id] = (LTE_DL_FRAME_PARMS*) malloc(sizeof(LTE_DL_FRAME_PARMS)); /* Set some default values that may be overwritten while reading options */ - frame_parms[CC_id]->frame_type = TDD; /* TDD */ + frame_parms[CC_id]->frame_type = FDD; /* TDD */ frame_parms[CC_id]->tdd_config = 3; frame_parms[CC_id]->tdd_config_S = 0; - frame_parms[CC_id]->N_RB_DL = 25; - frame_parms[CC_id]->N_RB_UL = 25; + frame_parms[CC_id]->N_RB_DL = 100; + frame_parms[CC_id]->N_RB_UL = 100; frame_parms[CC_id]->Ncp = NORMAL; frame_parms[CC_id]->Ncp_UL = NORMAL; frame_parms[CC_id]->Nid_cell = Nid_cell; @@ -2272,6 +2273,14 @@ int main( int argc, char **argv ) set_taus_seed (0); + for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { + downlink_frequency[CC_id][0] = 2680000000; // Use float to avoid issue with frequency over 2^31. + downlink_frequency[CC_id][1] = downlink_frequency[CC_id][0]; + downlink_frequency[CC_id][2] = downlink_frequency[CC_id][0]; + downlink_frequency[CC_id][3] = downlink_frequency[CC_id][0]; + printf("Downlink for CC_id %d frequency set to %u\n", CC_id, downlink_frequency[CC_id][0]); + } + get_options (argc, argv); //Command-line options set_glog(glog_level, glog_verbosity); @@ -2736,10 +2745,6 @@ int main( int argc, char **argv ) 0,// cba_group_active 0); // HO flag - if (UE_flag == 1) - mac_xface->dl_phy_sync_success (0, 0, 0, 1); - else - mac_xface->mrbch_phy_sync_failure (0, 0, 0); #endif @@ -2756,11 +2761,15 @@ int main( int argc, char **argv ) #endif #ifdef OPENAIR2 + printf("Filling UE band info\n"); - if (UE_flag==1) + if (UE_flag==1) { fill_ue_band_info(); - + mac_xface->dl_phy_sync_success (0, 0, 0, 1); + } + else + mac_xface->mrbch_phy_sync_failure (0, 0, 0); #endif /* #ifdef OPENAIR2 diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c index 347452ff8c60b1dc9cd66450e84a319ce7388c2c..f631582e2fff8ad05fb1044668a84fbd5acf1050 100644 --- a/targets/RT/USER/lte-ue.c +++ b/targets/RT/USER/lte-ue.c @@ -233,29 +233,32 @@ static void *UE_thread_synch(void *arg) found = 0; current_band = eutra_bands[ind].band; - do { - printf("Scanning band %d, dl_min %u\n",current_band,eutra_bands[ind].dl_min); - if ((eutra_bands[ind].dl_min <= downlink_frequency[0][0]) && (eutra_bands[ind].dl_max>= downlink_frequency[0][0])) { - for (card=0; card<MAX_NUM_CCs; card++) - for (i=0; i<4; i++) - uplink_frequency_offset[card][i] = eutra_bands[ind].ul_min - eutra_bands[ind].dl_min; + if (UE->UE_scan == 0) { + do { + printf("Scanning band %d, dl_min %u\n",current_band,eutra_bands[ind].dl_min); - found = 1; - break; - } + if ((eutra_bands[ind].dl_min <= downlink_frequency[0][0]) && (eutra_bands[ind].dl_max>= downlink_frequency[0][0])) { + for (card=0; card<MAX_NUM_CCs; card++) + for (i=0; i<4; i++) + uplink_frequency_offset[card][i] = eutra_bands[ind].ul_min - eutra_bands[ind].dl_min; - ind++; - current_band = eutra_bands[ind].band; - } while (current_band < 44); + found = 1; + break; + } - if (found == 0) { - exit_fun("Can't find EUTRA band for frequency"); - oai_exit=1; - } + ind++; + current_band = eutra_bands[ind].band; + } while (current_band < 44); + if (found == 0) { + exit_fun("Can't find EUTRA band for frequency"); + oai_exit=1; + } + } - if (UE->UE_scan == 1) { + else if (UE->UE_scan == 1) { + current_band=0; for (card=0; card<MAX_CARDS; card++) { for (i=0; i<openair0_cfg[card].rx_num_channels; i++) { downlink_frequency[card][i] = bands_to_scan.band_info[0].dl_min; @@ -299,7 +302,7 @@ static void *UE_thread_synch(void *arg) openair0_set_gains(&openair0,&openair0_cfg[0]); #endif #endif - LOG_D(PHY,"[SCHED][UE] Scanning band %d, freq %u\n",bands_to_scan.band_info[0].band, bands_to_scan.band_info[0].dl_min); + } else { LOG_D(PHY,"[SCHED][UE] Check absolute frequency %u (oai_exit %d)\n",downlink_frequency[0][0],oai_exit); @@ -329,6 +332,8 @@ static void *UE_thread_synch(void *arg) switch (sync_mode) { case pss: + LOG_I(PHY,"[SCHED][UE] Scanning band %d (%d), freq %u\n",bands_to_scan.band_info[current_band].band, current_band,bands_to_scan.band_info[current_band].dl_min+current_offset); + lte_sync_timefreq(UE,current_band,bands_to_scan.band_info[current_band].dl_min+current_offset); current_offset += 20000000; // increase by 20 MHz @@ -375,7 +380,7 @@ static void *UE_thread_synch(void *arg) printf("UE synch: setting RX gain (%d,%d) to %f\n",card,i,openair0_cfg[card].rx_gain[i]); #endif - } + } #ifdef EXMIMO //openair0_config(&openair0_cfg[card],1); @@ -388,6 +393,7 @@ static void *UE_thread_synch(void *arg) // openair0_set_gains(&openair0,&openair0_cfg[0]); #endif #endif + break; case pbch: @@ -499,7 +505,6 @@ static void *UE_thread_synch(void *arg) default: break; } - VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH,0); if (pthread_mutex_lock(&UE->mutex_synch) != 0) { @@ -1012,7 +1017,7 @@ void *UE_thread(void *arg) UE->PHY_measurements.rx_power_avg_dB[0] - rx_input_level_dBm, UE->rx_total_gain_dB, openair0_cfg[0].rx_gain[0] - ); + ); exit_fun("[HW][UE] UE in RX calibration mode, exiting"); } } @@ -1378,7 +1383,7 @@ void *UE_thread(void *arg) UE->PHY_measurements.rx_power_avg_dB[0] - rx_input_level_dBm, UE->rx_total_gain_dB, openair0_cfg[0].rx_gain[0] - ); + ); exit_fun("[HW][UE] UE in RX calibration mode, exiting"); } } @@ -1414,8 +1419,8 @@ void *UE_thread(void *arg) } /* - if ((slot%2000)<10) - LOG_D(HW,"fun0: doing very hard work\n"); + if ((slot%2000)<10) + LOG_D(HW,"fun0: doing very hard work\n"); */ // now increment slot and frame counters slot++;