Merge remote-tracking branch 'origin/oai_ue_fixes' into develop
Conflicts: openair2/RRC/LTE/rrc_eNB.c
This commit is contained in:
@@ -220,7 +220,7 @@ function main() {
|
|||||||
echo_info "Will compile with UE_EXPANSION"
|
echo_info "Will compile with UE_EXPANSION"
|
||||||
shift;;
|
shift;;
|
||||||
--UE-conf-nvram)
|
--UE-conf-nvram)
|
||||||
conf_nvram_path=$(readlink -f "$1")
|
conf_nvram_path=$(readlink -f $2)
|
||||||
shift 2;;
|
shift 2;;
|
||||||
--UE-gen-nvram)
|
--UE-gen-nvram)
|
||||||
gen_nvram_path=$(readlink -f $2)
|
gen_nvram_path=$(readlink -f $2)
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ if [ "$1" = "eNB" ]; then
|
|||||||
else
|
else
|
||||||
if [ "$1" = "UE" ]; then
|
if [ "$1" = "UE" ]; then
|
||||||
echo "bring up oai0 interface for UE"
|
echo "bring up oai0 interface for UE"
|
||||||
sudo ifconfig oai0 10.0.1.9 netmask 255.255.255.0 broadcast 10.0.1.255
|
sudo ifconfig oai0 10.0.1.2 netmask 255.255.255.0 broadcast 10.0.1.255
|
||||||
$OPENAIR_DIR/targets/bin/rb_tool -a -c0 -i0 -z0 -s 10.0.1.2 -t 10.0.1.1 -r 1
|
$OPENAIR_DIR/targets/bin/rb_tool -a -c0 -i0 -z0 -s 10.0.1.2 -t 10.0.1.1 -r 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
Regular → Executable
@@ -1185,7 +1185,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
|
|||||||
#if DISABLE_LOG_X
|
#if DISABLE_LOG_X
|
||||||
printf("[AbsSFN %d.%d] Slot%d Symbol %d: LLR Computation %5.2f \n",frame,subframe,slot,symbol,ue->generic_stat_bis[ue->current_thread_id[subframe]][slot].p_time/(cpuf*1000.0));
|
printf("[AbsSFN %d.%d] Slot%d Symbol %d: LLR Computation %5.2f \n",frame,subframe,slot,symbol,ue->generic_stat_bis[ue->current_thread_id[subframe]][slot].p_time/(cpuf*1000.0));
|
||||||
#else
|
#else
|
||||||
LOG_I(PHY, "[AbsSFN %d.%d] Slot%d Symbol %d: LLR Computation %5.2f \n",frame,subframe,slot,symbol,ue->generic_stat_bis[ue->current_thread_id[subframe]][slot].p_time/(cpuf*1000.0));
|
LOG_D(PHY, "[AbsSFN %d.%d] Slot%d Symbol %d: LLR Computation %5.2f \n",frame,subframe,slot,symbol,ue->generic_stat_bis[ue->current_thread_id[subframe]][slot].p_time/(cpuf*1000.0));
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
// Please keep it: useful for debugging
|
// Please keep it: useful for debugging
|
||||||
|
|||||||
@@ -204,9 +204,14 @@ void dump_dlsch_SI(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t s
|
|||||||
unsigned int get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb_rb)
|
unsigned int get_tx_amp(int power_dBm, int power_max_dBm, int N_RB_UL, int nb_rb)
|
||||||
{
|
{
|
||||||
|
|
||||||
int gain_dB = power_dBm - power_max_dBm;
|
int gain_dB;
|
||||||
double gain_lin;
|
double gain_lin;
|
||||||
|
|
||||||
|
if (power_dBm<=power_max_dBm)
|
||||||
|
gain_dB = power_dBm - power_max_dBm;
|
||||||
|
else
|
||||||
|
gain_dB = 0;
|
||||||
|
|
||||||
gain_lin = pow(10,.1*gain_dB);
|
gain_lin = pow(10,.1*gain_dB);
|
||||||
AssertFatal((nb_rb >0) && (nb_rb <= N_RB_UL),"Illegal nb_rb/N_RB_UL combination (%d/%d)\n",nb_rb,N_RB_UL);
|
AssertFatal((nb_rb >0) && (nb_rb <= N_RB_UL),"Illegal nb_rb/N_RB_UL combination (%d/%d)\n",nb_rb,N_RB_UL);
|
||||||
return((int)(AMP*sqrt(gain_lin*N_RB_UL/(double)nb_rb)));
|
return((int)(AMP*sqrt(gain_lin*N_RB_UL/(double)nb_rb)));
|
||||||
|
|||||||
+29
-19
@@ -6787,34 +6787,44 @@ rrc_eNB_decode_dcch(
|
|||||||
present ==
|
present ==
|
||||||
RRCConnectionReconfigurationComplete__criticalExtensions_PR_rrcConnectionReconfigurationComplete_r8) {
|
RRCConnectionReconfigurationComplete__criticalExtensions_PR_rrcConnectionReconfigurationComplete_r8) {
|
||||||
/*NN: revise the condition */
|
/*NN: revise the condition */
|
||||||
|
/*FK: left the condition as is for the case MME is used (S1 mode) but setting dedicated_DRB = 1 otherwise (noS1 mode) so that no second RRCReconfiguration message activationg more DRB is sent as this causes problems with the nasmesh driver.*/
|
||||||
|
#if defined(ENABLE_USE_MME)
|
||||||
if (ue_context_p->ue_context.Status == RRC_RECONFIGURED){
|
if (ue_context_p->ue_context.Status == RRC_RECONFIGURED){
|
||||||
dedicated_DRB = 1;
|
dedicated_DRB = 1;
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
|
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
|
||||||
//clear
|
//clear
|
||||||
int16_t UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
|
int16_t UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
|
||||||
if(UE_id == -1){
|
if(UE_id == -1){
|
||||||
LOG_E(RRC,
|
LOG_E(RRC,
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReconfigurationComplete without rnti %x, fault\n",
|
PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReconfigurationComplete without rnti %x, fault\n",
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ctxt_pP->rnti);
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ctxt_pP->rnti);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag == 1){
|
if(RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag == 1){
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld) C-RNTI Complete\n",
|
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld) C-RNTI Complete\n",
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
|
||||||
dedicated_DRB = 2;
|
dedicated_DRB = 2;
|
||||||
RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag = 0;
|
RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag = 0;
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
dedicated_DRB = 0;
|
dedicated_DRB = 0;
|
||||||
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
|
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (default DRB, xid %ld)\n",
|
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (default DRB, xid %ld)\n",
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
|
||||||
}
|
}
|
||||||
ue_context_p->ue_context.reestablishment_xid = -1;
|
ue_context_p->ue_context.reestablishment_xid = -1;
|
||||||
|
#else
|
||||||
|
dedicated_DRB = 1;
|
||||||
|
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
|
||||||
|
LOG_I(RRC,
|
||||||
|
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
|
||||||
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
|
||||||
|
#endif
|
||||||
|
|
||||||
rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
||||||
ctxt_pP,
|
ctxt_pP,
|
||||||
ue_context_p,
|
ue_context_p,
|
||||||
|
|||||||
@@ -1107,41 +1107,7 @@ int main( int argc, char **argv )
|
|||||||
|
|
||||||
pthread_cond_init(&sync_cond,NULL);
|
pthread_cond_init(&sync_cond,NULL);
|
||||||
pthread_mutex_init(&sync_mutex, NULL);
|
pthread_mutex_init(&sync_mutex, NULL);
|
||||||
|
|
||||||
#ifdef XFORMS
|
|
||||||
int UE_id;
|
|
||||||
|
|
||||||
printf("XFORMS\n");
|
|
||||||
|
|
||||||
if (do_forms==1) {
|
|
||||||
fl_initialize (&argc, argv, NULL, 0, 0);
|
|
||||||
|
|
||||||
form_stats = create_form_stats_form();
|
|
||||||
fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats");
|
|
||||||
UE_id = 0;
|
|
||||||
form_ue[UE_id] = create_lte_phy_scope_ue();
|
|
||||||
sprintf (title, "LTE DL SCOPE UE");
|
|
||||||
fl_show_form (form_ue[UE_id]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (openair_daq_vars.use_ia_receiver) {
|
|
||||||
fl_set_button(form_ue[UE_id]->button_0,1);
|
|
||||||
fl_set_object_label(form_ue[UE_id]->button_0, "IA Receiver ON");
|
|
||||||
} else {
|
|
||||||
fl_set_button(form_ue[UE_id]->button_0,0);
|
|
||||||
fl_set_object_label(form_ue[UE_id]->button_0, "IA Receiver OFF");
|
|
||||||
}*/
|
|
||||||
fl_set_button(form_ue[UE_id]->button_0,0);
|
|
||||||
fl_set_object_label(form_ue[UE_id]->button_0, "IA Receiver OFF");
|
|
||||||
ret = pthread_create(&forms_thread, NULL, scope_thread, NULL);
|
|
||||||
|
|
||||||
if (ret == 0)
|
|
||||||
pthread_setname_np( forms_thread, "xforms" );
|
|
||||||
|
|
||||||
printf("Scope thread created, ret=%d\n",ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
rt_sleep_ns(10*100000000ULL);
|
rt_sleep_ns(10*100000000ULL);
|
||||||
|
|
||||||
@@ -1232,6 +1198,41 @@ int main( int argc, char **argv )
|
|||||||
printf("error reading from file\n");
|
printf("error reading from file\n");
|
||||||
}
|
}
|
||||||
//p_exmimo_config->framing.tdd_config = TXRXSWITCH_TESTRX;
|
//p_exmimo_config->framing.tdd_config = TXRXSWITCH_TESTRX;
|
||||||
|
|
||||||
|
#ifdef XFORMS
|
||||||
|
int UE_id;
|
||||||
|
|
||||||
|
printf("XFORMS\n");
|
||||||
|
|
||||||
|
if (do_forms==1) {
|
||||||
|
fl_initialize (&argc, argv, NULL, 0, 0);
|
||||||
|
|
||||||
|
form_stats = create_form_stats_form();
|
||||||
|
fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats");
|
||||||
|
UE_id = 0;
|
||||||
|
form_ue[UE_id] = create_lte_phy_scope_ue();
|
||||||
|
sprintf (title, "LTE DL SCOPE UE");
|
||||||
|
fl_show_form (form_ue[UE_id]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (openair_daq_vars.use_ia_receiver) {
|
||||||
|
fl_set_button(form_ue[UE_id]->button_0,1);
|
||||||
|
fl_set_object_label(form_ue[UE_id]->button_0, "IA Receiver ON");
|
||||||
|
} else {
|
||||||
|
fl_set_button(form_ue[UE_id]->button_0,0);
|
||||||
|
fl_set_object_label(form_ue[UE_id]->button_0, "IA Receiver OFF");
|
||||||
|
}*/
|
||||||
|
fl_set_button(form_ue[UE_id]->button_0,0);
|
||||||
|
fl_set_object_label(form_ue[UE_id]->button_0, "IA Receiver OFF");
|
||||||
|
ret = pthread_create(&forms_thread, NULL, scope_thread, NULL);
|
||||||
|
|
||||||
|
if (ret == 0)
|
||||||
|
pthread_setname_np( forms_thread, "xforms" );
|
||||||
|
|
||||||
|
printf("Scope thread created, ret=%d\n",ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
printf("Sending sync to all threads\n");
|
printf("Sending sync to all threads\n");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user