From 03c04bdc0d9df72a2bcf842fd579350d5245374b Mon Sep 17 00:00:00 2001 From: Michele Paffetti <michele.paffetti@eurecom.fr> Date: Thu, 8 Jun 2017 09:40:22 +0200 Subject: [PATCH] start FAPI approach in NB_rrc_mac_config_eNB. Code not compile. Push for merge purpose --- openair2/RRC/LITE/L2_interface_nb_iot.c | 145 +++++++++++++++++++----- openair2/RRC/LITE/rrc_eNB_nb_iot.c | 2 +- 2 files changed, 118 insertions(+), 29 deletions(-) diff --git a/openair2/RRC/LITE/L2_interface_nb_iot.c b/openair2/RRC/LITE/L2_interface_nb_iot.c index 6e6cdeb481..b3beaaec4c 100644 --- a/openair2/RRC/LITE/L2_interface_nb_iot.c +++ b/openair2/RRC/LITE/L2_interface_nb_iot.c @@ -48,6 +48,7 @@ #include "osa_defs.h" #include "pdcp_sequence_manager.h" #include "UTIL/OTG/otg_rx.h" +#include "openair2/PHY_INTERFACE/IF_Module_nb_iot.h" #ifdef PHY_EMUL #include "SIMULATION/simulation_defs.h" @@ -114,9 +115,9 @@ extern void rlc_am_init_timer_poll_retransmit( int NB_rrc_mac_config_req_eNB( module_id_t Mod_idP, int CC_idP, - int rntiP, //FIXME: Raymond bug? + int rntiP, //FIXME: Raymond bug int physCellId, - int p_eNB, + int p_eNB, //number of eNB TX antenna ports int Ncp, long eutra_band,//FIXME: frequencyBandIndicator in sib1 (is a long not an int!!) struct NS_PmaxList_NB_r13 *frequencyBandInfo, //optional SIB1 @@ -137,8 +138,9 @@ int NB_rrc_mac_config_req_eNB( ) { - - //int i; + //------------ + PHY_Config_t *config_INFO; + //------------ int UE_id = -1; //eNB_MAC_INST_NB *eNB = &eNB_mac_inst_NB[Mod_idP]; @@ -148,11 +150,15 @@ int NB_rrc_mac_config_req_eNB( UE_id = find_UE_id(Mod_idP, rntiP); + config_INFO->get_MIB = 0; + config_INFO->get_COMMON = 0; + config_INFO->get_DEDICATED = 0; if (mib_NB!=NULL) { - //if (eNB_mac_inst == NULL) l2_init_eNB(); //XXX MP: to be included in the MAC/main.c - // mac_top_init_eNB(); //XXX MP: to be included in the MAC/main.c + //if(eNB_mac_inst == NULL) l2_init_eNB(); //TODO MP: to be included in the MAC/main.c + + //mac_top_init_eNB(); //TODO MP: to be included in the MAC/main.c eNB_mac_inst_NB[Mod_idP].common_channels[CC_idP].mib_NB = mib_NB; eNB_mac_inst_NB[Mod_idP].common_channels[CC_idP].physCellId = physCellId; @@ -161,22 +167,63 @@ int NB_rrc_mac_config_req_eNB( eNB_mac_inst_NB[Mod_idP].common_channels[CC_idP].eutra_band = eutra_band; eNB_mac_inst_NB[Mod_idP].common_channels[CC_idP].dl_CarrierFreq = dl_CarrierFreq; - NB_phy_config_mib_eNB(Mod_idP, - CC_idP, - eutra_band, - physCellId, - Ncp, - p_eNB, - dl_CarrierFreq, - ul_CarrierFreq); - //mib_NB->message.operationModeInfo_r13); +// NB_phy_config_mib_eNB(Mod_idP, +// CC_idP, +// eutra_band, +// physCellId, +// Ncp, +// p_eNB, +// dl_CarrierFreq, +// ul_CarrierFreq); +// //mib_NB->message.operationModeInfo_r13); XXX check if needed or not - // mac_init_cell_params(Mod_idP,CC_idP); //XXX to be defined in MAC/main.c + /* + * Following the FAPI like approach: + * 1)fill the PHY_Config_t structure (PHY_INTERFACE/IF_Module_nb_iot.h) + * 2)Call the PHY_config_req for trigger the NB_phy_config_mib_eNB() + */ + + config_INFO->get_MIB = 1; + config_INFO->mod_id = Mod_idP; + config_INFO->CC_id = CC_idP; + config_INFO->rnti = rntiP; + config_INFO->frequency_band_indicator = (uint8_t)eutra_band; + config_INFO->sch_config.physical_cell_id = physCellId; + config_INFO->subframe_config.dl_cyclic_prefix_type = Ncp; + config_INFO->rf_config.tx_antenna_ports = p_eNB; + config_INFO->dl_CarrierFreq = dl_CarrierFreq; + config_INFO->ul_CarrierFreq = ul_CarrierFreq; + + switch (mib_NB->message.operationModeInfo_r13.present) + { + //FAPI specs pag 135 + case MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_SamePCI_r13: + config_INFO->nb_iot_config.operating_mode = 0; + break; + case MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_DifferentPCI_r13: + config_INFO->nb_iot_config.operating_mode = 1; + break; + case MasterInformationBlock_NB__operationModeInfo_r13_PR_guardband_r13: + config_INFO->nb_iot_config.operating_mode = 2; + break; + case MasterInformationBlock_NB__operationModeInfo_r13_PR_standalone_r13: + config_INFO->nb_iot_config.operating_mode = 3; + break; + default: + LOG_E(RRC, "NB_rrc_mac_config_req_eNB: NB-IoT operating Mode (MIB-NB) not valid\n"); + break; + } + + PHY_config_req(config_INFO); + + // mac_init_cell_params(Mod_idP,CC_idP); //TODO MP: to be defined in MAC/main.c (in the old implementation was inside the mac_top_init but raymond have separated } - //phy_config_sib1_eNB--> not implemented for NB_IoT if (radioResourceConfigCommon!=NULL) { + + config_INFO->get_COMMON = 1; + LOG_I(MAC,"[CONFIG]SIB2/3-NB Contents (partial)\n"); LOG_I(MAC,"[CONFIG]npusch_ConfigCommon_r13.dmrs_Config_r13->threeTone_CyclicShift_r13= %ld\n", radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->threeTone_CyclicShift_r13); @@ -191,12 +238,52 @@ int NB_rrc_mac_config_req_eNB( //no ul_Bandwidth - NB_phy_config_sib2_eNB( - Mod_idP, - CC_idP, - radioResourceConfigCommon, - NULL //ul_carrier_frequency - ); +// NB_phy_config_sib2_eNB( +// Mod_idP, +// CC_idP, +// radioResourceConfigCommon, +// NULL //ul_carrier_frequency +// ); + + /* + * Following the FAPI like approach: + * 1)fill the PHY_Config_t structure (PHY_INTERFACE/IF_Module_nb_iot.h) + * 1.1) check for how many NPRACH resources has been set and enable the corresponding parameter + * 2)Call the PHY_config_req for trigger the NB_phy_config_sib2_eNB() + */ + + /*NPRACH Resources*/ + + config_INFO->nb_iot_config.nprach_config_0_enabled = 0; + config_INFO->nb_iot_config.nprach_config_1_enabled = 0; + config_INFO->nb_iot_config.nprach_config_2_enabled = 0; + + switch(radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.size) + { + case 0: + break; + case 1: + config_INFO->nb_iot_config.nprach_config_0_enabled = 1; + c + break; + case 2: + config_INFO->nb_iot_config.nprach_config_0_enabled = 1; + config_INFO->nb_iot_config.nprach_config_1_enabled = 1; + break; + case 3: + config_INFO->nb_iot_config.nprach_config_0_enabled = 1; + config_INFO->nb_iot_config.nprach_config_1_enabled = 1; + config_INFO->nb_iot_config.nprach_config_2_enabled = 1; + break; + default: + LOG_E(RRC,"NB_rrc_mac_config_req_eNB: nprach_ParametersList size not valid\n"); + + } + + config_INFO->nb_iot_config + + PHY_config_req(config_INFO); + } @@ -215,15 +302,17 @@ int NB_rrc_mac_config_req_eNB( if (physicalConfigDedicated != NULL) { + if (UE_id == -1) LOG_E(MAC,"%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, __LINE__, __FUNCTION__); else { - NB_phy_config_dedicated_eNB( - Mod_idP, - CC_idP, - UE_RNTI(Mod_idP, UE_id), - physicalConfigDedicated); + config_INFO->get_DEDICATED = 1; + NB_phy_config_dedicated_eNB( + Mod_idP, + CC_idP, + UE_RNTI(Mod_idP, UE_id), + physicalConfigDedicated); } } diff --git a/openair2/RRC/LITE/rrc_eNB_nb_iot.c b/openair2/RRC/LITE/rrc_eNB_nb_iot.c index 4449149bd1..ffd2a4c42c 100644 --- a/openair2/RRC/LITE/rrc_eNB_nb_iot.c +++ b/openair2/RRC/LITE/rrc_eNB_nb_iot.c @@ -1715,7 +1715,7 @@ init_SI_NB( eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].physCellId, eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].p_eNB, eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].Ncp, - eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].sib1_NB->freqBandIndicator_r13, + eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].sib1_NB->freqBandIndicator_r13, //eutra_band eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].sib1_NB->freqBandInfo_r13, eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].sib1_NB->multiBandInfoList_r13, eNB_rrc_inst_NB[ctxt_pP->module_id].carrier[CC_id].sib1_NB->downlinkBitmap_r13, -- 2.26.2