fixing prach configurations
This commit is contained in:
@@ -192,7 +192,11 @@ void phy_config_request(PHY_Config_t *phy_config) {
|
||||
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] < prach_numPetitionPerPreambleAttempt[0]\n");
|
||||
"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]);
|
||||
AssertFatal(fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0] > 0,
|
||||
"prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0]==0\n");
|
||||
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;
|
||||
|
||||
@@ -1117,6 +1117,7 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
uint8_t restricted_set;
|
||||
uint8_t n_ra_prb;
|
||||
|
||||
int frame;
|
||||
int subframe;
|
||||
int16_t *prachF=NULL;
|
||||
int16_t **rxsigF=NULL;
|
||||
@@ -1152,9 +1153,9 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
#ifdef Rel14
|
||||
int prach_ifft_cnt=0;
|
||||
#endif
|
||||
#ifdef PRACH_DEBUG
|
||||
//#ifdef PRACH_DEBUG
|
||||
int en,en0=0;
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
if (ru) {
|
||||
fp = &ru->frame_parms;
|
||||
@@ -1204,17 +1205,27 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
#ifdef Rel14
|
||||
if (br_flag == 1) {
|
||||
prach_ifftp = eNB->prach_vars_br.prach_ifft[ce_level];
|
||||
frame = eNB->proc.frame_prach_br;
|
||||
subframe = eNB->proc.subframe_prach_br;
|
||||
prachF = eNB->prach_vars_br.prachF;
|
||||
rxsigF = eNB->prach_vars_br.rxsigF;
|
||||
if ((frame&1023) < 20) LOG_I(PHY,"PRACH (eNB) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d, rootSequenceIndex %d, repetition number %d,numRepetitionsPrePreambleAttempt %d\n",
|
||||
br_flag,ce_level,frame,subframe,
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],
|
||||
prach_ConfigIndex,rootSequenceIndex,
|
||||
eNB->prach_vars_br.repetition_number[ce_level],
|
||||
fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[ce_level]);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
prach_ifftp = eNB->prach_vars.prach_ifft[0];
|
||||
frame = eNB->proc.frame_prach;
|
||||
subframe = eNB->proc.subframe_prach;
|
||||
prachF = eNB->prach_vars.prachF;
|
||||
rxsigF = eNB->prach_vars.rxsigF;
|
||||
if ((frame&1023) < 20) LOG_I(PHY,"PRACH (eNB) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d , rootSequenceIndex %d\n",
|
||||
subframe,fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex,rootSequenceIndex);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -1222,16 +1233,17 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
if (br_flag == 1) {
|
||||
subframe = ru->proc.subframe_prach_br;
|
||||
rxsigF = ru->prach_rxsigF_br[ce_level];
|
||||
LOG_D(PHY,"PRACH (RU) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
|
||||
subframe,fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],prach_ConfigIndex);
|
||||
if ((frame&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
|
||||
br_flag,ce_level,frame,subframe,fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],prach_ConfigIndex);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
subframe = ru->proc.subframe_prach;
|
||||
rxsigF = ru->prach_rxsigF;
|
||||
LOG_D(PHY,"PRACH (RU) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
|
||||
if ((frame&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
|
||||
subframe,fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1241,9 +1253,9 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
for (aa=0; aa<nb_rx; aa++) {
|
||||
if (ru->if_south == LOCAL_RF) { // set the time-domain signal if we have to use it in this node
|
||||
prach[aa] = (int16_t*)&ru->common.rxdata[aa][(subframe*fp->samples_per_tti)-ru->N_TA_offset];
|
||||
#ifdef PRACH_DEBUG
|
||||
LOG_D(PHY,"RU %d, subframe %d, : prach %p (energy %d)\n",ru->idx,subframe,prach[aa],dB_fixed(en0=signal_energy(prach[aa],fp->samples_per_tti)));
|
||||
#endif
|
||||
//#ifdef PRACH_DEBUG
|
||||
if ((frame&1023) < 20) LOG_I(PHY,"RU %d, br_flag %d ce_level %d frame %d subframe %d, : prach %p (energy %d)\n",ru->idx,br_flag,ce_level,frame,subframe,prach[aa],dB_fixed(en0=signal_energy(prach[aa],fp->samples_per_tti)));
|
||||
//#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1467,11 +1479,11 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
} else if (eNB!=NULL) {
|
||||
|
||||
|
||||
#if 0
|
||||
//#if 0
|
||||
en = dB_fixed(signal_energy(&rxsigF[0][0],840));
|
||||
/*if (en>60)*/
|
||||
printf("PRACH: Frame %d, Subframe %d => %d dB\n",eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
|
||||
#endif
|
||||
if ((frame&1023) < 20) LOG_I(PHY,"PRACH (br_flag %d,ce_level %d): Frame %d, Subframe %d => %d dB\n",br_flag,ce_level,eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
|
||||
//#endif
|
||||
|
||||
}
|
||||
|
||||
@@ -1506,6 +1518,9 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
|
||||
*max_preamble_energy=0;
|
||||
for (preamble_index=0 ; preamble_index<64 ; preamble_index++) {
|
||||
|
||||
if (en>60) LOG_I(PHY,"frame %d, subframe %d : Trying preamble %d (br_flag %d)\n",frame,subframe,preamble_index,br_flag);
|
||||
|
||||
if (restricted_set == 0) {
|
||||
// This is the relative offset in the root sequence table (5.7.2-4 from 36.211) for the given preamble index
|
||||
preamble_offset = ((NCS==0)? preamble_index : (preamble_index/(N_ZC/NCS)));
|
||||
@@ -1588,9 +1603,10 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
}
|
||||
|
||||
// Compute DFT of RX signal (conjugate input, results in conjugate output) for each new rootSequenceIndex
|
||||
#ifdef PRACH_DEBUG
|
||||
LOG_I(PHY,"preamble index %d: offset %d, preamble shift %d\n",preamble_index,preamble_offset,preamble_shift);
|
||||
#endif
|
||||
//#ifdef PRACH_DEBUG
|
||||
if (en>60) LOG_I(PHY,"frame %d, subframe %d : preamble index %d: offset %d, preamble shift %d (br_flag %d, en %d)\n",
|
||||
frame,subframe,preamble_index,preamble_offset,preamble_shift,br_flag,en);
|
||||
//#endif
|
||||
log2_ifft_size = 10;
|
||||
fft_size = 6144;
|
||||
|
||||
@@ -1678,6 +1694,8 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
eNB->frame_parms.prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[ce_level]))
|
||||
#endif
|
||||
{
|
||||
if (en>60) LOG_I(PHY,"frame %d, subframe %d: Checking for peak in time-domain (br_flag %d, en %d)\n",frame,subframe,br_flag,en);
|
||||
|
||||
preamble_shift2 = ((preamble_shift==0) ? 0 : ((preamble_shift<<log2_ifft_size)/N_ZC));
|
||||
|
||||
|
||||
@@ -1689,8 +1707,10 @@ void rx_prach0(PHY_VARS_eNB *eNB,
|
||||
*max_preamble_energy = levdB;
|
||||
*max_preamble_delay = ((i*fft_size)>>log2_ifft_size)*update_TA/update_TA2;
|
||||
*max_preamble = preamble_index;
|
||||
if (en>60) LOG_I(PHY,"frame %d, subframe %d : max_preamble_energy %d, max_preamble_delay %d, max_preamble %d (br_flag %d, en %d)\n",frame,subframe,*max_preamble_energy,*max_preamble_delay,*max_preamble,br_flag,en);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}// preamble_index
|
||||
|
||||
|
||||
@@ -715,7 +715,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
|
||||
int i;
|
||||
|
||||
if (frame < 20) {
|
||||
LOG_I(PHY,
|
||||
LOG_D(PHY,
|
||||
"[eNB %"PRIu8"][PDSCH %"PRIx16"/%"PRIu8"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"PRIu16", pdsch_start %d, G %d, nb_rb %"PRIu16", rb0 %x, rb1 %x, TBS %"PRIu16", pmi_alloc %"PRIx64", rv %"PRIu8" (round %"PRIu8")\n",
|
||||
eNB->Mod_id, dlsch->rnti,harq_pid,
|
||||
frame, subframe, input_buffer_length, dlsch_harq->pdsch_start,
|
||||
@@ -735,8 +735,6 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
|
||||
pmi2hex_2Ar1(dlsch_harq->pmi_alloc),
|
||||
dlsch_harq->rvidx,
|
||||
dlsch_harq->round);
|
||||
for (i=0;i<dlsch_harq->TBS>>3;i++) printf("%x.",dlsch_harq->pdu[i]);
|
||||
printf("\n");
|
||||
}
|
||||
#if defined(MESSAGE_CHART_GENERATOR_PHY)
|
||||
MSC_LOG_TX_MESSAGE(
|
||||
@@ -2018,6 +2016,8 @@ void prach_procedures(PHY_VARS_eNB *eNB,
|
||||
}
|
||||
}
|
||||
|
||||
if ((frame&1023) < 20) LOG_I(PHY,"Frame %d, subframe %d: Running rx_prach (br_flag %d)\n",
|
||||
frame,subframe,br_flag);
|
||||
rx_prach(eNB,
|
||||
eNB->RU_list[0],
|
||||
&max_preamble[0],
|
||||
|
||||
@@ -2776,7 +2776,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
if (config_setting_lookup_int(prach_parameters_ce_r13, ENB_CONFIG_STRING_PRACH_STARTING_SUBFRAME_R13, &prach_StartingSubframe_r13))
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).prach_StartingSubframe_r13[j][prach_parameters_index] = calloc(1, sizeof(long));
|
||||
RRC_CONFIGURATION_REQ (msg_p).prach_StartingSubframe_r13[j][prach_parameters_index] = prach_StartingSubframe_r13;
|
||||
*RRC_CONFIGURATION_REQ (msg_p).prach_StartingSubframe_r13[j][prach_parameters_index] = prach_StartingSubframe_r13;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -339,15 +339,16 @@ void config_sib2(int Mod_idP,
|
||||
cfg->emtc_config.prach_ce_level_1_enable.value=0;
|
||||
cfg->emtc_config.prach_ce_level_2_enable.value=0;
|
||||
cfg->emtc_config.prach_ce_level_3_enable.value=0;
|
||||
|
||||
switch (prach_ParametersListCE_r13->list.count) {
|
||||
case 4:
|
||||
p=prach_ParametersListCE_r13->list.array[3];
|
||||
cfg->emtc_config.prach_ce_level_3_enable.value = 1;
|
||||
cfg->emtc_config.prach_ce_level_3_configuration_index.value = p->prach_ConfigIndex_r13;
|
||||
cfg->emtc_config.prach_ce_level_3_frequency_offset.value = p->prach_FreqOffset_r13;
|
||||
cfg->emtc_config.prach_ce_level_3_number_of_repetitions_per_attempt.value = p->numRepetitionPerPreambleAttempt_r13;
|
||||
cfg->emtc_config.prach_ce_level_3_number_of_repetitions_per_attempt.value = 1<<p->numRepetitionPerPreambleAttempt_r13;
|
||||
if (p->prach_StartingSubframe_r13)
|
||||
cfg->emtc_config.prach_ce_level_3_starting_subframe_periodicity.value = *p->prach_StartingSubframe_r13;
|
||||
cfg->emtc_config.prach_ce_level_3_starting_subframe_periodicity.value = 2<<*p->prach_StartingSubframe_r13;
|
||||
cfg->emtc_config.prach_ce_level_3_hopping_enable.value = p->prach_HoppingConfig_r13;
|
||||
cfg->emtc_config.prach_ce_level_3_hopping_offset.value = cfg->rf_config.ul_channel_bandwidth.value-6;
|
||||
case 3:
|
||||
@@ -355,9 +356,9 @@ void config_sib2(int Mod_idP,
|
||||
cfg->emtc_config.prach_ce_level_2_enable.value = 1;
|
||||
cfg->emtc_config.prach_ce_level_2_configuration_index.value = p->prach_ConfigIndex_r13;
|
||||
cfg->emtc_config.prach_ce_level_2_frequency_offset.value = p->prach_FreqOffset_r13;
|
||||
cfg->emtc_config.prach_ce_level_2_number_of_repetitions_per_attempt.value = p->numRepetitionPerPreambleAttempt_r13;
|
||||
cfg->emtc_config.prach_ce_level_2_number_of_repetitions_per_attempt.value = 1<<p->numRepetitionPerPreambleAttempt_r13;
|
||||
if (p->prach_StartingSubframe_r13)
|
||||
cfg->emtc_config.prach_ce_level_2_starting_subframe_periodicity.value = *p->prach_StartingSubframe_r13;
|
||||
cfg->emtc_config.prach_ce_level_2_starting_subframe_periodicity.value = 2<<*p->prach_StartingSubframe_r13;
|
||||
cfg->emtc_config.prach_ce_level_2_hopping_enable.value = p->prach_HoppingConfig_r13;
|
||||
cfg->emtc_config.prach_ce_level_2_hopping_offset.value = cfg->rf_config.ul_channel_bandwidth.value-6;
|
||||
case 2:
|
||||
@@ -365,9 +366,9 @@ void config_sib2(int Mod_idP,
|
||||
cfg->emtc_config.prach_ce_level_1_enable.value = 1;
|
||||
cfg->emtc_config.prach_ce_level_1_configuration_index.value = p->prach_ConfigIndex_r13;
|
||||
cfg->emtc_config.prach_ce_level_1_frequency_offset.value = p->prach_FreqOffset_r13;
|
||||
cfg->emtc_config.prach_ce_level_1_number_of_repetitions_per_attempt.value = p->numRepetitionPerPreambleAttempt_r13;
|
||||
cfg->emtc_config.prach_ce_level_1_number_of_repetitions_per_attempt.value = 1<<p->numRepetitionPerPreambleAttempt_r13;
|
||||
if (p->prach_StartingSubframe_r13)
|
||||
cfg->emtc_config.prach_ce_level_1_starting_subframe_periodicity.value = *p->prach_StartingSubframe_r13;
|
||||
cfg->emtc_config.prach_ce_level_1_starting_subframe_periodicity.value = 2<<*p->prach_StartingSubframe_r13;
|
||||
cfg->emtc_config.prach_ce_level_1_hopping_enable.value = p->prach_HoppingConfig_r13;
|
||||
cfg->emtc_config.prach_ce_level_1_hopping_offset.value = cfg->rf_config.ul_channel_bandwidth.value-6;
|
||||
case 1:
|
||||
@@ -375,13 +376,16 @@ void config_sib2(int Mod_idP,
|
||||
cfg->emtc_config.prach_ce_level_0_enable.value = 1;
|
||||
cfg->emtc_config.prach_ce_level_0_configuration_index.value = p->prach_ConfigIndex_r13;
|
||||
cfg->emtc_config.prach_ce_level_0_frequency_offset.value = p->prach_FreqOffset_r13;
|
||||
cfg->emtc_config.prach_ce_level_0_number_of_repetitions_per_attempt.value = p->numRepetitionPerPreambleAttempt_r13;
|
||||
cfg->emtc_config.prach_ce_level_0_number_of_repetitions_per_attempt.value = 1<<p->numRepetitionPerPreambleAttempt_r13;
|
||||
AssertFatal(p->prach_StartingSubframe_r13!=NULL,"prach_StartingSubframe_r13 is null\n");
|
||||
if (p->prach_StartingSubframe_r13)
|
||||
cfg->emtc_config.prach_ce_level_0_starting_subframe_periodicity.value = *p->prach_StartingSubframe_r13;
|
||||
cfg->emtc_config.prach_ce_level_0_starting_subframe_periodicity.value = 2<<*p->prach_StartingSubframe_r13;
|
||||
cfg->emtc_config.prach_ce_level_0_hopping_enable.value = p->prach_HoppingConfig_r13;
|
||||
cfg->emtc_config.prach_ce_level_0_hopping_offset.value = cfg->rf_config.ul_channel_bandwidth.value-6;
|
||||
}
|
||||
|
||||
AssertFatal(cfg->emtc_config.prach_ce_level_0_enable.value>0,"CE_level0 is not enabled\n");
|
||||
|
||||
struct FreqHoppingParameters_r13 *ext4_freqHoppingParameters = radioResourceConfigCommonP->ext4->freqHoppingParameters_r13;
|
||||
if ((ext4_freqHoppingParameters) &&
|
||||
(ext4_freqHoppingParameters->interval_ULHoppingConfigCommonModeA_r13)){
|
||||
|
||||
@@ -1408,66 +1408,58 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
|
||||
int num_prach_parameters_ce = configuration->prach_parameters_list_size[CC_id];
|
||||
int prach_parameters_index;
|
||||
AssertFatal(num_prach_parameters_ce > 0, "PRACH CE parameter list is empty\n");
|
||||
|
||||
for (prach_parameters_index = 0; prach_parameters_index < num_prach_parameters_ce; ++prach_parameters_index)
|
||||
{
|
||||
prach_parametersce_r13 = CALLOC(1, sizeof(PRACH_ParametersCE_r13_t));
|
||||
if (configuration->prach_parameters_list_size[CC_id])
|
||||
prach_parametersce_r13 = CALLOC(1, sizeof(PRACH_ParametersCE_r13_t));
|
||||
|
||||
prach_parametersce_r13->prach_ConfigIndex_r13 = configuration->prach_config_index[CC_id][prach_parameters_index];
|
||||
prach_parametersce_r13->prach_FreqOffset_r13 = configuration->prach_freq_offset[CC_id][prach_parameters_index];
|
||||
|
||||
AssertFatal(configuration->prach_StartingSubframe_r13[CC_id][prach_parameters_index]!=NULL,
|
||||
"configuration->prach_StartingSubframe_r13[%d][%d] is null",
|
||||
(int)CC_id,(int)prach_parameters_index);
|
||||
if (configuration->prach_StartingSubframe_r13[CC_id][prach_parameters_index])
|
||||
{
|
||||
prach_parametersce_r13->prach_StartingSubframe_r13 = CALLOC(1, sizeof(long));
|
||||
*prach_parametersce_r13->prach_StartingSubframe_r13 = *configuration->prach_StartingSubframe_r13[CC_id][prach_parameters_index];
|
||||
}
|
||||
else
|
||||
{
|
||||
prach_parametersce_r13->prach_StartingSubframe_r13 = NULL;
|
||||
}
|
||||
|
||||
if (configuration->maxNumPreambleAttemptCE_r13[CC_id][prach_parameters_index])
|
||||
{
|
||||
prach_parametersce_r13->maxNumPreambleAttemptCE_r13 = CALLOC(1, sizeof(long));
|
||||
*prach_parametersce_r13->maxNumPreambleAttemptCE_r13 = *configuration->maxNumPreambleAttemptCE_r13[CC_id][prach_parameters_index];
|
||||
}
|
||||
else
|
||||
{
|
||||
prach_parametersce_r13->maxNumPreambleAttemptCE_r13 = NULL;
|
||||
}
|
||||
|
||||
prach_parametersce_r13->numRepetitionPerPreambleAttempt_r13 = configuration->numRepetitionPerPreambleAttempt_r13[CC_id][prach_parameters_index];
|
||||
prach_parametersce_r13->mpdcch_NumRepetition_RA_r13 = configuration->mpdcch_NumRepetition_RA_r13[CC_id][prach_parameters_index];
|
||||
prach_parametersce_r13->prach_HoppingConfig_r13 = configuration->prach_HoppingConfig_r13[CC_id][prach_parameters_index];
|
||||
printf("[DEBUGGING][KOGO][SIB23] : prach hopping config = %d\n", prach_parametersce_r13->prach_HoppingConfig_r13);
|
||||
|
||||
|
||||
long *maxavailablenarrowband;
|
||||
int num_narrow_bands = configuration->max_available_narrow_band_size[CC_id][prach_parameters_index];
|
||||
int narrow_band_index;
|
||||
for (narrow_band_index = 0; narrow_band_index < num_narrow_bands; narrow_band_index++)
|
||||
{
|
||||
prach_parametersce_r13->prach_ConfigIndex_r13 = configuration->prach_config_index[CC_id][prach_parameters_index];
|
||||
prach_parametersce_r13->prach_FreqOffset_r13 = configuration->prach_freq_offset[CC_id][prach_parameters_index];
|
||||
|
||||
if (configuration->prach_StartingSubframe_r13[CC_id][prach_parameters_index])
|
||||
{
|
||||
prach_parametersce_r13->prach_StartingSubframe_r13 = CALLOC(1, sizeof(long));
|
||||
*prach_parametersce_r13->prach_StartingSubframe_r13 = *configuration->prach_StartingSubframe_r13[CC_id][prach_parameters_index];
|
||||
}
|
||||
else
|
||||
{
|
||||
prach_parametersce_r13->prach_StartingSubframe_r13 = NULL;
|
||||
}
|
||||
|
||||
if (configuration->maxNumPreambleAttemptCE_r13[CC_id][prach_parameters_index])
|
||||
{
|
||||
prach_parametersce_r13->maxNumPreambleAttemptCE_r13 = CALLOC(1, sizeof(long));
|
||||
*prach_parametersce_r13->maxNumPreambleAttemptCE_r13 = *configuration->maxNumPreambleAttemptCE_r13[CC_id][prach_parameters_index];
|
||||
}
|
||||
else
|
||||
{
|
||||
prach_parametersce_r13->maxNumPreambleAttemptCE_r13 = NULL;
|
||||
}
|
||||
|
||||
prach_parametersce_r13->numRepetitionPerPreambleAttempt_r13 = configuration->numRepetitionPerPreambleAttempt_r13[CC_id][prach_parameters_index];
|
||||
prach_parametersce_r13->mpdcch_NumRepetition_RA_r13 = configuration->mpdcch_NumRepetition_RA_r13[CC_id][prach_parameters_index];
|
||||
prach_parametersce_r13->prach_HoppingConfig_r13 = configuration->prach_HoppingConfig_r13[CC_id][prach_parameters_index];
|
||||
printf("[DEBUGGING][KOGO][SIB23] : prach hopping config = %d\n", prach_parametersce_r13->prach_HoppingConfig_r13);
|
||||
maxavailablenarrowband = CALLOC(1, sizeof(long));
|
||||
*maxavailablenarrowband = configuration->max_available_narrow_band[CC_id][prach_parameters_index][narrow_band_index];
|
||||
ASN_SEQUENCE_ADD(&prach_parametersce_r13->mpdcch_NarrowbandsToMonitor_r13.list, maxavailablenarrowband);
|
||||
}
|
||||
else
|
||||
{
|
||||
prach_parametersce_r13->prach_ConfigIndex_r13 = 3;
|
||||
prach_parametersce_r13->prach_FreqOffset_r13 = 1;
|
||||
prach_parametersce_r13->prach_StartingSubframe_r13 = NULL;
|
||||
*prach_parametersce_r13->maxNumPreambleAttemptCE_r13 = calloc(1, sizeof(long));
|
||||
*prach_parametersce_r13->maxNumPreambleAttemptCE_r13 = PRACH_ParametersCE_r13__maxNumPreambleAttemptCE_r13_n3;
|
||||
prach_parametersce_r13->numRepetitionPerPreambleAttempt_r13 = PRACH_ParametersCE_r13__numRepetitionPerPreambleAttempt_r13_n1;
|
||||
prach_parametersce_r13->mpdcch_NumRepetition_RA_r13 = PRACH_ParametersCE_r13__mpdcch_NumRepetition_RA_r13_r1;
|
||||
prach_parametersce_r13->prach_HoppingConfig_r13 = PRACH_ParametersCE_r13__prach_HoppingConfig_r13_off;
|
||||
}
|
||||
|
||||
long *maxavailablenarrowband;
|
||||
int num_narrow_bands = configuration->max_available_narrow_band_size[CC_id][prach_parameters_index];
|
||||
int narrow_band_index;
|
||||
for (narrow_band_index = 0; narrow_band_index < num_narrow_bands; narrow_band_index++)
|
||||
{
|
||||
maxavailablenarrowband = CALLOC(1, sizeof(long));
|
||||
*maxavailablenarrowband = configuration->max_available_narrow_band[CC_id][prach_parameters_index][narrow_band_index];
|
||||
ASN_SEQUENCE_ADD(&prach_parametersce_r13->mpdcch_NarrowbandsToMonitor_r13.list, maxavailablenarrowband);
|
||||
}
|
||||
|
||||
prach_parametersce_r13->mpdcch_NumRepetition_RA_r13 = PRACH_ParametersCE_r13__mpdcch_NumRepetition_RA_r13_r1;
|
||||
prach_parametersce_r13->prach_HoppingConfig_r13 = PRACH_ParametersCE_r13__prach_HoppingConfig_r13_off;
|
||||
ASN_SEQUENCE_ADD(&(*sib2)->radioResourceConfigCommon.ext4->prach_ConfigCommon_v1310->prach_ParametersListCE_r13.list, prach_parametersce_r13);
|
||||
|
||||
prach_parametersce_r13->mpdcch_NumRepetition_RA_r13 = PRACH_ParametersCE_r13__mpdcch_NumRepetition_RA_r13_r1;
|
||||
prach_parametersce_r13->prach_HoppingConfig_r13 = PRACH_ParametersCE_r13__prach_HoppingConfig_r13_off;
|
||||
ASN_SEQUENCE_ADD(&(*sib2)->radioResourceConfigCommon.ext4->prach_ConfigCommon_v1310->prach_ParametersListCE_r13.list, prach_parametersce_r13);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -333,6 +333,24 @@ init_SI(
|
||||
|
||||
sib1_v13ext = RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension;
|
||||
|
||||
// Basic Asserts for CE_level0 PRACH configuration
|
||||
|
||||
RadioResourceConfigCommonSIB_t *radioResourceConfigCommon_BR = &RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2_BR->radioResourceConfigCommon;
|
||||
struct PRACH_ConfigSIB_v1310 *ext4_prach=radioResourceConfigCommon_BR->ext4->prach_ConfigCommon_v1310;
|
||||
|
||||
PRACH_ParametersListCE_r13_t *prach_ParametersListCE_r13 = &ext4_prach->prach_ParametersListCE_r13;
|
||||
AssertFatal(prach_ParametersListCE_r13->list.count>0,"prach_ParametersListCE_r13 is empty\n");
|
||||
PRACH_ParametersCE_r13_t *p = prach_ParametersListCE_r13->list.array[0];
|
||||
AssertFatal(p->prach_StartingSubframe_r13 != NULL, "prach_StartingSubframe_r13 celevel0 is null\n");
|
||||
AssertFatal((1<<p->numRepetitionPerPreambleAttempt_r13)<=(2<<*p->prach_StartingSubframe_r13),
|
||||
"prachce0->numReptitionPerPreambleAttempt_r13 %d > prach_StartingSubframe_r13 %d\n",
|
||||
1<<p->numRepetitionPerPreambleAttempt_r13,
|
||||
2<<*p->prach_StartingSubframe_r13);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ eNBs =
|
||||
prach_config_index = 0;
|
||||
prach_high_speed = "DISABLE";
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
prach_freq_offset = 1;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nCS_AN = 0;
|
||||
@@ -179,7 +179,7 @@ eNBs =
|
||||
(
|
||||
{
|
||||
prach_config_index_br = 3;
|
||||
prach_freq_offset_br = 2;
|
||||
prach_freq_offset_br = 1;
|
||||
prach_StartingSubframe_r13 = 0;
|
||||
maxNumPreambleAttemptCE_r13 = 6;
|
||||
numRepetitionPerPreambleAttempt_r13 = 0;
|
||||
@@ -235,7 +235,7 @@ eNBs =
|
||||
prach_config_index = 3;
|
||||
prach_high_speed = "DISABLE";
|
||||
prach_zero_correlation = 1;
|
||||
prach_freq_offset = 2;
|
||||
prach_freq_offset = 1;
|
||||
pucch_delta_shift = 1;
|
||||
pucch_nRB_CQI = 0;
|
||||
pucch_nCS_AN = 0;
|
||||
|
||||
Reference in New Issue
Block a user