Commit d6b6cb91 authored by Michele Paffetti's avatar Michele Paffetti

commit before merge with nick

parent 32aa59e0
...@@ -16,10 +16,10 @@ void PHY_config_req(PHY_Config_t* config_INFO){ ...@@ -16,10 +16,10 @@ void PHY_config_req(PHY_Config_t* config_INFO){
NB_phy_config_mib_eNB(config_INFO->mod_id, NB_phy_config_mib_eNB(config_INFO->mod_id,
config_INFO->CC_id, config_INFO->CC_id,
config_INFO->frequency_band_indicator, config_INFO->frequency_band_indicator,
config_INFO->sch_config.physical_cell_id.value, config_INFO->cfg->sch_config.physical_cell_id.value,
config_INFO->subframe_config.dl_cyclic_prefix_type.value, config_INFO->cfg->subframe_config.dl_cyclic_prefix_type.value,
config_INFO->subframe_config.ul_cyclic_prefix_type.value, config_INFO->cfg->subframe_config.ul_cyclic_prefix_type.value,
config_INFO->rf_config.tx_antenna_ports.value, config_INFO->cfg->rf_config.tx_antenna_ports.value,
config_INFO->dl_CarrierFreq, config_INFO->dl_CarrierFreq,
config_INFO->ul_CarrierFreq); config_INFO->ul_CarrierFreq);
} }
...@@ -29,9 +29,9 @@ void PHY_config_req(PHY_Config_t* config_INFO){ ...@@ -29,9 +29,9 @@ void PHY_config_req(PHY_Config_t* config_INFO){
//Common Configuration included in SIB2-NB //Common Configuration included in SIB2-NB
NB_phy_config_sib2_eNB(config_INFO->mod_id, NB_phy_config_sib2_eNB(config_INFO->mod_id,
config_INFO->CC_id, config_INFO->CC_id,
&config_INFO->nb_iot_config, // FIXME to be evaluated is should be passed a pointer &config_INFO->cfg->nb_iot_config, // FIXME to be evaluated is should be passed a pointer
&config_INFO->rf_config, &config_INFO->cfg->rf_config,
&config_INFO->uplink_reference_signal_config, &config_INFO->cfg->uplink_reference_signal_config,
&config_INFO->extra_phy_parms &config_INFO->extra_phy_parms
); );
} }
......
...@@ -77,14 +77,20 @@ typedef struct{ ...@@ -77,14 +77,20 @@ typedef struct{
uint32_t ul_CarrierFreq; uint32_t ul_CarrierFreq;
/*FAPI style config. parameters*/ /*FAPI style config. parameters
*
nfapi_uplink_reference_signal_config_t uplink_reference_signal_config; * useful config message contents:
nfapi_subframe_config_t subframe_config; * -nfapi_uplink_reference_signal_config_t uplink_reference_signal_config
nfapi_rf_config_t rf_config; * -nfapi_subframe_config_t subframe_config;
nfapi_sch_config_t sch_config; * -nfapi_rf_config_t rf_config;
nfapi_nb_iot_config_t nb_iot_config; * -nfapi_sch_config_t sch_config;
nfapi_l23_config_t l23_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 /*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 * In OAI at least are needed when we manage the phy_procedures_eNB_TX in which we call the phy_config_dedicated_eNB_step2
......
...@@ -125,6 +125,11 @@ extern void (*rlc_rrc_data_conf)( ...@@ -125,6 +125,11 @@ extern void (*rlc_rrc_data_conf)(
/*---------------------------------RRC-MAC-----------------------------------*/ /*---------------------------------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 //defined in MAC/config.c
//FIXME: this function has no implication in terms of logical channel configuration for MAC //FIXME: this function has no implication in terms of logical channel configuration for MAC
int NB_rrc_mac_config_req_eNB( int NB_rrc_mac_config_req_eNB(
...@@ -155,7 +160,7 @@ 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; int UE_id = -1;
...@@ -173,7 +178,9 @@ int NB_rrc_mac_config_req_eNB( ...@@ -173,7 +178,9 @@ int NB_rrc_mac_config_req_eNB(
config_INFO->CC_id = CC_idP; 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 //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( ...@@ -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() * 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->get_MIB = 1;
config_INFO->rnti = rntiP; config_INFO->rnti = rntiP;
config_INFO->frequency_band_indicator = (uint8_t)eutra_band; // guarda raimon config_INFO->frequency_band_indicator = (uint8_t)eutra_band; // guarda raimon
config_INFO->sch_config.physical_cell_id.value = physCellId; config_INFO->cfg->sch_config.physical_cell_id.value = physCellId;
config_INFO->subframe_config.dl_cyclic_prefix_type.value = Ncp; config_INFO->cfg->subframe_config.dl_cyclic_prefix_type.value = Ncp;
config_INFO->subframe_config.ul_cyclic_prefix_type.value = Ncp_UL; config_INFO->cfg->subframe_config.ul_cyclic_prefix_type.value = Ncp_UL;
config_INFO->rf_config.tx_antenna_ports.value = p_eNB; config_INFO->cfg->rf_config.tx_antenna_ports.value = p_eNB;
config_INFO->rf_config.rx_antenna_ports.value = p_rx_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->dl_CarrierFreq = dl_CarrierFreq; //guarda raymond is in rf_config
config_INFO->ul_CarrierFreq = ul_CarrierFreq; //guarda raymond config_INFO->ul_CarrierFreq = ul_CarrierFreq; //guarda raymond
...@@ -221,44 +232,44 @@ int NB_rrc_mac_config_req_eNB( ...@@ -221,44 +232,44 @@ int NB_rrc_mac_config_req_eNB(
{ {
//FAPI specs pag 135 //FAPI specs pag 135
case MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_SamePCI_r13: case MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_SamePCI_r13:
config_INFO->nb_iot_config.operating_mode.value = 0; config_INFO->cfg->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->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->nb_iot_config.assumed_crs_aps.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
if(eutraControlRegionSize == NULL) if(eutraControlRegionSize == NULL)
LOG_E(RRC, "NB_rrc_mac_config_req_eNB: operation mode is in-band but eutraControlRegionSize is not defined"); LOG_E(RRC, "NB_rrc_mac_config_req_eNB: operation mode is in-band but eutraControlRegionSize is not defined");
else else
config_INFO->nb_iot_config.control_region_size.value = *eutraControlRegionSize; config_INFO->cfg->nb_iot_config.control_region_size.value = *eutraControlRegionSize;
break; break;
case MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_DifferentPCI_r13: 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 //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.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) if(eutraControlRegionSize == NULL)
LOG_E(RRC, "NB_rrc_mac_config_req_eNB: operation mode is in-band but eutraControlRegionSize is not defined"); LOG_E(RRC, "NB_rrc_mac_config_req_eNB: operation mode is in-band but eutraControlRegionSize is not defined");
else else
config_INFO->nb_iot_config.control_region_size.value = *eutraControlRegionSize; config_INFO->cfg->nb_iot_config.control_region_size.value = *eutraControlRegionSize;
break; break;
case MasterInformationBlock_NB__operationModeInfo_r13_PR_guardband_r13: 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 //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.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->cfg->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.assumed_crs_aps.value = -1; //is not defined so we put a negative value
break; break;
case MasterInformationBlock_NB__operationModeInfo_r13_PR_standalone_r13: case MasterInformationBlock_NB__operationModeInfo_r13_PR_standalone_r13:
config_INFO->nb_iot_config.operating_mode.value = 3; config_INFO->cfg->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->cfg->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->cfg->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.assumed_crs_aps.value = -1; //is not defined so we put a negative value
break; break;
default: default:
LOG_E(RRC, "NB_rrc_mac_config_req_eNB: NB-IoT operating Mode (MIB-NB) not valid\n"); 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( ...@@ -275,6 +286,8 @@ int NB_rrc_mac_config_req_eNB(
if (radioResourceConfigCommon!=NULL) { 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; config_INFO->get_COMMON = 1;
LOG_I(MAC,"[CONFIG]SIB2/3-NB radioResourceConfigCommon Contents (partial)\n"); LOG_I(MAC,"[CONFIG]SIB2/3-NB radioResourceConfigCommon Contents (partial)\n");
...@@ -302,9 +315,9 @@ int NB_rrc_mac_config_req_eNB( ...@@ -302,9 +315,9 @@ int NB_rrc_mac_config_req_eNB(
NPRACH_Parameters_NB_r13_t* nprach_parameter; NPRACH_Parameters_NB_r13_t* nprach_parameter;
config_INFO->nb_iot_config.nprach_config_0_enabled.value = 0; config_INFO->cfg->nb_iot_config.nprach_config_0_enabled.value = 0;
config_INFO->nb_iot_config.nprach_config_1_enabled.value = 0; config_INFO->cfg->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_2_enabled.value = 0;
switch(radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.size) switch(radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.size)
{ {
...@@ -312,13 +325,13 @@ int NB_rrc_mac_config_req_eNB( ...@@ -312,13 +325,13 @@ int NB_rrc_mac_config_req_eNB(
break; break;
case 1: case 1:
nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[0]; 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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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_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) //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_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; 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( ...@@ -330,13 +343,13 @@ int NB_rrc_mac_config_req_eNB(
break; break;
case 2: case 2:
nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[0]; 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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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_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) //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_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; 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( ...@@ -347,13 +360,13 @@ int NB_rrc_mac_config_req_eNB(
nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[1]; 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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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_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) //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_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; 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( ...@@ -364,13 +377,13 @@ int NB_rrc_mac_config_req_eNB(
break; break;
case 3: case 3:
nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[0]; 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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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_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) //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_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; 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( ...@@ -381,13 +394,13 @@ int NB_rrc_mac_config_req_eNB(
nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[1]; 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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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_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) //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_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; 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( ...@@ -398,13 +411,13 @@ int NB_rrc_mac_config_req_eNB(
nprach_parameter = radioResourceConfigCommon->nprach_Config_r13.nprach_ParametersList_r13.list.array[2]; 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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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->cfg->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_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) //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_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; 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( ...@@ -423,7 +436,7 @@ int NB_rrc_mac_config_req_eNB(
/*NPDSCH ConfigCommon*/ /*NPDSCH ConfigCommon*/
//FIXME: MP: FAPI specs define a range of value [0-255]==[0db - 63.75db] with 0.25db step -- corrispondence in 3GPP specs??? //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*/ /*NPUSCH ConfigCommon*/
...@@ -435,26 +448,26 @@ int NB_rrc_mac_config_req_eNB( ...@@ -435,26 +448,26 @@ int NB_rrc_mac_config_req_eNB(
{ {
/* OPTIONAL */ /* OPTIONAL */
if(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->threeTone_BaseSequence_r13!= NULL) 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 */ /* OPTIONAL */
if(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->sixTone_BaseSequence_r13!= NULL) 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 */ /* OPTIONAL */
if(radioResourceConfigCommon->npusch_ConfigCommon_r13.dmrs_Config_r13->twelveTone_BaseSequence_r13!= NULL) 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->cfg->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.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 //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) 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 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 //Some missed parameters are in UL_CONFIG.request message (P7) in FAPI specs. and not configured through P5 procedure
//ack_NACK_NumRepetitions_Msg4_r13 //ack_NACK_NumRepetitions_Msg4_r13
...@@ -463,13 +476,13 @@ int NB_rrc_mac_config_req_eNB( ...@@ -463,13 +476,13 @@ int NB_rrc_mac_config_req_eNB(
/*DL GAP config */ /*DL GAP config */
if(radioResourceConfigCommon->dl_Gap_r13 !=NULL)/* OPTIONAL */ if(radioResourceConfigCommon->dl_Gap_r13 !=NULL)/* OPTIONAL */
{ {
config_INFO->nb_iot_config.dl_gap_config_enable.value = 1; config_INFO->cfg->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->cfg->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->cfg->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_periodicity.value = radioResourceConfigCommon->dl_Gap_r13->dl_GapPeriodicity_r13;
} }
else 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*/ /*UL Power Control ConfigCommon*/
...@@ -496,6 +509,10 @@ int NB_rrc_mac_config_req_eNB( ...@@ -496,6 +509,10 @@ int NB_rrc_mac_config_req_eNB(
} }
if (logicalChannelConfig!= NULL) { 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) { if (UE_id == -1) {
LOG_E(MAC,"%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, __LINE__, __FUNCTION__); LOG_E(MAC,"%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, __LINE__, __FUNCTION__);
} else { } else {
...@@ -507,6 +524,9 @@ int NB_rrc_mac_config_req_eNB( ...@@ -507,6 +524,9 @@ int NB_rrc_mac_config_req_eNB(
if (physicalConfigDedicated != NULL) { 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) if (UE_id == -1)
LOG_E(MAC,"%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, __LINE__, __FUNCTION__); LOG_E(MAC,"%s:%d:%s: ERROR, UE_id == -1\n", __FILE__, __LINE__, __FUNCTION__);
else else
...@@ -848,7 +868,7 @@ int8_t NB_mac_rrc_data_req_eNB( ...@@ -848,7 +868,7 @@ int8_t NB_mac_rrc_data_req_eNB(
LOG_T(RRC,"\n"); LOG_T(RRC,"\n");
#endif #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 //Requesting for SI Message
......
...@@ -69,7 +69,7 @@ unsigned short Data_to_read; ...@@ -69,7 +69,7 @@ unsigned short Data_to_read;
eNB_RRC_INST_NB *eNB_rrc_inst_NB; 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 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; PHY_Config_t *config_INFO;
BOOLEAN_t logicalChannelSR_Prohibit = 1; BOOLEAN_t logicalChannelSR_Prohibit = 1;
......
...@@ -148,6 +148,8 @@ PHY_VARS_eNB* init_lte_eNB(LTE_DL_FRAME_PARMS *frame_parms, ...@@ -148,6 +148,8 @@ PHY_VARS_eNB* init_lte_eNB(LTE_DL_FRAME_PARMS *frame_parms,
return (PHY_vars_eNB); return (PHY_vars_eNB);
} }
/*this is a function just for initialization of NB-IoT stuff*/
void init_lte_eNB_NB( void init_lte_eNB_NB(
PHY_VARS_eNB *PHY_vars_eNB, PHY_VARS_eNB *PHY_vars_eNB,
NB_DL_FRAME_PARMS *frame_parms, NB_DL_FRAME_PARMS *frame_parms,
......
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