Commit 75418f50 authored by alexandr's avatar alexandr

bug-fixed: DL traffic for OTG-physcope for multiple eNBs

parent 39322db7
...@@ -625,6 +625,9 @@ void rrc_eNB_emulation_notify_ue_module_id( ...@@ -625,6 +625,9 @@ void rrc_eNB_emulation_notify_ue_module_id(
// find enb_module_id // find enb_module_id
for (enb_module_id = 0; enb_module_id < NUMBER_OF_eNB_MAX; enb_module_id++) { for (enb_module_id = 0; enb_module_id < NUMBER_OF_eNB_MAX; enb_module_id++) {
if(enb_module_id>1){ /*FIX LATER*/
return;
}
for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) { for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
if (eNB_rrc_inst[enb_module_id].carrier[CC_id].sib1 != NULL) { if (eNB_rrc_inst[enb_module_id].carrier[CC_id].sib1 != NULL) {
if ( if (
...@@ -633,7 +636,7 @@ void rrc_eNB_emulation_notify_ue_module_id( ...@@ -633,7 +636,7 @@ void rrc_eNB_emulation_notify_ue_module_id(
(eNB_rrc_inst[enb_module_id].carrier[CC_id].sib1->cellAccessRelatedInfo.cellIdentity.buf[2] == cell_identity_byte2P) && (eNB_rrc_inst[enb_module_id].carrier[CC_id].sib1->cellAccessRelatedInfo.cellIdentity.buf[2] == cell_identity_byte2P) &&
(eNB_rrc_inst[enb_module_id].carrier[CC_id].sib1->cellAccessRelatedInfo.cellIdentity.buf[3] == cell_identity_byte3P) (eNB_rrc_inst[enb_module_id].carrier[CC_id].sib1->cellAccessRelatedInfo.cellIdentity.buf[3] == cell_identity_byte3P)
) { ) {
oai_emulation.info.eNB_ue_module_id_to_rnti[enb_module_id][ue_module_idP] = rntiP; //oai_emulation.info.eNB_ue_module_id_to_rnti[enb_module_id][ue_module_idP] = rntiP;
ue_context_p = rrc_eNB_get_ue_context( ue_context_p = rrc_eNB_get_ue_context(
&eNB_rrc_inst[enb_module_id], &eNB_rrc_inst[enb_module_id],
rntiP rntiP
...@@ -643,10 +646,11 @@ void rrc_eNB_emulation_notify_ue_module_id( ...@@ -643,10 +646,11 @@ void rrc_eNB_emulation_notify_ue_module_id(
oai_emulation.info.eNB_ue_local_uid_to_ue_module_id[enb_module_id][ue_context_p->local_uid] = ue_module_idP; oai_emulation.info.eNB_ue_local_uid_to_ue_module_id[enb_module_id][ue_context_p->local_uid] = ue_module_idP;
} }
return; //return;
} }
} }
} }
oai_emulation.info.eNB_ue_module_id_to_rnti[enb_module_id][ue_module_idP] = rntiP;
} }
AssertFatal(enb_module_id == NUMBER_OF_eNB_MAX, AssertFatal(enb_module_id == NUMBER_OF_eNB_MAX,
......
...@@ -270,9 +270,10 @@ unsigned char *packet_gen( ...@@ -270,9 +270,10 @@ unsigned char *packet_gen(
char *header=NULL; char *header=NULL;
int header_size = 0; int header_size = 0;
//LOG_I(OTG,"Src: %d - Dest: %d - before exit\n",src_instance,dst_instance);
// check if the app is configured // check if the app is configured
if (app >= g_otg->application_idx[src_instance][dst_instance]) { if (app >= g_otg->application_idx[src_instance][dst_instance]) {
//LOG_I(OTG,"Src: %d - Dest: %d - no packet to generate - no application\n",src_instance,dst_instance);
return NULL; return NULL;
} }
......
...@@ -54,12 +54,13 @@ ...@@ -54,12 +54,13 @@
</MOBILITY> </MOBILITY>
</TOPOLOGY_CONFIG> </TOPOLOGY_CONFIG>
<!-- UL -->
<APPLICATION_CONFIG> <APPLICATION_CONFIG>
<CUSTOMIZED_TRAFFIC> <CUSTOMIZED_TRAFFIC>
<SOURCE_ID>2</SOURCE_ID> <SOURCE_ID>2</SOURCE_ID>
<TRANSPORT_PROTOCOL>udp</TRANSPORT_PROTOCOL> <TRANSPORT_PROTOCOL>udp</TRANSPORT_PROTOCOL>
<FLOW_START_ms>1600</FLOW_START_ms> <FLOW_START_ms>240</FLOW_START_ms>
<FLOW_DURATION_ms>3000</FLOW_DURATION_ms> <FLOW_DURATION_ms>1000</FLOW_DURATION_ms>
<IP_VERSION>ipv4</IP_VERSION> <IP_VERSION>ipv4</IP_VERSION>
<DESTINATION_ID>0</DESTINATION_ID> <DESTINATION_ID>0</DESTINATION_ID>
<IDT_DIST>uniform</IDT_DIST> <IDT_DIST>uniform</IDT_DIST>
...@@ -69,10 +70,67 @@ ...@@ -69,10 +70,67 @@
<SIZE_MIN_byte>850</SIZE_MIN_byte> <SIZE_MIN_byte>850</SIZE_MIN_byte>
<SIZE_MAX_byte>1408</SIZE_MAX_byte> <SIZE_MAX_byte>1408</SIZE_MAX_byte>
</CUSTOMIZED_TRAFFIC> </CUSTOMIZED_TRAFFIC>
<CUSTOMIZED_TRAFFIC>
<SOURCE_ID>2</SOURCE_ID>
<TRANSPORT_PROTOCOL>udp</TRANSPORT_PROTOCOL>
<FLOW_START_ms>1600</FLOW_START_ms>
<FLOW_DURATION_ms>900</FLOW_DURATION_ms>
<IP_VERSION>ipv4</IP_VERSION>
<DESTINATION_ID>1</DESTINATION_ID>
<IDT_DIST>uniform</IDT_DIST>
<IDT_MIN_ms>10</IDT_MIN_ms>
<IDT_MAX_ms>50</IDT_MAX_ms>
<SIZE_DIST>uniform</SIZE_DIST>
<SIZE_MIN_byte>850</SIZE_MIN_byte>
<SIZE_MAX_byte>1408</SIZE_MAX_byte>
</CUSTOMIZED_TRAFFIC>
<!--</APPLICATION_CONFIG> -->
<!-- DL -->
<!--<APPLICATION_CONFIG> -->
<CUSTOMIZED_TRAFFIC>
<SOURCE_ID>0</SOURCE_ID>
<TRANSPORT_PROTOCOL>udp</TRANSPORT_PROTOCOL>
<FLOW_START_ms>240</FLOW_START_ms>
<FLOW_DURATION_ms>1000</FLOW_DURATION_ms>
<IP_VERSION>ipv4</IP_VERSION>
<DESTINATION_ID>2</DESTINATION_ID>
<IDT_DIST>uniform</IDT_DIST>
<IDT_MIN_ms>10</IDT_MIN_ms>
<IDT_MAX_ms>50</IDT_MAX_ms>
<SIZE_DIST>uniform</SIZE_DIST>
<SIZE_MIN_byte>850</SIZE_MIN_byte>
<SIZE_MAX_byte>1408</SIZE_MAX_byte>
</CUSTOMIZED_TRAFFIC>
<CUSTOMIZED_TRAFFIC>
<SOURCE_ID>1</SOURCE_ID>
<TRANSPORT_PROTOCOL>udp</TRANSPORT_PROTOCOL>
<FLOW_START_ms>1600</FLOW_START_ms>
<FLOW_DURATION_ms>900</FLOW_DURATION_ms>
<IP_VERSION>ipv4</IP_VERSION>
<DESTINATION_ID>2</DESTINATION_ID>
<IDT_DIST>uniform</IDT_DIST>
<IDT_MIN_ms>10</IDT_MIN_ms>
<IDT_MAX_ms>50</IDT_MAX_ms>
<SIZE_DIST>uniform</SIZE_DIST>
<SIZE_MIN_byte>850</SIZE_MIN_byte>
<SIZE_MAX_byte>1408</SIZE_MAX_byte>
</CUSTOMIZED_TRAFFIC>
<!--<PREDEFINED_TRAFFIC>
<SOURCE_ID>1</SOURCE_ID>
<FLOW_START_ms>200</FLOW_START_ms>
<FLOW_DURATION_ms>600</FLOW_DURATION_ms>
<APPLICATION_TYPE>scbr</APPLICATION_TYPE>
<DESTINATION_ID>0</DESTINATION_ID>
</PREDEFINED_TRAFFIC>-->
</APPLICATION_CONFIG> </APPLICATION_CONFIG>
<EMULATION_CONFIG> <EMULATION_CONFIG>
<EMULATION_TIME_ms>3000</EMULATION_TIME_ms> <EMULATION_TIME_ms>2500</EMULATION_TIME_ms>
<CURVE>disable</CURVE> <!-- option: enabled, disabled. If CURVE is enabled, graphes <CURVE>disable</CURVE> <!-- option: enabled, disabled. If CURVE is enabled, graphes
are ploted in real time (UL and DL) of WOD and throughput measurement for each packet --> are ploted in real time (UL and DL) of WOD and throughput measurement for each packet -->
...@@ -92,7 +150,7 @@ enable owd curve shows the one way radio access delay, else it shows end to end ...@@ -92,7 +150,7 @@ enable owd curve shows the one way radio access delay, else it shows end to end
<VERBOSITY>high</VERBOSITY> <!-- low, medium, high, full --> <VERBOSITY>high</VERBOSITY> <!-- low, medium, high, full -->
<INTERVAL>1</INTERVAL> <INTERVAL>1</INTERVAL>
</LOG> </LOG>
<SEED_VALUE>1234</SEED_VALUE> <!-- value 0 means randomly generated by OAI --> <SEED_VALUE>1235</SEED_VALUE> <!-- value 0 means randomly generated by OAI -->
</EMULATION_CONFIG> </EMULATION_CONFIG>
......
...@@ -453,7 +453,7 @@ l2l1_task (void *args_p) ...@@ -453,7 +453,7 @@ l2l1_task (void *args_p)
// current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0) // current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
// at eNB 0, an UL scope for every UE // at eNB 0, an UL scope for every UE
FD_lte_phy_scope_ue *form_ue[NUMBER_OF_UE_MAX]; FD_lte_phy_scope_ue *form_ue[NUMBER_OF_UE_MAX];
FD_lte_phy_scope_enb *form_enb[NUMBER_OF_UE_MAX]; FD_lte_phy_scope_enb *form_enb[NUMBER_OF_eNB_MAX];
char title[255]; char title[255];
char xname[32] = "oaisim"; char xname[32] = "oaisim";
int xargc = 1; int xargc = 1;
...@@ -491,27 +491,26 @@ l2l1_task (void *args_p) ...@@ -491,27 +491,26 @@ l2l1_task (void *args_p)
#ifdef XFORMS #ifdef XFORMS
xargv[0] = xname; xargv[0] = xname;
fl_initialize (&xargc, xargv, NULL, 0, 0); fl_initialize (&xargc, xargv, NULL, 0, 0);
eNB_inst = 0; for (eNB_inst = 0; eNB_inst < NB_eNB_INST; eNB_inst++){
for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++){
for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) {
// DL scope at UEs // DL scope at UEs
if (eNB_inst == 0){
form_ue[UE_inst] = create_lte_phy_scope_ue(); form_ue[UE_inst] = create_lte_phy_scope_ue();
sprintf (title, "LTE DL SCOPE eNB %d to UE %d", eNB_inst, UE_inst); sprintf (title, "LTE DL SCOPE eNB %d to UE %d", eNB_inst, UE_inst);
fl_show_form (form_ue[UE_inst]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); fl_show_form (form_ue[UE_inst]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
}
// UL scope at eNB 0 // UL scope at eNB 0
form_enb[UE_inst] = create_lte_phy_scope_enb(); form_enb[eNB_inst] = create_lte_phy_scope_enb();
sprintf (title, "LTE UL SCOPE UE %d to eNB %d", UE_inst, eNB_inst); sprintf (title, "LTE UL SCOPE UE %d to eNB %d", UE_inst, eNB_inst);
fl_show_form (form_enb[UE_inst]->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); fl_show_form (form_enb[eNB_inst]->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
if (openair_daq_vars.use_ia_receiver == 1) { if (openair_daq_vars.use_ia_receiver == 1) {
fl_set_button(form_ue[UE_inst]->button_0,1); fl_set_button(form_ue[UE_inst]->button_0,1);
fl_set_object_label(form_ue[UE_inst]->button_0, "IA Receiver ON"); fl_set_object_label(form_ue[UE_inst]->button_0, "IA Receiver ON");
fl_set_object_color(form_ue[UE_inst]->button_0, FL_GREEN, FL_GREEN); fl_set_object_color(form_ue[UE_inst]->button_0, FL_GREEN, FL_GREEN);
} }
} }
}
#endif #endif
#ifdef PRINT_STATS #ifdef PRINT_STATS
...@@ -1186,21 +1185,20 @@ l2l1_task (void *args_p) ...@@ -1186,21 +1185,20 @@ l2l1_task (void *args_p)
} }
#ifdef XFORMS #ifdef XFORMS
eNB_inst = 0; for (eNB_inst = 0; eNB_inst< NB_eNB_INST; eNB_inst++){
for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) { for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) {
if(eNB_inst == 0){
phy_scope_UE(form_ue[UE_inst], phy_scope_UE(form_ue[UE_inst],
PHY_vars_UE_g[UE_inst][0], PHY_vars_UE_g[UE_inst][0],
eNB_inst, eNB_inst,
UE_inst, UE_inst,
7); 7);
}
phy_scope_eNB(form_enb[UE_inst], phy_scope_eNB(form_enb[eNB_inst],
PHY_vars_eNB_g[eNB_inst][0], PHY_vars_eNB_g[eNB_inst][0],
UE_inst); UE_inst);
} }
}
#endif #endif
#ifdef SMBV #ifdef SMBV
......
...@@ -1333,7 +1333,6 @@ void update_otg_eNB(module_id_t enb_module_idP, unsigned int ctime) ...@@ -1333,7 +1333,6 @@ void update_otg_eNB(module_id_t enb_module_idP, unsigned int ctime)
for (dst_id = 0; dst_id < NUMBER_OF_UE_MAX; dst_id++) { for (dst_id = 0; dst_id < NUMBER_OF_UE_MAX; dst_id++) {
for_times += 1; for_times += 1;
// generate traffic if the ue is rrc reconfigured state // generate traffic if the ue is rrc reconfigured state
//if ((rrc_state=mac_eNB_get_rrc_status(enb_module_idP, dst_id)) > 2 /*RRC_CONNECTED*/ ) { //if ((rrc_state=mac_eNB_get_rrc_status(enb_module_idP, dst_id)) > 2 /*RRC_CONNECTED*/ ) {
if (mac_eNB_get_rrc_status(enb_module_idP, oai_emulation.info.eNB_ue_module_id_to_rnti[enb_module_idP][dst_id]) > 2 ){ if (mac_eNB_get_rrc_status(enb_module_idP, oai_emulation.info.eNB_ue_module_id_to_rnti[enb_module_idP][dst_id]) > 2 ){
......
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