NR config file
This commit is contained in:
@@ -372,6 +372,7 @@ void phy_config_request(PHY_Config_t *phy_config);
|
||||
|
||||
int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms,uint8_t osf);
|
||||
void dump_frame_parms(LTE_DL_FRAME_PARMS *frame_parms);
|
||||
void nr_phy_config_request(PHY_VARS_gNB *gNB);
|
||||
|
||||
/** @} */
|
||||
#endif
|
||||
|
||||
+41
-223
@@ -61,6 +61,7 @@ int l1_north_init_gNB() {
|
||||
LOG_I(PHY,"%s() RC.gNB[%d][%d] installing callbacks\n", __FUNCTION__, i, j);
|
||||
|
||||
RC.gNB[i][j]->if_inst->PHY_config_req = phy_config_request;
|
||||
nr_phy_config_request(RC.gNB[i][j]);
|
||||
RC.gNB[i][j]->if_inst->schedule_response = schedule_response;
|
||||
}
|
||||
}
|
||||
@@ -80,7 +81,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
|
||||
|
||||
// shortcuts
|
||||
NR_DL_FRAME_PARMS* const fp = &gNB->frame_parms;
|
||||
nfapi_config_request_t* cfg = gNB->gNB_config;
|
||||
nfapi_config_request_t* cfg = &gNB->gNB_config;
|
||||
NR_gNB_COMMON* const common_vars = &gNB->common_vars;
|
||||
LTE_eNB_PUSCH** const pusch_vars = gNB->pusch_vars;
|
||||
LTE_eNB_SRS* const srs_vars = gNB->srs_vars;
|
||||
@@ -128,7 +129,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
|
||||
|
||||
gNB->first_run_I0_measurements = 1; ///This flag used to be static. With multiple gNBs this does no longer work, hence we put it in the structure. However it has to be initialized with 1, which is performed here.
|
||||
|
||||
|
||||
|
||||
common_vars->rxdata = (int32_t **)NULL;
|
||||
common_vars->txdataF = (int32_t **)malloc16(NB_ANTENNA_PORTS_ENB*sizeof(int32_t*));
|
||||
common_vars->rxdataF = (int32_t **)malloc16(64*sizeof(int32_t*));
|
||||
@@ -215,17 +216,14 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
|
||||
return (0);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
void phy_config_request(PHY_Config_t *phy_config) {
|
||||
|
||||
uint8_t Mod_id = phy_config->Mod_id;
|
||||
int CC_id = phy_config->CC_id;
|
||||
nfapi_config_request_t *cfg = phy_config->cfg;
|
||||
|
||||
|
||||
LTE_DL_FRAME_PARMS *fp;
|
||||
NR_DL_FRAME_PARMS *fp;
|
||||
PHICH_RESOURCE_t phich_resource_table[4]={oneSixth,half,one,two};
|
||||
int eutra_band = cfg->nfapi_config.rf_bands.rf_band[0];
|
||||
int dl_Bandwidth = cfg->rf_config.dl_channel_bandwidth.value;
|
||||
@@ -235,241 +233,37 @@ void phy_config_request(PHY_Config_t *phy_config) {
|
||||
int p_eNB = cfg->rf_config.tx_antenna_ports.value;
|
||||
uint32_t dl_CarrierFreq = cfg->nfapi_config.earfcn.value;
|
||||
|
||||
LOG_I(PHY,"Configuring MIB for instance %d, CCid %d : (band %d,N_RB_DL %d, N_RB_UL %d, Nid_cell %d,eNB_tx_antenna_ports %d,Ncp %d,DL freq %u,phich_config.resource %d, phich_config.duration %d)\n",
|
||||
Mod_id, CC_id, eutra_band, dl_Bandwidth, ul_Bandwidth, Nid_cell, p_eNB,Ncp,dl_CarrierFreq,
|
||||
cfg->phich_config.phich_resource.value,
|
||||
cfg->phich_config.phich_duration.value);
|
||||
LOG_I(PHY,"Configuring MIB for instance %d, CCid %d : (band %d,N_RB_DL %d, N_RB_UL %d, Nid_cell %d,gNB_tx_antenna_ports %d,Ncp %d,DL freq %u)\n",
|
||||
Mod_id, CC_id, eutra_band, dl_Bandwidth, ul_Bandwidth, Nid_cell, p_eNB,Ncp,dl_CarrierFreq );
|
||||
|
||||
AssertFatal(RC.eNB != NULL, "PHY instance pointer doesn't exist\n");
|
||||
AssertFatal(RC.eNB[Mod_id] != NULL, "PHY instance %d doesn't exist\n",Mod_id);
|
||||
AssertFatal(RC.eNB[Mod_id][CC_id] != NULL, "PHY instance %d, CCid %d doesn't exist\n",Mod_id,CC_id);
|
||||
AssertFatal(RC.gNB != NULL, "PHY instance pointer doesn't exist\n");
|
||||
AssertFatal(RC.gNB[Mod_id] != NULL, "PHY instance %d doesn't exist\n",Mod_id);
|
||||
AssertFatal(RC.gNB[Mod_id][CC_id] != NULL, "PHY instance %d, CCid %d doesn't exist\n",Mod_id,CC_id);
|
||||
|
||||
|
||||
if (RC.eNB[Mod_id][CC_id]->configured == 1)
|
||||
if (RC.gNB[Mod_id][CC_id]->configured == 1)
|
||||
{
|
||||
LOG_E(PHY,"Already eNB already configured, do nothing\n");
|
||||
return;
|
||||
}
|
||||
|
||||
RC.eNB[Mod_id][CC_id]->mac_enabled = 1;
|
||||
RC.gNB[Mod_id][CC_id]->mac_enabled = 1;
|
||||
|
||||
fp = &RC.eNB[Mod_id][CC_id]->frame_parms;
|
||||
|
||||
fp->N_RB_DL = dl_Bandwidth;
|
||||
fp->N_RB_UL = ul_Bandwidth;
|
||||
fp->Nid_cell = Nid_cell;
|
||||
fp->nushift = fp->Nid_cell%6;
|
||||
fp->eutra_band = eutra_band;
|
||||
fp->Ncp = Ncp;
|
||||
fp->Ncp_UL = Ncp;
|
||||
fp->nb_antenna_ports_eNB = p_eNB;
|
||||
fp = &RC.gNB[Mod_id][CC_id]->frame_parms;
|
||||
|
||||
fp->threequarter_fs = 0;
|
||||
|
||||
AssertFatal(cfg->phich_config.phich_resource.value<4, "Illegal phich_Resource\n");
|
||||
nr_init_frame_parms(fp,1);
|
||||
|
||||
fp->phich_config_common.phich_resource = phich_resource_table[cfg->phich_config.phich_resource.value];
|
||||
fp->phich_config_common.phich_duration = cfg->phich_config.phich_duration.value;
|
||||
// Note: "from_earfcn" has to be in a common library with MACRLC
|
||||
fp->dl_CarrierFreq = from_earfcn(eutra_band,dl_CarrierFreq);
|
||||
fp->ul_CarrierFreq = fp->dl_CarrierFreq - (get_uldl_offset(eutra_band)*100000);
|
||||
|
||||
fp->tdd_config = 0;
|
||||
fp->tdd_config_S = 0;
|
||||
|
||||
if (fp->dl_CarrierFreq==fp->ul_CarrierFreq)
|
||||
fp->frame_type = TDD;
|
||||
else
|
||||
fp->frame_type = FDD;
|
||||
|
||||
init_frame_parms(fp,1);
|
||||
init_lte_top(fp);
|
||||
|
||||
if (cfg->subframe_config.duplex_mode.value == 0) {
|
||||
fp->tdd_config = cfg->tdd_frame_structure_config.subframe_assignment.value;
|
||||
fp->tdd_config_S = cfg->tdd_frame_structure_config.special_subframe_patterns.value;
|
||||
fp->frame_type = TDD;
|
||||
}
|
||||
else {
|
||||
fp->frame_type = FDD;
|
||||
}
|
||||
|
||||
fp->prach_config_common.rootSequenceIndex = cfg->prach_config.root_sequence_index.value;
|
||||
LOG_I(PHY,"prach_config_common.rootSequenceIndex = %d\n",cfg->prach_config.root_sequence_index.value);
|
||||
|
||||
fp->prach_config_common.prach_Config_enabled=1;
|
||||
|
||||
fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex =cfg->prach_config.configuration_index.value;
|
||||
LOG_I(PHY,"prach_config_common.prach_ConfigInfo.prach_ConfigIndex = %d\n",cfg->prach_config.configuration_index.value);
|
||||
|
||||
fp->prach_config_common.prach_ConfigInfo.highSpeedFlag =cfg->prach_config.high_speed_flag.value;
|
||||
LOG_I(PHY,"prach_config_common.prach_ConfigInfo.highSpeedFlag = %d\n",cfg->prach_config.high_speed_flag.value);
|
||||
fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig =cfg->prach_config.zero_correlation_zone_configuration.value;
|
||||
LOG_I(PHY,"prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig = %d\n",cfg->prach_config.zero_correlation_zone_configuration.value);
|
||||
fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset =cfg->prach_config.frequency_offset.value;
|
||||
LOG_I(PHY,"prach_config_common.prach_ConfigInfo.prach_FreqOffset = %d\n",cfg->prach_config.frequency_offset.value);
|
||||
|
||||
init_prach_tables(839);
|
||||
compute_prach_seq(fp->prach_config_common.rootSequenceIndex,
|
||||
fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex,
|
||||
fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig,
|
||||
fp->prach_config_common.prach_ConfigInfo.highSpeedFlag,
|
||||
fp->frame_type,
|
||||
RC.eNB[Mod_id][CC_id]->X_u);
|
||||
|
||||
#ifdef Rel14
|
||||
fp->prach_emtc_config_common.prach_Config_enabled=1;
|
||||
|
||||
fp->prach_emtc_config_common.rootSequenceIndex = cfg->emtc_config.prach_catm_root_sequence_index.value;
|
||||
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.highSpeedFlag = cfg->emtc_config.prach_catm_high_speed_flag.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig = cfg->emtc_config.prach_catm_zero_correlation_zone_configuration.value;
|
||||
|
||||
// CE Level 3 parameters
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[3] = cfg->emtc_config.prach_ce_level_3_enable.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[3] = cfg->emtc_config.prach_ce_level_3_starting_subframe_periodicity.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[3] = cfg->emtc_config.prach_ce_level_3_number_of_repetitions_per_attempt.value;
|
||||
AssertFatal(fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[3]>=fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[3],
|
||||
"prach_starting_subframe_periodicity[3] < prach_numPetitionPerPreambleAttempt[3]\n");
|
||||
|
||||
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[3] = cfg->emtc_config.prach_ce_level_3_configuration_index.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[3] = cfg->emtc_config.prach_ce_level_3_frequency_offset.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_hopping_enable[3] = cfg->emtc_config.prach_ce_level_3_hopping_enable.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_hopping_offset[3] = cfg->emtc_config.prach_ce_level_3_hopping_offset.value;
|
||||
if (fp->prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[3] == 1)
|
||||
compute_prach_seq(fp->prach_emtc_config_common.rootSequenceIndex,
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[3],
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig,
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.highSpeedFlag,
|
||||
fp->frame_type,
|
||||
RC.eNB[Mod_id][CC_id]->X_u_br[3]);
|
||||
|
||||
// CE Level 2 parameters
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[2] = cfg->emtc_config.prach_ce_level_2_enable.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[2] = cfg->emtc_config.prach_ce_level_2_starting_subframe_periodicity.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[2] = cfg->emtc_config.prach_ce_level_2_number_of_repetitions_per_attempt.value;
|
||||
AssertFatal(fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[2]>=fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[2],
|
||||
"prach_starting_subframe_periodicity[2] < prach_numPetitionPerPreambleAttempt[2]\n");
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[2] = cfg->emtc_config.prach_ce_level_2_configuration_index.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[2] = cfg->emtc_config.prach_ce_level_2_frequency_offset.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_hopping_enable[2] = cfg->emtc_config.prach_ce_level_2_hopping_enable.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_hopping_offset[2] = cfg->emtc_config.prach_ce_level_2_hopping_offset.value;
|
||||
if (fp->prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[2] == 1)
|
||||
compute_prach_seq(fp->prach_emtc_config_common.rootSequenceIndex,
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[3],
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig,
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.highSpeedFlag,
|
||||
fp->frame_type,
|
||||
RC.eNB[Mod_id][CC_id]->X_u_br[2]);
|
||||
|
||||
// CE Level 1 parameters
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[1] = cfg->emtc_config.prach_ce_level_1_enable.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[1] = cfg->emtc_config.prach_ce_level_1_starting_subframe_periodicity.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[1] = cfg->emtc_config.prach_ce_level_1_number_of_repetitions_per_attempt.value;
|
||||
AssertFatal(fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[1]>=fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[1],
|
||||
"prach_starting_subframe_periodicity[1] < prach_numPetitionPerPreambleAttempt[1]\n");
|
||||
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[1] = cfg->emtc_config.prach_ce_level_1_configuration_index.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[1] = cfg->emtc_config.prach_ce_level_1_frequency_offset.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_hopping_enable[1] = cfg->emtc_config.prach_ce_level_1_hopping_enable.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_hopping_offset[1] = cfg->emtc_config.prach_ce_level_1_hopping_offset.value;
|
||||
if (fp->prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[1] == 1)
|
||||
compute_prach_seq(fp->prach_emtc_config_common.rootSequenceIndex,
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[3],
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig,
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.highSpeedFlag,
|
||||
fp->frame_type,
|
||||
RC.eNB[Mod_id][CC_id]->X_u_br[1]);
|
||||
|
||||
// CE Level 0 parameters
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[0] = cfg->emtc_config.prach_ce_level_0_enable.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[0] = cfg->emtc_config.prach_ce_level_0_starting_subframe_periodicity.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0] = cfg->emtc_config.prach_ce_level_0_number_of_repetitions_per_attempt.value;
|
||||
AssertFatal(fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[0]>=fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0],
|
||||
"prach_starting_subframe_periodicity[0] %d < prach_numPetitionPerPreambleAttempt[0] %d\n",
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[0],
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0]);
|
||||
#if 0
|
||||
AssertFatal(fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0] > 0,
|
||||
"prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0]==0\n");
|
||||
#else
|
||||
LOG_E(PHY,"***DJP*** removed assert on preamble fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0]:%d expecting >0 %s:%d\n\n\n", fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0], __FILE__, __LINE__);
|
||||
#endif
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[0] = cfg->emtc_config.prach_ce_level_0_configuration_index.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[0] = cfg->emtc_config.prach_ce_level_0_frequency_offset.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_hopping_enable[0] = cfg->emtc_config.prach_ce_level_0_hopping_enable.value;
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_hopping_offset[0] = cfg->emtc_config.prach_ce_level_0_hopping_offset.value;
|
||||
if (fp->prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[0] == 1)
|
||||
compute_prach_seq(fp->prach_emtc_config_common.rootSequenceIndex,
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[3],
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig,
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.highSpeedFlag,
|
||||
fp->frame_type,
|
||||
RC.eNB[Mod_id][CC_id]->X_u_br[0]);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
fp->pucch_config_common.deltaPUCCH_Shift = 1+cfg->pucch_config.delta_pucch_shift.value;
|
||||
fp->pucch_config_common.nRB_CQI = cfg->pucch_config.n_cqi_rb.value;
|
||||
fp->pucch_config_common.nCS_AN = cfg->pucch_config.n_an_cs.value;
|
||||
fp->pucch_config_common.n1PUCCH_AN = cfg->pucch_config.n1_pucch_an.value;
|
||||
|
||||
fp->pdsch_config_common.referenceSignalPower = cfg->rf_config.reference_signal_power.value;
|
||||
fp->pdsch_config_common.p_b = cfg->subframe_config.pb.value;
|
||||
|
||||
fp->pusch_config_common.n_SB = cfg->pusch_config.number_of_subbands.value;
|
||||
LOG_I(PHY,"pusch_config_common.n_SB = %d\n",fp->pusch_config_common.n_SB );
|
||||
|
||||
fp->pusch_config_common.hoppingMode = cfg->pusch_config.hopping_mode.value;
|
||||
LOG_I(PHY,"pusch_config_common.hoppingMode = %d\n",fp->pusch_config_common.hoppingMode);
|
||||
|
||||
fp->pusch_config_common.pusch_HoppingOffset = cfg->pusch_config.hopping_offset.value;
|
||||
LOG_I(PHY,"pusch_config_common.pusch_HoppingOffset = %d\n",fp->pusch_config_common.pusch_HoppingOffset);
|
||||
|
||||
fp->pusch_config_common.enable64QAM = 0;//radioResourceConfigCommon->pusch_ConfigCommon.pusch_ConfigBasic.enable64QAM;
|
||||
LOG_I(PHY,"pusch_config_common.enable64QAM = %d\n",fp->pusch_config_common.enable64QAM );
|
||||
fp->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = 0;
|
||||
fp->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = 0;
|
||||
if (cfg->uplink_reference_signal_config.uplink_rs_hopping.value == 1)
|
||||
fp->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = 1;
|
||||
if (cfg->uplink_reference_signal_config.uplink_rs_hopping.value == 2)
|
||||
fp->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = 1;
|
||||
LOG_I(PHY,"pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = %d\n",fp->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled);
|
||||
fp->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH = cfg->uplink_reference_signal_config.group_assignment.value;
|
||||
LOG_I(PHY,"pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH = %d\n",fp->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH);
|
||||
|
||||
LOG_I(PHY,"pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = %d\n",fp->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled);
|
||||
|
||||
fp->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift = dmrs1_tab[cfg->uplink_reference_signal_config.cyclic_shift_1_for_drms.value];
|
||||
LOG_I(PHY,"pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift = %d\n",fp->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift);
|
||||
|
||||
init_ul_hopping(fp);
|
||||
|
||||
fp->soundingrs_ul_config_common.enabled_flag = 0;// 1; Don't know how to turn this off in NFAPI
|
||||
fp->soundingrs_ul_config_common.srs_BandwidthConfig = cfg->srs_config.bandwidth_configuration.value;
|
||||
fp->soundingrs_ul_config_common.srs_SubframeConfig = cfg->srs_config.srs_subframe_configuration.value;
|
||||
fp->soundingrs_ul_config_common.ackNackSRS_SimultaneousTransmission = cfg->srs_config.srs_acknack_srs_simultaneous_transmission.value;
|
||||
fp->soundingrs_ul_config_common.srs_MaxUpPts = cfg->srs_config.max_up_pts.value;
|
||||
|
||||
fp->num_MBSFN_config = 0;
|
||||
|
||||
init_ncs_cell(fp,RC.eNB[Mod_id][CC_id]->ncs_cell);
|
||||
|
||||
|
||||
init_ul_hopping(fp);
|
||||
RC.eNB[Mod_id][CC_id]->configured = 1;
|
||||
LOG_I(PHY,"eNB %d/%d configured\n",Mod_id,CC_id);
|
||||
}
|
||||
|
||||
*/
|
||||
RC.gNB[Mod_id][CC_id]->configured = 1;
|
||||
LOG_I(PHY,"gNB %d/%d configured\n",Mod_id,CC_id);
|
||||
}*/
|
||||
|
||||
|
||||
void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
|
||||
{
|
||||
// NR_DL_FRAME_PARMS* const fp = &gNB->frame_parms;
|
||||
nfapi_config_request_t *cfg = gNB->gNB_config;
|
||||
nfapi_config_request_t *cfg = &gNB->gNB_config;
|
||||
NR_gNB_COMMON* const common_vars = &gNB->common_vars;
|
||||
LTE_eNB_PUSCH** const pusch_vars = gNB->pusch_vars;
|
||||
LTE_eNB_SRS* const srs_vars = gNB->srs_vars;
|
||||
@@ -536,3 +330,27 @@ void install_schedule_handlers(IF_Module_t *if_inst)
|
||||
if_inst->PHY_config_req = phy_config_request;
|
||||
if_inst->schedule_response = schedule_response;
|
||||
}*/
|
||||
|
||||
/// this function is a temporary addition for NR configuration
|
||||
void nr_phy_config_request(PHY_VARS_gNB *gNB)
|
||||
{
|
||||
NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
|
||||
nfapi_config_request_t *gNB_config = &gNB->gNB_config;
|
||||
|
||||
//overwrite for new NR parameters
|
||||
gNB_config->subframe_config.numerology_index_mu.value = 1;
|
||||
gNB_config->rf_config.dl_channel_bandwidth.value = 106;
|
||||
gNB_config->rf_config.ul_channel_bandwidth.value = 106;
|
||||
gNB_config->sch_config.half_frame_index = 0;
|
||||
gNB_config->sch_config.ssb_subcarrier_offset.value = 0;
|
||||
|
||||
|
||||
gNB->mac_enabled = 1;
|
||||
|
||||
fp->threequarter_fs = 0;
|
||||
|
||||
nr_init_frame_parms(fp,1);
|
||||
|
||||
gNB->configured = 1;
|
||||
LOG_I(PHY,"gNB configured\n");
|
||||
}
|
||||
|
||||
+1
-1
@@ -1929,7 +1929,7 @@ typedef struct PHY_VARS_gNB_s {
|
||||
int rx_total_gain_dB;
|
||||
int (*start_if)(struct RU_t_s *ru,struct PHY_VARS_gNB_s *gNB);
|
||||
uint8_t local_flag;
|
||||
nfapi_config_request_t *gNB_config;
|
||||
nfapi_config_request_t gNB_config;
|
||||
NR_DL_FRAME_PARMS frame_parms;
|
||||
PHY_MEASUREMENTS_gNB measurements;
|
||||
IF_Module_t *if_inst;
|
||||
|
||||
@@ -43,14 +43,14 @@ extern uint8_t nfapi_mode;
|
||||
void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame, int subframe) {
|
||||
|
||||
NR_DL_FRAME_PARMS *fp=&gNB->frame_parms;
|
||||
nfapi_config_request_t *cfg = gNB->gNB_config;
|
||||
nfapi_config_request_t *cfg = &gNB->gNB_config;
|
||||
int **txdataF = gNB->common_vars.txdataF;
|
||||
uint8_t *pbch_pdu=&gNB->pbch_pdu[0];
|
||||
|
||||
LOG_D(PHY,"common_signal_procedures: frame %d, subframe %d\n",frame,subframe);
|
||||
|
||||
int ssb_start_symbol = nr_get_ssb_start_symbol(cfg, fp);
|
||||
nr_set_ssb_first_subcarrier(cfg);
|
||||
//nr_set_ssb_first_subcarrier(cfg);
|
||||
|
||||
if (subframe == (cfg->sch_config.half_frame_index)? 0:5)
|
||||
{
|
||||
@@ -69,7 +69,7 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
|
||||
int subframe=proc->subframe_tx;
|
||||
|
||||
NR_DL_FRAME_PARMS *fp=&gNB->frame_parms;
|
||||
nfapi_config_request_t *cfg = gNB->gNB_config;
|
||||
nfapi_config_request_t *cfg = &gNB->gNB_config;
|
||||
|
||||
int offset = gNB->CC_id;
|
||||
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
Active_eNBs = ( "gNB-Eurecom-LTEBox");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
eNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
eNB_ID = 0xe00;
|
||||
|
||||
cell_type = "CELL_MACRO_ENB";
|
||||
|
||||
eNB_name = "gNB-Eurecom-LTEBox";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = "1";
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "93";
|
||||
|
||||
tr_s_preference = "local_mac"
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
component_carriers = (
|
||||
{
|
||||
node_function = "3GPP_gNODEB";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "FDD";
|
||||
tdd_config = 3;
|
||||
tdd_config_s = 0;
|
||||
prefix_type = "NORMAL";
|
||||
eutra_band = 22;
|
||||
downlink_frequency = 3510000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 100;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
pbch_repetition = "FALSE";
|
||||
prach_root = 0;
|
||||
prach_config_index = 0;
|
||||
prach_high_speed = "DISABLE";
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -27;
|
||||
pdsch_p_b = 0;
|
||||
pusch_n_SB = 1;
|
||||
pusch_enable64QAM = "DISABLE";
|
||||
pusch_hoppingMode = "interSubFrame";
|
||||
pusch_hoppingOffset = 0;
|
||||
pusch_groupHoppingEnabled = "ENABLE";
|
||||
pusch_groupAssignment = 0;
|
||||
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||
pusch_nDMRS1 = 1;
|
||||
phich_duration = "NORMAL";
|
||||
phich_resource = "ONESIXTH";
|
||||
srs_enable = "DISABLE";
|
||||
/* srs_BandwidthConfig =;
|
||||
srs_SubframeConfig =;
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -104;
|
||||
msg3_delta_Preamble = 6;
|
||||
pucch_deltaF_Format1 = "deltaF2";
|
||||
pucch_deltaF_Format1b = "deltaF3";
|
||||
pucch_deltaF_Format2 = "deltaF0";
|
||||
pucch_deltaF_Format2a = "deltaF0";
|
||||
pucch_deltaF_Format2b = "deltaF0";
|
||||
|
||||
rach_numberOfRA_Preambles = 64;
|
||||
rach_preamblesGroupAConfig = "DISABLE";
|
||||
/*
|
||||
rach_sizeOfRA_PreamblesGroupA = ;
|
||||
rach_messageSizeGroupA = ;
|
||||
rach_messagePowerOffsetGroupB = ;
|
||||
*/
|
||||
rach_powerRampingStep = 4;
|
||||
rach_preambleInitialReceivedTargetPower = -108;
|
||||
rach_preambleTransMax = 10;
|
||||
rach_raResponseWindowSize = 10;
|
||||
rach_macContentionResolutionTimer = 48;
|
||||
rach_maxHARQ_Msg3Tx = 4;
|
||||
|
||||
pcch_default_PagingCycle = 128;
|
||||
pcch_nB = "oneT";
|
||||
bcch_modificationPeriodCoeff = 2;
|
||||
ue_TimersAndConstants_t300 = 1000;
|
||||
ue_TimersAndConstants_t301 = 1000;
|
||||
ue_TimersAndConstants_t310 = 1000;
|
||||
ue_TimersAndConstants_t311 = 10000;
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
ue_TransmissionMode = 1;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
srb1_parameters :
|
||||
{
|
||||
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||
timer_poll_retransmit = 80;
|
||||
|
||||
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
|
||||
timer_reordering = 35;
|
||||
|
||||
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
|
||||
timer_status_prohibit = 0;
|
||||
|
||||
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
|
||||
poll_pdu = 4;
|
||||
|
||||
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
|
||||
poll_byte = 99999;
|
||||
|
||||
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
|
||||
max_retx_threshold = 4;
|
||||
}
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "192.168.12.26";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
}
|
||||
);
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.59/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.59/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
att_tx = 0
|
||||
att_rx = 0;
|
||||
bands = [7];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 125;
|
||||
eNB_instances = [0];
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
NETWORK_CONTROLLER :
|
||||
{
|
||||
FLEXRAN_ENABLED = "no";
|
||||
FLEXRAN_INTERFACE_NAME = "lo";
|
||||
FLEXRAN_IPV4_ADDRESS = "127.0.0.1";
|
||||
FLEXRAN_PORT = 2210;
|
||||
FLEXRAN_CACHE = "/mnt/oai_agent_cache";
|
||||
FLEXRAN_AWAIT_RECONF = "no";
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
global_log_verbosity ="medium";
|
||||
hw_log_level ="info";
|
||||
hw_log_verbosity ="medium";
|
||||
phy_log_level ="info";
|
||||
phy_log_verbosity ="medium";
|
||||
mac_log_level ="info";
|
||||
mac_log_verbosity ="high";
|
||||
rlc_log_level ="info";
|
||||
rlc_log_verbosity ="medium";
|
||||
pdcp_log_level ="info";
|
||||
pdcp_log_verbosity ="medium";
|
||||
rrc_log_level ="info";
|
||||
rrc_log_verbosity ="medium";
|
||||
};
|
||||
|
||||
+12
-11
@@ -827,7 +827,7 @@ void init_eNB_afterRU(void) {
|
||||
// map antennas and PRACH signals to gNB RX
|
||||
if (0) AssertFatal(gNB->num_RU>0,"Number of RU attached to gNB %d is zero\n",gNB->Mod_id);
|
||||
LOG_I(PHY,"Mapping RX ports from %d RUs to gNB %d\n",gNB->num_RU,gNB->Mod_id);
|
||||
gNB->gNB_config->rf_config.tx_antenna_ports.value = 0;
|
||||
gNB->gNB_config.rf_config.tx_antenna_ports.value = 0;
|
||||
|
||||
//LOG_I(PHY,"Overwriting gNB->prach_vars.rxsigF[0]:%p\n", gNB->prach_vars.rxsigF[0]);
|
||||
|
||||
@@ -836,7 +836,7 @@ void init_eNB_afterRU(void) {
|
||||
LOG_I(PHY,"gNB->num_RU:%d\n", gNB->num_RU);
|
||||
|
||||
for (ru_id=0,aa=0;ru_id<gNB->num_RU;ru_id++) {
|
||||
gNB->gNB_config->rf_config.tx_antenna_ports.value += gNB->RU_list[ru_id]->nb_rx;
|
||||
gNB->gNB_config.rf_config.tx_antenna_ports.value += gNB->RU_list[ru_id]->nb_rx;
|
||||
|
||||
AssertFatal(gNB->RU_list[ru_id]->common.rxdataF!=NULL,
|
||||
"RU %d : common.rxdataF is NULL\n",
|
||||
@@ -859,29 +859,29 @@ void init_eNB_afterRU(void) {
|
||||
* In monolithic mode, we come here with nb_antennas_rx == 0
|
||||
* (not tested in other modes).
|
||||
*/
|
||||
if (gNB->gNB_config->rf_config.tx_antenna_ports.value < 1)
|
||||
if (gNB->gNB_config.rf_config.tx_antenna_ports.value < 1)
|
||||
{
|
||||
LOG_I(PHY, "%s() ************* DJP ***** gNB->gNB_config->rf_config.tx_antenna_ports:%d - GOING TO HARD CODE TO 1", __FUNCTION__, gNB->gNB_config->rf_config.tx_antenna_ports.value);
|
||||
gNB->gNB_config->rf_config.tx_antenna_ports.value = 1;
|
||||
LOG_I(PHY, "%s() ************* DJP ***** gNB->gNB_config.rf_config.tx_antenna_ports:%d - GOING TO HARD CODE TO 1", __FUNCTION__, gNB->gNB_config.rf_config.tx_antenna_ports.value);
|
||||
gNB->gNB_config.rf_config.tx_antenna_ports.value = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
//LOG_I(PHY," Delete code\n");
|
||||
}
|
||||
|
||||
if (gNB->gNB_config->rf_config.tx_antenna_ports.value < 1)
|
||||
if (gNB->gNB_config.rf_config.tx_antenna_ports.value < 1)
|
||||
{
|
||||
LOG_I(PHY, "%s() ************* DJP ***** gNB->gNB_config->rf_config.tx_antenna_ports:%d - GOING TO HARD CODE TO 1", __FUNCTION__, gNB->gNB_config->rf_config.tx_antenna_ports.value);
|
||||
gNB->gNB_config->rf_config.tx_antenna_ports.value = 1;
|
||||
LOG_I(PHY, "%s() ************* DJP ***** gNB->gNB_config.rf_config.tx_antenna_ports:%d - GOING TO HARD CODE TO 1", __FUNCTION__, gNB->gNB_config.rf_config.tx_antenna_ports.value);
|
||||
gNB->gNB_config.rf_config.tx_antenna_ports.value = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
//LOG_I(PHY," Delete code\n");
|
||||
}
|
||||
|
||||
AssertFatal(gNB->gNB_config->rf_config.tx_antenna_ports.value >0,
|
||||
"inst %d, CC_id %d : nb_antennas_rx %d\n",inst,CC_id,gNB->gNB_config->rf_config.tx_antenna_ports.value);
|
||||
LOG_I(PHY,"inst %d, CC_id %d : nb_antennas_rx %d\n",inst,CC_id,gNB->gNB_config->rf_config.tx_antenna_ports.value);
|
||||
AssertFatal(gNB->gNB_config.rf_config.tx_antenna_ports.value >0,
|
||||
"inst %d, CC_id %d : nb_antennas_rx %d\n",inst,CC_id,gNB->gNB_config.rf_config.tx_antenna_ports.value);
|
||||
LOG_I(PHY,"inst %d, CC_id %d : nb_antennas_rx %d\n",inst,CC_id,gNB->gNB_config.rf_config.tx_antenna_ports.value);
|
||||
/// Transport init necessary for NR synchro
|
||||
//init_transport(gNB);
|
||||
//init_precoding_weights(RC.gNB[inst][CC_id]);
|
||||
@@ -932,6 +932,7 @@ void init_gNB(int single_thread_flag,int wait_for_sync) {
|
||||
AssertFatal((gNB->if_inst = IF_Module_init(inst))!=NULL,"Cannot register interface");
|
||||
gNB->if_inst->schedule_response = schedule_response;
|
||||
gNB->if_inst->PHY_config_req = phy_config_request;
|
||||
nr_phy_config_request(gNB);
|
||||
memset((void*)&gNB->UL_INFO,0,sizeof(gNB->UL_INFO));
|
||||
memset((void*)&gNB->Sched_INFO,0,sizeof(gNB->Sched_INFO));
|
||||
LOG_I(PHY,"Setting indication lists\n");
|
||||
|
||||
@@ -590,7 +590,7 @@ void fh_if5_north_asynch_in(RU_t *ru,int *frame,int *subframe) {
|
||||
void fh_if4p5_north_asynch_in(RU_t *ru,int *frame,int *subframe) {
|
||||
|
||||
NR_DL_FRAME_PARMS *fp = &ru->nr_frame_parms;
|
||||
nfapi_config_request_t *cfg = ru->gNB_list[0]->gNB_config;
|
||||
nfapi_config_request_t *cfg = &ru->gNB_list[0]->gNB_config;
|
||||
RU_proc_t *proc = &ru->proc;
|
||||
|
||||
uint16_t packet_type;
|
||||
@@ -772,7 +772,7 @@ void tx_rf(RU_t *ru) {
|
||||
|
||||
RU_proc_t *proc = &ru->proc;
|
||||
NR_DL_FRAME_PARMS *fp = &ru->nr_frame_parms;
|
||||
nfapi_config_request_t *cfg = ru->gNB_list[0]->gNB_config;
|
||||
nfapi_config_request_t *cfg = &ru->gNB_list[0]->gNB_config;
|
||||
void *txp[ru->nb_tx];
|
||||
unsigned int txs;
|
||||
int i;
|
||||
@@ -883,7 +883,7 @@ static void* ru_thread_asynch_rxtx( void* param ) {
|
||||
if (ru->fh_south_asynch_in) ru->fh_south_asynch_in(ru,&frame,&subframe);
|
||||
// asynchronous receive from north (RRU IF4/IF5)
|
||||
else if (ru->fh_north_asynch_in) {
|
||||
if (nr_subframe_select(ru->gNB_list[0]->gNB_config,subframe)!=SF_UL)
|
||||
if (nr_subframe_select(&ru->gNB_list[0]->gNB_config,subframe)!=SF_UL)
|
||||
ru->fh_north_asynch_in(ru,&frame,&subframe);
|
||||
}
|
||||
else AssertFatal(1==0,"Unknown function in ru_thread_asynch_rxtx\n");
|
||||
@@ -1165,7 +1165,7 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) {
|
||||
int i;
|
||||
|
||||
NR_DL_FRAME_PARMS *fp = &ru->nr_frame_parms;
|
||||
nfapi_config_request_t *gNB_config = ru->gNB_list[0]->gNB_config; //tmp index
|
||||
nfapi_config_request_t *gNB_config = &ru->gNB_list[0]->gNB_config; //tmp index
|
||||
openair0_config_t *cfg = &ru->openair0_cfg;
|
||||
int N_RB = gNB_config->rf_config.dl_channel_bandwidth.value;
|
||||
int mu = gNB_config->subframe_config.numerology_index_mu.value;
|
||||
@@ -1827,7 +1827,7 @@ void configure_ru(int idx,
|
||||
RU_t *ru = RC.ru[idx];
|
||||
RRU_config_t *config = (RRU_config_t *)arg;
|
||||
RRU_capabilities_t *capabilities = (RRU_capabilities_t*)arg;
|
||||
nfapi_config_request_t *gNB_config = ru->gNB_list[0]->gNB_config;
|
||||
nfapi_config_request_t *gNB_config = &ru->gNB_list[0]->gNB_config;
|
||||
int ret;
|
||||
|
||||
LOG_I(PHY, "Received capabilities from RRU %d\n",idx);
|
||||
@@ -1862,7 +1862,7 @@ void configure_ru(int idx,
|
||||
LOG_I(PHY,"REMOTE_IF4p5: prach_FrequOffset %d, prach_ConfigIndex %d\n",
|
||||
config->prach_FreqOffset[0],config->prach_ConfigIndex[0]);*/
|
||||
|
||||
nr_init_frame_parms(ru->gNB_list[0]->gNB_config, &ru->nr_frame_parms);
|
||||
nr_init_frame_parms(&ru->gNB_list[0]->gNB_config, &ru->nr_frame_parms);
|
||||
phy_init_RU(ru);
|
||||
}
|
||||
|
||||
@@ -1871,7 +1871,7 @@ void configure_rru(int idx,
|
||||
|
||||
RRU_config_t *config = (RRU_config_t *)arg;
|
||||
RU_t *ru = RC.ru[idx];
|
||||
nfapi_config_request_t *gNB_config = ru->gNB_list[0]->gNB_config;
|
||||
nfapi_config_request_t *gNB_config = &ru->gNB_list[0]->gNB_config;
|
||||
|
||||
ru->nr_frame_parms.eutra_band = config->band_list[0];
|
||||
ru->nr_frame_parms.dl_CarrierFreq = config->tx_freq[0];
|
||||
|
||||
@@ -689,8 +689,8 @@ void init_openair0(void) {
|
||||
openair0_cfg[card].duplex_mode = duplex_mode_FDD;
|
||||
|
||||
printf("HW: Configuring card %d, nb_antennas_tx/rx %d/%d\n",card,
|
||||
RC.gNB[0][0]->gNB_config->rf_config.tx_antenna_ports.value,
|
||||
RC.gNB[0][0]->gNB_config->rf_config.tx_antenna_ports.value );
|
||||
RC.gNB[0][0]->gNB_config.rf_config.tx_antenna_ports.value,
|
||||
RC.gNB[0][0]->gNB_config.rf_config.tx_antenna_ports.value );
|
||||
openair0_cfg[card].Mod_id = 0;
|
||||
|
||||
openair0_cfg[card].num_rb_dl=config[0]->rf_config.dl_channel_bandwidth.value;
|
||||
@@ -698,8 +698,8 @@ void init_openair0(void) {
|
||||
openair0_cfg[card].clock_source = clock_source;
|
||||
|
||||
|
||||
openair0_cfg[card].tx_num_channels=min(2,RC.gNB[0][0]->gNB_config->rf_config.tx_antenna_ports.value );
|
||||
openair0_cfg[card].rx_num_channels=min(2,RC.gNB[0][0]->gNB_config->rf_config.tx_antenna_ports.value );
|
||||
openair0_cfg[card].tx_num_channels=min(2,RC.gNB[0][0]->gNB_config.rf_config.tx_antenna_ports.value );
|
||||
openair0_cfg[card].rx_num_channels=min(2,RC.gNB[0][0]->gNB_config.rf_config.tx_antenna_ports.value );
|
||||
|
||||
for (i=0; i<4; i++) {
|
||||
|
||||
@@ -760,7 +760,7 @@ void wait_gNBs(void) {
|
||||
|
||||
for (j=0;j<RC.nb_L1_CC[i];j++) {
|
||||
if (RC.gNB[i][j]->configured==0) {
|
||||
waiting=0; //skip gNB configuration check
|
||||
waiting=1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user