Commit a5bbc21e authored by Anta Huang's avatar Anta Huang

bug fix: measurement list size

parent a315f995
...@@ -523,7 +523,8 @@ rrc_mac_config_req( ...@@ -523,7 +523,8 @@ rrc_mac_config_req(
} }
// Assign the new c-rnti in the UE context (during HO) // Assign the new c-rnti in the UE context (during HO)
void rrc_mac_get_new_crnti(protocol_ctxt_t* ctxt_pP,uint8_t eNB_index){ void rrc_mac_get_new_crnti(protocol_ctxt_t* ctxt_pP,uint8_t eNB_index){
PROTOCOL_CTXT_SET_BY_MODULE_ID(ctxt_pP, ctxt_pP->module_id, ENB_FLAG_NO,UE_mac_inst[ctxt_pP->module_id].crnti, ctxt_pP->frame, 0, eNB_index); PROTOCOL_CTXT_SET_BY_MODULE_ID(ctxt_pP, ctxt_pP->module_id, ENB_FLAG_NO,UE_mac_inst[ctxt_pP->module_id].crnti, ctxt_pP->frame, ctxt_pP->subframe, eNB_index);
LOG_D(RRC,"Context-debug: %d/%d\n",ctxt_pP->frame,ctxt_pP->subframe);
} }
#ifdef LOCALIZATION #ifdef LOCALIZATION
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
......
...@@ -1961,6 +1961,7 @@ rrc_ue_decode_dcch( ...@@ -1961,6 +1961,7 @@ rrc_ue_decode_dcch(
} }
} }
rrc_ue_process_rrcConnectionReconfiguration( rrc_ue_process_rrcConnectionReconfiguration(
ctxt_pP, ctxt_pP,
&dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration, &dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration,
...@@ -1973,7 +1974,7 @@ rrc_ue_decode_dcch( ...@@ -1973,7 +1974,7 @@ rrc_ue_decode_dcch(
//double t_x2_src_enb = (double)UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb.p_time/get_cpu_freq_GHz()/1000.0; //double t_x2_src_enb = (double)UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb.p_time/get_cpu_freq_GHz()/1000.0;
double t_x2_src_enb = (double)ctxt_pP->frame*10+ctxt_pP->subframe - UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb_ms; double t_x2_src_enb = (double)ctxt_pP->frame*10+ctxt_pP->subframe - UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb_ms;
push_front(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb_list, t_x2_src_enb); push_front(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb_list, t_x2_src_enb);
LOG_D(RRC,"Stop-Time-debug: %d/%lf/%d/%d\n", ctxt_pP->frame*10+ctxt_pP->subframe, (double) UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb_ms,ctxt_pP->frame,ctxt_pP->subframe);
// Start to measure (delay to the UE-->target) // Start to measure (delay to the UE-->target)
//start_meas(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb); //start_meas(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb);
UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb_ms = ctxt_pP->frame*10+ctxt_pP->subframe ; UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb_ms = ctxt_pP->frame*10+ctxt_pP->subframe ;
...@@ -3702,6 +3703,7 @@ void ue_measurement_report_triggering( const protocol_ctxt_t* const ctxt_pP, con ...@@ -3702,6 +3703,7 @@ void ue_measurement_report_triggering( const protocol_ctxt_t* const ctxt_pP, con
// Start to measure (delay to the UE-->source) // Start to measure (delay to the UE-->source)
//start_meas(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb); //start_meas(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb);
UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb_ms = ctxt_pP->frame*10+ctxt_pP->subframe; UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb_ms = ctxt_pP->frame*10+ctxt_pP->subframe;
LOG_D(RRC,"Start-Time-debug: %lf/%d/%d\n", (double) UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_src_enb_ms,ctxt_pP->frame,ctxt_pP->subframe);
} }
rrc_ue_generate_MeasurementReport( rrc_ue_generate_MeasurementReport(
ctxt_pP, ctxt_pP,
......
...@@ -278,6 +278,11 @@ openair_rrc_top_init( ...@@ -278,6 +278,11 @@ openair_rrc_top_init(
} }
#endif #endif
for (module_id=0; module_id<NB_UE_INST; module_id++) {
initialize(&UE_rrc_inst[module_id].rrc_ue_x2_src_enb_list);
initialize(&UE_rrc_inst[module_id].rrc_ue_x2_target_enb_list);
}
} else { } else {
UE_rrc_inst = NULL; UE_rrc_inst = NULL;
} }
...@@ -351,13 +356,7 @@ rrc_top_cleanup( ...@@ -351,13 +356,7 @@ rrc_top_cleanup(
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
{ {
if (NB_UE_INST > 0) { // Create a function later
free (UE_rrc_inst);
}
if (NB_eNB_INST > 0) {
free (eNB_rrc_inst);
}
uint8_t module_id=0; uint8_t module_id=0;
uint8_t i=0; uint8_t i=0;
double x2_src_avg; double x2_src_avg;
...@@ -374,7 +373,7 @@ rrc_top_cleanup( ...@@ -374,7 +373,7 @@ rrc_top_cleanup(
double x2_target_min=0.0; double x2_target_min=0.0;
double x2_target_max=0.0; double x2_target_max=0.0;
LOG_I(RRC,"size src %d and size dst %d\n", UE_rrc_inst[module_id].rrc_ue_x2_src_enb_list.size, UE_rrc_inst[module_id].rrc_ue_x2_target_enb_list.size);
LOG_I(RRC,"[SRC]median;q1;q3;min;max;avg;\n"); LOG_I(RRC,"[SRC]median;q1;q3;min;max;avg;\n");
for (module_id = 0; module_id < NB_UE_INST; module_id++) { for (module_id = 0; module_id < NB_UE_INST; module_id++) {
x2_src_avg=0.0; x2_src_avg=0.0;
...@@ -390,12 +389,13 @@ rrc_top_cleanup( ...@@ -390,12 +389,13 @@ rrc_top_cleanup(
for (i=0;i<UE_rrc_inst[module_id].rrc_ue_x2_src_enb_list.size;i++){ for (i=0;i<UE_rrc_inst[module_id].rrc_ue_x2_src_enb_list.size;i++){
x2_src_avg+=x2_src_table[i]; x2_src_avg+=x2_src_table[i];
LOG_I(RRC,"[SRC]%lf\n",x2_src_table[i]);
} }
x2_src_avg/=UE_rrc_inst[module_id].rrc_ue_x2_src_enb_list.size; x2_src_avg/=UE_rrc_inst[module_id].rrc_ue_x2_src_enb_list.size;
LOG_I(RRC,"[SRC]%lf;%lf;%lf;%lf;%lf;%lf\n",x2_src_median,x2_src_q1,x2_src_q3,x2_src_min,x2_src_max,x2_src_avg); LOG_I(RRC,"[SRC]%lf;%lf;%lf;%lf;%lf;%lf\n",x2_src_median,x2_src_q1,x2_src_q3,x2_src_min,x2_src_max,x2_src_avg);
} }
LOG_I(RRC,"[DST]median;q1;q3;min;max;\n"); LOG_I(RRC,"[DST]median;q1;q3;min;max;avg;\n");
for (module_id = 0; module_id < NB_UE_INST; module_id++) { for (module_id = 0; module_id < NB_UE_INST; module_id++) {
x2_target_avg=0.0; x2_target_avg=0.0;
double x2_target_table[UE_rrc_inst[module_id].rrc_ue_x2_target_enb_list.size]; double x2_target_table[UE_rrc_inst[module_id].rrc_ue_x2_target_enb_list.size];
...@@ -415,7 +415,7 @@ rrc_top_cleanup( ...@@ -415,7 +415,7 @@ rrc_top_cleanup(
LOG_I(RRC,"[DST]%lf;%lf;%lf;%lf;%lf;%lf\n",x2_target_median,x2_target_q1,x2_target_q3,x2_target_min,x2_target_max,x2_target_avg); LOG_I(RRC,"[DST]%lf;%lf;%lf;%lf;%lf;%lf\n",x2_target_median,x2_target_q1,x2_target_q3,x2_target_min,x2_target_max,x2_target_avg);
} }
LOG_I(RRC,"[X2]median;q1;q3;min;max;\n"); /*LOG_I(RRC,"[X2]median;q1;q3;min;max;\n");
for (module_id = 0; module_id < NB_eNB_INST; module_id++) { for (module_id = 0; module_id < NB_eNB_INST; module_id++) {
double x2_table[eNB_rrc_inst[module_id].rrc_enb_x2_list.size]; double x2_table[eNB_rrc_inst[module_id].rrc_enb_x2_list.size];
totable(x2_table, &eNB_rrc_inst[module_id].rrc_enb_x2_list); totable(x2_table, &eNB_rrc_inst[module_id].rrc_enb_x2_list);
...@@ -427,6 +427,14 @@ rrc_top_cleanup( ...@@ -427,6 +427,14 @@ rrc_top_cleanup(
double x2_min = x2_table[0]; // MIN double x2_min = x2_table[0]; // MIN
double x2_max = x2_table[eNB_rrc_inst[module_id].rrc_enb_x2_list.size-1]; // mAX double x2_max = x2_table[eNB_rrc_inst[module_id].rrc_enb_x2_list.size-1]; // mAX
LOG_I(RRC,"[X2]%lf;%lf;%lf;%d;%d;\n",x2_median,x2_q1,x2_q3,x2_min,x2_max); LOG_I(RRC,"[X2]%lf;%lf;%lf;%d;%d;\n",x2_median,x2_q1,x2_q3,x2_min,x2_max);
}*/
if (NB_UE_INST > 0) {
free (UE_rrc_inst);
}
if (NB_eNB_INST > 0) {
free (eNB_rrc_inst);
} }
} }
......
...@@ -4302,8 +4302,8 @@ rrc_eNB_decode_dcch( ...@@ -4302,8 +4302,8 @@ rrc_eNB_decode_dcch(
// Stop to measure (delay to the UE-->target) // Stop to measure (delay to the UE-->target)
//stop_meas(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb); //stop_meas(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb);
//double t_x2_target_enb = (double)UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb.p_time/get_cpu_freq_GHz()/1000.0; //double t_x2_target_enb = (double)UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb.p_time/get_cpu_freq_GHz()/1000.0;
double t_x2_target_enb = (double)ctxt_pP->frame*10+ctxt_pP->subframe - UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb_ms; double t_x2_target_enb = (double)ctxt_pP->frame*10+ctxt_pP->subframe - UE_rrc_inst[0].rrc_ue_x2_target_enb_ms;
push_front(&UE_rrc_inst[ctxt_pP->module_id].rrc_ue_x2_target_enb_list, t_x2_target_enb); push_front(&UE_rrc_inst[0].rrc_ue_x2_target_enb_list, t_x2_target_enb);
} }
ue_context_p->ue_context.Status = RRC_RECONFIGURED; ue_context_p->ue_context.Status = RRC_RECONFIGURED;
LOG_I(RRC, LOG_I(RRC,
...@@ -4727,13 +4727,13 @@ rrc_enb_task( ...@@ -4727,13 +4727,13 @@ rrc_enb_task(
# endif # endif
case X2AP_HANDOVER_REQ: case X2AP_HANDOVER_REQ:
LOG_I(RRC, "[eNB %d] Received %s\n", instance, msg_name_p); LOG_I(RRC, "[eNB %d] X2-Received %s\n", instance, msg_name_p);
rrc_eNB_process_handoverPreparationInformation(instance, &X2AP_HANDOVER_REQ(msg_p)); rrc_eNB_process_handoverPreparationInformation(instance, &X2AP_HANDOVER_REQ(msg_p));
break; break;
case X2AP_HANDOVER_RESP: { case X2AP_HANDOVER_RESP: {
struct rrc_eNB_ue_context_s *ue_context_p = rrc_eNB_get_ue_context(&eNB_rrc_inst[instance], X2AP_HANDOVER_RESP(msg_p).source_rnti); struct rrc_eNB_ue_context_s *ue_context_p = rrc_eNB_get_ue_context(&eNB_rrc_inst[instance], X2AP_HANDOVER_RESP(msg_p).source_rnti);
LOG_I(RRC, "[eNB %d] Received %s\n", instance, msg_name_p); LOG_I(RRC, "[eNB %d] X2-Received %s\n", instance, msg_name_p);
DevAssert(ue_context_p != NULL); DevAssert(ue_context_p != NULL);
if (ue_context_p->ue_context.handover_info->state != HO_REQUEST) abort(); if (ue_context_p->ue_context.handover_info->state != HO_REQUEST) abort();
ue_context_p->ue_context.handover_info->state = HO_PREPARE; ue_context_p->ue_context.handover_info->state = HO_PREPARE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment