From d6b6cb9143f71afd36201190d2b95d44b363f027 Mon Sep 17 00:00:00 2001 From: Michele Paffetti <michele.paffetti@eurecom.fr> Date: Wed, 28 Jun 2017 15:08:28 +0200 Subject: [PATCH] commit before merge with nick --- openair1/PHY/LTE_TRANSPORT/dci_tools_nb_iot.c | 2 +- .../SCHED/IF_Module_L1_primitives_nb_iot.c | 14 +- openair2/PHY_INTERFACE/IF_Module_nb_iot.h | 22 ++- openair2/RRC/LITE/L2_interface_nb_iot.c | 182 ++++++++++-------- openair2/RRC/LITE/vars_nb_iot.c | 2 +- targets/SIMU/USER/init_lte.c | 2 + 6 files changed, 126 insertions(+), 98 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools_nb_iot.c b/openair1/PHY/LTE_TRANSPORT/dci_tools_nb_iot.c index 9351299760..c5a78d7bbd 100644 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools_nb_iot.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools_nb_iot.c @@ -143,7 +143,7 @@ int NB_generate_eNB_dlsch_params_from_dci(PHY_VARS_eNB *eNB, DCI_CONTENT *DCI_Content, uint16_t rnti, DCI_format_NB_t dci_format, - LTE_eNB_DLSCH_t *dlsch, + LTE_eNB_DLSCH_t *dlsch, NB_DL_FRAME_PARMS *frame_parms, uint8_t aggregation, uint8_t Num_dci diff --git a/openair1/SCHED/IF_Module_L1_primitives_nb_iot.c b/openair1/SCHED/IF_Module_L1_primitives_nb_iot.c index 8fc3a46638..b13629989a 100644 --- a/openair1/SCHED/IF_Module_L1_primitives_nb_iot.c +++ b/openair1/SCHED/IF_Module_L1_primitives_nb_iot.c @@ -16,10 +16,10 @@ void PHY_config_req(PHY_Config_t* config_INFO){ NB_phy_config_mib_eNB(config_INFO->mod_id, config_INFO->CC_id, config_INFO->frequency_band_indicator, - config_INFO->sch_config.physical_cell_id.value, - config_INFO->subframe_config.dl_cyclic_prefix_type.value, - config_INFO->subframe_config.ul_cyclic_prefix_type.value, - config_INFO->rf_config.tx_antenna_ports.value, + config_INFO->cfg->sch_config.physical_cell_id.value, + config_INFO->cfg->subframe_config.dl_cyclic_prefix_type.value, + config_INFO->cfg->subframe_config.ul_cyclic_prefix_type.value, + config_INFO->cfg->rf_config.tx_antenna_ports.value, config_INFO->dl_CarrierFreq, config_INFO->ul_CarrierFreq); } @@ -29,9 +29,9 @@ void PHY_config_req(PHY_Config_t* config_INFO){ //Common Configuration included in SIB2-NB NB_phy_config_sib2_eNB(config_INFO->mod_id, config_INFO->CC_id, - &config_INFO->nb_iot_config, // FIXME to be evaluated is should be passed a pointer - &config_INFO->rf_config, - &config_INFO->uplink_reference_signal_config, + &config_INFO->cfg->nb_iot_config, // FIXME to be evaluated is should be passed a pointer + &config_INFO->cfg->rf_config, + &config_INFO->cfg->uplink_reference_signal_config, &config_INFO->extra_phy_parms ); } diff --git a/openair2/PHY_INTERFACE/IF_Module_nb_iot.h b/openair2/PHY_INTERFACE/IF_Module_nb_iot.h index 6a2ff2a5e6..8bdb2a5756 100644 --- a/openair2/PHY_INTERFACE/IF_Module_nb_iot.h +++ b/openair2/PHY_INTERFACE/IF_Module_nb_iot.h @@ -77,14 +77,20 @@ typedef struct{ uint32_t ul_CarrierFreq; - /*FAPI style config. parameters*/ - - nfapi_uplink_reference_signal_config_t uplink_reference_signal_config; - nfapi_subframe_config_t subframe_config; - nfapi_rf_config_t rf_config; - nfapi_sch_config_t sch_config; - nfapi_nb_iot_config_t nb_iot_config; - nfapi_l23_config_t l23_config; + /*FAPI style config. parameters + * + * useful config message contents: + * -nfapi_uplink_reference_signal_config_t uplink_reference_signal_config + * -nfapi_subframe_config_t subframe_config; + * -nfapi_rf_config_t rf_config; + * -nfapi_sch_config_t sch_config; + * -nfapi_nb_iot_config_t nb_iot_config; + * -nfapi_l23_config_t l23_config; + * + * */ + //XXX where allocate memory?? + nfapi_config_request_t* cfg; + /*Dedicated configuration -->not supported by FAPI * In OAI at least are needed when we manage the phy_procedures_eNB_TX in which we call the phy_config_dedicated_eNB_step2 diff --git a/openair2/RRC/LITE/L2_interface_nb_iot.c b/openair2/RRC/LITE/L2_interface_nb_iot.c index 51e657bba4..01ec95eedc 100644 --- a/openair2/RRC/LITE/L2_interface_nb_iot.c +++ b/openair2/RRC/LITE/L2_interface_nb_iot.c @@ -125,6 +125,11 @@ extern void (*rlc_rrc_data_conf)( /*---------------------------------RRC-MAC-----------------------------------*/ +/* + * This function is used to configured MAC and PHY layer. In the latter case, we first do a mapping of OAI params to the FAPI-like once + * by filling the PHY_COnfig structure + */ + //defined in MAC/config.c //FIXME: this function has no implication in terms of logical channel configuration for MAC int NB_rrc_mac_config_req_eNB( @@ -155,7 +160,7 @@ int NB_rrc_mac_config_req_eNB( ) { - /*to review with the Raymond implementation*/ + /*XXX to review with the Raymond implementation*/ int UE_id = -1; @@ -173,7 +178,9 @@ int NB_rrc_mac_config_req_eNB( config_INFO->CC_id = CC_idP; - if (mib_NB!=NULL) { + + + if (mib_NB!=NULL ) { //if(eNB_mac_inst == NULL) l2_init_eNB(); //TODO MP: to be included in the MAC/main.c @@ -205,14 +212,18 @@ int NB_rrc_mac_config_req_eNB( * 2)Call the PHY_config_req for trigger the NB_phy_config_mib_eNB() */ + + //XXX where rymond allocate memory for cfg?? + if(config_INFO->cfg == NULL) LOG_E(MAC, "NB_rrc_mac_config_req_eNB: trying to configure PHY but no config.request message in config_INFO is allocated\n"); + config_INFO->get_MIB = 1; config_INFO->rnti = rntiP; config_INFO->frequency_band_indicator = (uint8_t)eutra_band; // guarda raimon - config_INFO->sch_config.physical_cell_id.value = physCellId; - config_INFO->subframe_config.dl_cyclic_prefix_type.value = Ncp; - config_INFO->subframe_config.ul_cyclic_prefix_type.value = Ncp_UL; - config_INFO->rf_config.tx_antenna_ports.value = p_eNB; - config_INFO->rf_config.rx_antenna_ports.value = p_rx_eNB; + config_INFO->cfg->sch_config.physical_cell_id.value = physCellId; + config_INFO->cfg->subframe_config.dl_cyclic_prefix_type.value = Ncp; + config_INFO->cfg->subframe_config.ul_cyclic_prefix_type.value = Ncp_UL; + config_INFO->cfg->rf_config.tx_antenna_ports.value = p_eNB; + config_INFO->cfg->rf_config.rx_antenna_ports.value = p_rx_eNB; config_INFO->dl_CarrierFreq = dl_CarrierFreq; //guarda raymond is in rf_config config_INFO->ul_CarrierFreq = ul_CarrierFreq; //guarda raymond @@ -221,44 +232,44 @@ int NB_rrc_mac_config_req_eNB( { //FAPI specs pag 135 case MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_SamePCI_r13: - config_INFO->nb_iot_config.operating_mode.value = 0; - config_INFO->nb_iot_config.prb_index.value = mib_NB->message.operationModeInfo_r13.choice.inband_SamePCI_r13.eutra_CRS_SequenceInfo_r13; //see TS 36.213 ch 16.0 - config_INFO->nb_iot_config.assumed_crs_aps.value = -1; //is not defined so we put a negative value + config_INFO->cfg->nb_iot_config.operating_mode.value = 0; + config_INFO->cfg->nb_iot_config.prb_index.value = mib_NB->message.operationModeInfo_r13.choice.inband_SamePCI_r13.eutra_CRS_SequenceInfo_r13; //see TS 36.213 ch 16.0 + config_INFO->cfg->nb_iot_config.assumed_crs_aps.value = -1; //is not defined so we put a negative value if(eutraControlRegionSize == NULL) LOG_E(RRC, "NB_rrc_mac_config_req_eNB: operation mode is in-band but eutraControlRegionSize is not defined"); else - config_INFO->nb_iot_config.control_region_size.value = *eutraControlRegionSize; + config_INFO->cfg->nb_iot_config.control_region_size.value = *eutraControlRegionSize; break; case MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_DifferentPCI_r13: - config_INFO->nb_iot_config.operating_mode.value = 1; + config_INFO->cfg->nb_iot_config.operating_mode.value = 1; //XXX problem: fapi think to define also eutra_CRS_sequenceInfo also for in band with different PCI but the problem is that we don-t have it //config_INFO->nb_iot_config.prb_index.value = mib_NB->message.operationModeInfo_r13.choice.inband_DifferentPCI_r13 XXX (see FAPI specs pag 135) - config_INFO->nb_iot_config.assumed_crs_aps.value = mib_NB->message.operationModeInfo_r13.choice.inband_DifferentPCI_r13.eutra_NumCRS_Ports_r13; + config_INFO->cfg->nb_iot_config.assumed_crs_aps.value = mib_NB->message.operationModeInfo_r13.choice.inband_DifferentPCI_r13.eutra_NumCRS_Ports_r13; if(eutraControlRegionSize == NULL) LOG_E(RRC, "NB_rrc_mac_config_req_eNB: operation mode is in-band but eutraControlRegionSize is not defined"); else - config_INFO->nb_iot_config.control_region_size.value = *eutraControlRegionSize; + config_INFO->cfg->nb_iot_config.control_region_size.value = *eutraControlRegionSize; break; case MasterInformationBlock_NB__operationModeInfo_r13_PR_guardband_r13: - config_INFO->nb_iot_config.operating_mode.value = 2; + config_INFO->cfg->nb_iot_config.operating_mode.value = 2; //XXX problem: fapi think to define also eutra_CRS_sequenceInfo also for in band with different PCI but the problem is that we don-t have it //config_INFO->nb_iot_config.prb_index = mib_NB->message.operationModeInfo_r13.choice.guardband_r13; XXX (see FAPI specs pag 135) - config_INFO->nb_iot_config.control_region_size.value = -1; //should not being defined so we put a negative value - config_INFO->nb_iot_config.assumed_crs_aps.value = -1; //is not defined so we put a negative value + config_INFO->cfg->nb_iot_config.control_region_size.value = -1; //should not being defined so we put a negative value + config_INFO->cfg->nb_iot_config.assumed_crs_aps.value = -1; //is not defined so we put a negative value break; case MasterInformationBlock_NB__operationModeInfo_r13_PR_standalone_r13: - config_INFO->nb_iot_config.operating_mode.value = 3; - config_INFO->nb_iot_config.prb_index.value = -1; // is not defined for this case (put a negative value) - config_INFO->nb_iot_config.control_region_size.value = -1;//is not defined so we put a negative value - config_INFO->nb_iot_config.assumed_crs_aps.value = -1; //is not defined so we put a negative value + config_INFO->cfg->nb_iot_config.operating_mode.value = 3; + config_INFO->cfg->nb_iot_config.prb_index.value = -1; // is not defined for this case (put a negative value) + config_INFO->cfg->nb_iot_config.control_region_size.value = -1;//is not defined so we put a negative value + config_INFO->cfg->nb_iot_config.assumed_crs_aps.value = -1; //is not defined so we put a negative value break; default: LOG_E(RRC, "NB_rrc_mac_config_req_eNB: NB-IoT operating Mode (MIB-NB) not valid\n"); @@ -275,6 +286,8 @@ int NB_rrc_mac_config_req_eNB( if (radioResourceConfigCommon!=NULL) { + if(config_INFO->cfg == NULL) LOG_E(MAC, "NB_rrc_mac_config_req_eNB: trying to configure PHY but no config.request message in config_INFO is allocated\n"); + config_INFO->get_COMMON = 1; LOG_I(MAC,"[CONFIG]SIB2/3-NB radioResourceConfigCommon Contents (partial)\n"); @@ -302,9 +315,9 @@ int NB_rrc_mac_config_req_eNB( NPRACH_Parameters_NB_r13_t* nprach_parameter; - config_INFO->nb_iot_config.nprach_config_0_enabled.value = 0; - config_INFO->nb_iot_config.nprach_config_1_enabled.value = 0; - config_INFO->nb_iot_config.nprach_config_2_enabled.value = 0; + config_INFO->cfg->nb_iot_config.nprach_config_0_enabled.value = 0; + config_INFO->cfg->nb_iot_config.nprach_config_1_enabled.value = 0; + config_INFO->cfg->nb_iot_config.nprach_config_2_enabled.value = 0; switch(radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.size) { @@ -312,13 +325,13 @@ int NB_rrc_mac_config_req_eNB( break; case 1: nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[0]; - config_INFO->nb_iot_config.nprach_config_0_enabled.value = 1; - config_INFO->nb_iot_config.nprach_config_0_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; - config_INFO->nb_iot_config.nprach_config_0_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; - config_INFO->nb_iot_config.nprach_config_0_start_time.value = nprach_parameter->nprach_StartTime_r13; - config_INFO->nb_iot_config.nprach_config_0_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; - config_INFO->nb_iot_config.nprach_config_0_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; - config_INFO->nb_iot_config.nprach_config_0_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_enabled.value = 1; + config_INFO->cfg->nb_iot_config.nprach_config_0_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_start_time.value = nprach_parameter->nprach_StartTime_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; //MP: missed configuration for FAPI-style structure (I have added on my own byt maybe are not needed) config_INFO->extra_phy_parms.nprach_config_0_subcarrier_MSG3_range_start = nprach_parameter->nprach_SubcarrierMSG3_RangeStart_r13; config_INFO->extra_phy_parms.nprach_config_0_max_num_preamble_attempt_CE = nprach_parameter->maxNumPreambleAttemptCE_r13; @@ -330,13 +343,13 @@ int NB_rrc_mac_config_req_eNB( break; case 2: nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[0]; - config_INFO->nb_iot_config.nprach_config_0_enabled.value = 1; - config_INFO->nb_iot_config.nprach_config_0_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; - config_INFO->nb_iot_config.nprach_config_0_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; - config_INFO->nb_iot_config.nprach_config_0_start_time.value = nprach_parameter->nprach_StartTime_r13; - config_INFO->nb_iot_config.nprach_config_0_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; - config_INFO->nb_iot_config.nprach_config_0_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; - config_INFO->nb_iot_config.nprach_config_0_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_enabled.value = 1; + config_INFO->cfg->nb_iot_config.nprach_config_0_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_start_time.value = nprach_parameter->nprach_StartTime_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; //MP: missed configuration for FAPI-style structure (I have added on my own byt maybe are not needed) config_INFO->extra_phy_parms.nprach_config_0_subcarrier_MSG3_range_start = nprach_parameter->nprach_SubcarrierMSG3_RangeStart_r13; config_INFO->extra_phy_parms.nprach_config_0_max_num_preamble_attempt_CE = nprach_parameter->maxNumPreambleAttemptCE_r13; @@ -347,13 +360,13 @@ int NB_rrc_mac_config_req_eNB( nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[1]; - config_INFO->nb_iot_config.nprach_config_1_enabled.value = 1; - config_INFO->nb_iot_config.nprach_config_1_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; - config_INFO->nb_iot_config.nprach_config_1_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; - config_INFO->nb_iot_config.nprach_config_1_start_time.value = nprach_parameter->nprach_StartTime_r13; - config_INFO->nb_iot_config.nprach_config_1_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; - config_INFO->nb_iot_config.nprach_config_1_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; - config_INFO->nb_iot_config.nprach_config_1_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_enabled.value = 1; + config_INFO->cfg->nb_iot_config.nprach_config_1_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_start_time.value = nprach_parameter->nprach_StartTime_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; //MP: missed configuration for FAPI-style structure (I have added on my own byt maybe are not needed) config_INFO->extra_phy_parms.nprach_config_1_subcarrier_MSG3_range_start = nprach_parameter->nprach_SubcarrierMSG3_RangeStart_r13; config_INFO->extra_phy_parms.nprach_config_1_max_num_preamble_attempt_CE = nprach_parameter->maxNumPreambleAttemptCE_r13; @@ -364,13 +377,13 @@ int NB_rrc_mac_config_req_eNB( break; case 3: nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[0]; - config_INFO->nb_iot_config.nprach_config_0_enabled.value = 1; - config_INFO->nb_iot_config.nprach_config_0_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; - config_INFO->nb_iot_config.nprach_config_0_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; - config_INFO->nb_iot_config.nprach_config_0_start_time.value = nprach_parameter->nprach_StartTime_r13; - config_INFO->nb_iot_config.nprach_config_0_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; - config_INFO->nb_iot_config.nprach_config_0_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; - config_INFO->nb_iot_config.nprach_config_0_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_enabled.value = 1; + config_INFO->cfg->nb_iot_config.nprach_config_0_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_start_time.value = nprach_parameter->nprach_StartTime_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; + config_INFO->cfg->nb_iot_config.nprach_config_0_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; //MP: missed configuration for FAPI-style structure (I have added on my own byt maybe are not needed) config_INFO->extra_phy_parms.nprach_config_0_subcarrier_MSG3_range_start = nprach_parameter->nprach_SubcarrierMSG3_RangeStart_r13; config_INFO->extra_phy_parms.nprach_config_0_max_num_preamble_attempt_CE = nprach_parameter->maxNumPreambleAttemptCE_r13; @@ -381,13 +394,13 @@ int NB_rrc_mac_config_req_eNB( nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[1]; - config_INFO->nb_iot_config.nprach_config_1_enabled.value = 1; - config_INFO->nb_iot_config.nprach_config_1_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; - config_INFO->nb_iot_config.nprach_config_1_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; - config_INFO->nb_iot_config.nprach_config_1_start_time.value = nprach_parameter->nprach_StartTime_r13; - config_INFO->nb_iot_config.nprach_config_1_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; - config_INFO->nb_iot_config.nprach_config_1_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; - config_INFO->nb_iot_config.nprach_config_1_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_enabled.value = 1; + config_INFO->cfg->nb_iot_config.nprach_config_1_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_start_time.value = nprach_parameter->nprach_StartTime_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; + config_INFO->cfg->nb_iot_config.nprach_config_1_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; //MP: missed configuration for FAPI-style structure (I have added on my own byt maybe are not needed) config_INFO->extra_phy_parms.nprach_config_1_subcarrier_MSG3_range_start = nprach_parameter->nprach_SubcarrierMSG3_RangeStart_r13; config_INFO->extra_phy_parms.nprach_config_1_max_num_preamble_attempt_CE = nprach_parameter->maxNumPreambleAttemptCE_r13; @@ -398,13 +411,13 @@ int NB_rrc_mac_config_req_eNB( nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[2]; - config_INFO->nb_iot_config.nprach_config_2_enabled.value = 1; - config_INFO->nb_iot_config.nprach_config_2_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; - config_INFO->nb_iot_config.nprach_config_2_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; - config_INFO->nb_iot_config.nprach_config_2_start_time.value = nprach_parameter->nprach_StartTime_r13; - config_INFO->nb_iot_config.nprach_config_2_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; - config_INFO->nb_iot_config.nprach_config_2_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; - config_INFO->nb_iot_config.nprach_config_2_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; + config_INFO->cfg->nb_iot_config.nprach_config_2_enabled.value = 1; + config_INFO->cfg->nb_iot_config.nprach_config_2_cp_length.value = radioResourceConfigCommon->nprach_Config_r13.nprach_CP_Length_r13; + config_INFO->cfg->nb_iot_config.nprach_config_2_sf_periodicity.value = nprach_parameter->nprach_Periodicity_r13; + config_INFO->cfg->nb_iot_config.nprach_config_2_start_time.value = nprach_parameter->nprach_StartTime_r13; + config_INFO->cfg->nb_iot_config.nprach_config_2_subcarrier_offset.value = nprach_parameter->nprach_SubcarrierOffset_r13; + config_INFO->cfg->nb_iot_config.nprach_config_2_number_of_subcarriers.value = nprach_parameter->nprach_NumSubcarriers_r13; + config_INFO->cfg->nb_iot_config.nprach_config_2_number_of_repetitions_per_attempt.value = nprach_parameter->numRepetitionsPerPreambleAttempt_r13; //MP: missed configuration for FAPI-style structure (I have added on my own byt maybe are not needed) config_INFO->extra_phy_parms.nprach_config_2_subcarrier_MSG3_range_start = nprach_parameter->nprach_SubcarrierMSG3_RangeStart_r13; config_INFO->extra_phy_parms.nprach_config_2_max_num_preamble_attempt_CE = nprach_parameter->maxNumPreambleAttemptCE_r13; @@ -423,7 +436,7 @@ int NB_rrc_mac_config_req_eNB( /*NPDSCH ConfigCommon*/ //FIXME: MP: FAPI specs define a range of value [0-255]==[0db - 63.75db] with 0.25db step -- corrispondence in 3GPP specs??? - config_INFO->rf_config.reference_signal_power.value = radioResourceConfigCommon->npdsch_ConfigCommon_r13.nrs_Power_r13; + config_INFO->cfg->rf_config.reference_signal_power.value = radioResourceConfigCommon->npdsch_ConfigCommon_r13.nrs_Power_r13; /*NPUSCH ConfigCommon*/ @@ -435,26 +448,26 @@ int NB_rrc_mac_config_req_eNB( { /* OPTIONAL */ if(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->threeTone_BaseSequence_r13!= NULL) - config_INFO->nb_iot_config.three_tone_base_sequence.value = *(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->threeTone_BaseSequence_r13); + config_INFO->cfg->nb_iot_config.three_tone_base_sequence.value = *(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->threeTone_BaseSequence_r13); /* OPTIONAL */ if(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->sixTone_BaseSequence_r13!= NULL) - config_INFO->nb_iot_config.six_tone_base_sequence.value = *(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->sixTone_BaseSequence_r13); + config_INFO->cfg->nb_iot_config.six_tone_base_sequence.value = *(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->sixTone_BaseSequence_r13); /* OPTIONAL */ if(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->twelveTone_BaseSequence_r13!= NULL) - config_INFO->nb_iot_config.twelve_tone_base_sequence.value = *(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->twelveTone_BaseSequence_r13); + config_INFO->cfg->nb_iot_config.twelve_tone_base_sequence.value = *(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->twelveTone_BaseSequence_r13); - config_INFO->nb_iot_config.three_tone_cyclic_shift.value = radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->threeTone_CyclicShift_r13; - config_INFO->nb_iot_config.six_tone_cyclic_shift.value = radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->sixTone_CyclicShift_r13; + config_INFO->cfg->nb_iot_config.three_tone_cyclic_shift.value = radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->threeTone_CyclicShift_r13; + config_INFO->cfg->nb_iot_config.six_tone_cyclic_shift.value = radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->sixTone_CyclicShift_r13; } //NOTE: MP: FAPI specs for UL RS Configurations seems to be targeted for LTE and not for NB-IoT if(radioResourceConfigCommon->npusch_ConfigCommon_r13.ul_ReferenceSignalsNPUSCH_r13.groupHoppingEnabled_r13 == TRUE) - config_INFO->uplink_reference_signal_config.uplink_rs_hopping.value = 1; //RS_GROUP_HOPPING (FAPI specs pag 127) + config_INFO->cfg->uplink_reference_signal_config.uplink_rs_hopping.value = 1; //RS_GROUP_HOPPING (FAPI specs pag 127) else - config_INFO->uplink_reference_signal_config.uplink_rs_hopping.value = 0;//RS_NO_HOPPING + config_INFO->cfg->uplink_reference_signal_config.uplink_rs_hopping.value = 0;//RS_NO_HOPPING - config_INFO->uplink_reference_signal_config.group_assignment.value = radioResourceConfigCommon->npusch_ConfigCommon_r13.ul_ReferenceSignalsNPUSCH_r13.groupAssignmentNPUSCH_r13; + config_INFO->cfg->uplink_reference_signal_config.group_assignment.value = radioResourceConfigCommon->npusch_ConfigCommon_r13.ul_ReferenceSignalsNPUSCH_r13.groupAssignmentNPUSCH_r13; //Some missed parameters are in UL_CONFIG.request message (P7) in FAPI specs. and not configured through P5 procedure //ack_NACK_NumRepetitions_Msg4_r13 @@ -463,13 +476,13 @@ int NB_rrc_mac_config_req_eNB( /*DL GAP config */ if(radioResourceConfigCommon->dl_Gap_r13 !=NULL)/* OPTIONAL */ { - config_INFO->nb_iot_config.dl_gap_config_enable.value = 1; - config_INFO->nb_iot_config.dl_gap_threshold.value = radioResourceConfigCommon->dl_Gap_r13->dl_GapThreshold_r13; - config_INFO->nb_iot_config.dl_gap_duration_coefficient.value = radioResourceConfigCommon->dl_Gap_r13->dl_GapDurationCoeff_r13; - config_INFO->nb_iot_config.dl_gap_periodicity.value = radioResourceConfigCommon->dl_Gap_r13->dl_GapPeriodicity_r13; + config_INFO->cfg->nb_iot_config.dl_gap_config_enable.value = 1; + config_INFO->cfg->nb_iot_config.dl_gap_threshold.value = radioResourceConfigCommon->dl_Gap_r13->dl_GapThreshold_r13; + config_INFO->cfg->nb_iot_config.dl_gap_duration_coefficient.value = radioResourceConfigCommon->dl_Gap_r13->dl_GapDurationCoeff_r13; + config_INFO->cfg->nb_iot_config.dl_gap_periodicity.value = radioResourceConfigCommon->dl_Gap_r13->dl_GapPeriodicity_r13; } else - config_INFO->nb_iot_config.dl_gap_config_enable.value = 0; + config_INFO->cfg->nb_iot_config.dl_gap_config_enable.value = 0; /*UL Power Control ConfigCommon*/ @@ -496,6 +509,10 @@ int NB_rrc_mac_config_req_eNB( } if (logicalChannelConfig!= NULL) { + + + if(config_INFO->cfg == NULL) LOG_E(MAC, "NB_rrc_mac_config_req_eNB: trying to configure PHY but no config.request message in config_INFO is allocated\n"); + if (UE_id == -1) { LOG_E(MAC,"%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, __LINE__, __FUNCTION__); } else { @@ -507,6 +524,9 @@ int NB_rrc_mac_config_req_eNB( if (physicalConfigDedicated != NULL) { + + if(config_INFO->cfg == NULL) LOG_E(MAC, "NB_rrc_mac_config_req_eNB: trying to configure PHY but no config.request message in config_INFO is allocated\n"); + if (UE_id == -1) LOG_E(MAC,"%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, __LINE__, __FUNCTION__); else @@ -848,7 +868,7 @@ int8_t NB_mac_rrc_data_req_eNB( LOG_T(RRC,"\n"); #endif - return (eNB_rrc_inst_NB[Mod_idP].carrier[CC_id].sizeof_MIB_NB); + return (eNB_rrc_inst_NB[Mod_idP].carrier[CC_id].sizeof_MIB_NB); //exit from the function } //Requesting for SI Message diff --git a/openair2/RRC/LITE/vars_nb_iot.c b/openair2/RRC/LITE/vars_nb_iot.c index 08a8c73810..7d78fc0d6b 100644 --- a/openair2/RRC/LITE/vars_nb_iot.c +++ b/openair2/RRC/LITE/vars_nb_iot.c @@ -69,7 +69,7 @@ unsigned short Data_to_read; eNB_RRC_INST_NB *eNB_rrc_inst_NB; uint8_t DRB2LCHAN_NB[2];//max can be 2 DRBs for NB_IoT --> it used for saving the LCID of DRBs -//structure for FAPI-like configuration +//structure for FAPI-like configuration (memory for this is allocated in init_SI) PHY_Config_t *config_INFO; BOOLEAN_t logicalChannelSR_Prohibit = 1; diff --git a/targets/SIMU/USER/init_lte.c b/targets/SIMU/USER/init_lte.c index 7ff5ec8c45..1912c514b0 100644 --- a/targets/SIMU/USER/init_lte.c +++ b/targets/SIMU/USER/init_lte.c @@ -148,6 +148,8 @@ PHY_VARS_eNB* init_lte_eNB(LTE_DL_FRAME_PARMS *frame_parms, return (PHY_vars_eNB); } + +/*this is a function just for initialization of NB-IoT stuff*/ void init_lte_eNB_NB( PHY_VARS_eNB *PHY_vars_eNB, NB_DL_FRAME_PARMS *frame_parms, -- 2.26.2