Merge branch 'RU-RAU-split' of https://gitlab.eurecom.fr/raymond.knopp/openairinterface5g into RU-RAU-split
This commit is contained in:
@@ -250,7 +250,7 @@ typedef struct RrcConfigurationReq_s {
|
||||
long prach_HoppingConfig_r13 [MAX_NUM_CCs][4];
|
||||
int prach_parameters_list_size [MAX_NUM_CCs];
|
||||
long max_available_narrow_band [MAX_NUM_CCs][4][2];
|
||||
int max_available_narrow_band_size [MAX_NUM_CCs];
|
||||
int max_available_narrow_band_size [MAX_NUM_CCs][4];
|
||||
// end kogo
|
||||
|
||||
|
||||
@@ -259,6 +259,32 @@ typedef struct RrcConfigurationReq_s {
|
||||
int pucch_info_value_size [MAX_NUM_CCs];
|
||||
// end kogo
|
||||
|
||||
// +kogo
|
||||
bool pcch_config_v1310 [MAX_NUM_CCs];
|
||||
long paging_narrowbands_r13 [MAX_NUM_CCs];
|
||||
long mpdcch_numrepetition_paging_r13 [MAX_NUM_CCs];
|
||||
long *nb_v1310 [MAX_NUM_CCs];
|
||||
|
||||
long *pucch_NumRepetitionCE_Msg4_Level0_r13 [MAX_NUM_CCs];
|
||||
long *pucch_NumRepetitionCE_Msg4_Level1_r13 [MAX_NUM_CCs];
|
||||
long *pucch_NumRepetitionCE_Msg4_Level2_r13 [MAX_NUM_CCs];
|
||||
long *pucch_NumRepetitionCE_Msg4_Level3_r13 [MAX_NUM_CCs];
|
||||
|
||||
|
||||
bool sib2_freq_hoppingParameters_r13_exists [MAX_NUM_CCs];
|
||||
long *sib2_mpdcch_pdsch_hoppingNB_r13 [MAX_NUM_CCs];
|
||||
long *sib2_interval_DLHoppingConfigCommonModeA_r13 [MAX_NUM_CCs];
|
||||
long sib2_interval_DLHoppingConfigCommonModeA_r13_val [MAX_NUM_CCs];
|
||||
long *sib2_interval_DLHoppingConfigCommonModeB_r13 [MAX_NUM_CCs];
|
||||
long sib2_interval_DLHoppingConfigCommonModeB_r13_val [MAX_NUM_CCs];
|
||||
long *sib2_interval_ULHoppingConfigCommonModeA_r13 [MAX_NUM_CCs];
|
||||
long sib2_interval_ULHoppingConfigCommonModeA_r13_val [MAX_NUM_CCs];
|
||||
long *sib2_interval_ULHoppingConfigCommonModeB_r13 [MAX_NUM_CCs];
|
||||
long sib2_interval_ULHoppingConfigCommonModeB_r13_val [MAX_NUM_CCs];
|
||||
long *sib2_mpdcch_pdsch_hoppingOffset_r13 [MAX_NUM_CCs];
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
} RrcConfigurationReq;
|
||||
|
||||
|
||||
+269
-21
@@ -160,6 +160,31 @@ EMAIL : Lionel.Gauthier@eurecom.fr, navid.nikaein@eurecom.fr
|
||||
#define ENB_CONFIG_STRING_MAX_AVAILABLE_NARROWBAND "maxavailablenarrowband"
|
||||
#define ENB_CONFIG_STRING_PUCCH_INFO_VALUE "pucch_info_value"
|
||||
|
||||
#define ENB_CONFIG_STRING_PCCH_CONFIG_V1310 "pcch_config_v1310"
|
||||
#define ENB_CONFIG_STRING_PAGING_NARROWBANDS_R13 "paging_narrowbands_r13"
|
||||
#define ENB_CONFIG_STRING_MPDCCH_NUMREPETITION_PAGING_R13 "mpdcch_numrepetition_paging_r13"
|
||||
#define ENB_CONFIG_STRING_NB_V1310 "nb_v1310"
|
||||
|
||||
|
||||
#define ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL0 "pucch_NumRepetitionCE_Msg4_Level0_r13"
|
||||
#define ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL1 "pucch_NumRepetitionCE_Msg4_Level1_r13"
|
||||
#define ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL2 "pucch_NumRepetitionCE_Msg4_Level2_r13"
|
||||
#define ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL3 "pucch_NumRepetitionCE_Msg4_Level3_r13"
|
||||
|
||||
#define ENB_CONFIG_STRING_FREQ_HOPPING_PARAMETERS_R13 "sib2_freq_hoppingParameters_r13"
|
||||
#define ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13 "sib2_mpdcch_pdsch_hoppingNB_r13"
|
||||
#define ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13 "sib2_interval_DLHoppingConfigCommonModeA_r13"
|
||||
#define ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13_VAL "sib2_interval_DLHoppingConfigCommonModeA_r13_val"
|
||||
#define ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13 "sib2_interval_DLHoppingConfigCommonModeB_r13"
|
||||
#define ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13_VAL "sib2_interval_DLHoppingConfigCommonModeB_r13_val"
|
||||
#define ENB_CONFIG_STRING_INTERVAL_UL_HOPPING_CONFIG_COMMON_MODE_A_R13 "sib2_interval_ULHoppingConfigCommonModeA_r13"
|
||||
#define ENB_CONFIG_STRING_INTERVAL_UL_HOPPING_CONFIG_COMMON_MODE_A_R13_VAL "sib2_interval_ULHoppingConfigCommonModeA_r13_val"
|
||||
#define ENB_CONFIG_STRING_INTERVAL_UL_HOPPING_CONFIG_COMMON_MODE_B_R13 "sib2_interval_ULHoppingConfigCommonModeB_r13"
|
||||
#define ENB_CONFIG_STRING_INTERVAL_UL_HOPPING_CONFIG_COMMON_MODE_B_R13_VAL "sib2_interval_ULHoppingConfigCommonModeB_r13_val"
|
||||
#define ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_OFFSET_R13 "sib2_mpdcch_pdsch_hoppingOffset_r13"
|
||||
|
||||
|
||||
|
||||
|
||||
#define ENB_CONFIG_STRING_PDSCH_RS_EPRE "pdsch_referenceSignalPower"
|
||||
#define ENB_CONFIG_STRING_PDSCH_PB "pdsch_p_b"
|
||||
@@ -1007,6 +1032,10 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
config_setting_t *n1_pucch_AN_info_r13_list = NULL;
|
||||
config_setting_t *n1_pucch_AN_info_r13 = NULL;
|
||||
|
||||
config_setting_t *setting_pcch_config_v1310 = NULL;
|
||||
config_setting_t *setting_freq_hoppingParameters_r13 = NULL;
|
||||
|
||||
|
||||
#if defined(Rel14)
|
||||
config_setting_t *setting_br13 = NULL;
|
||||
#endif // REL14
|
||||
@@ -1134,6 +1163,31 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
libconfig_int maxavailablenarrowband = 0;
|
||||
libconfig_int pucch_info_value = 0;
|
||||
|
||||
libconfig_int paging_narrowbands_r13 = 0;
|
||||
libconfig_int mpdcch_numrepetition_paging_r13 = 0;
|
||||
libconfig_int nb_v1310 = 0;
|
||||
|
||||
|
||||
libconfig_int pucch_NumRepetitionCE_Msg4_Level0_r13 = 0;
|
||||
libconfig_int pucch_NumRepetitionCE_Msg4_Level1_r13 = 0;
|
||||
libconfig_int pucch_NumRepetitionCE_Msg4_Level2_r13 = 0;
|
||||
libconfig_int pucch_NumRepetitionCE_Msg4_Level3_r13 = 0;
|
||||
|
||||
libconfig_int sib2_mpdcch_pdsch_hoppingNB_r13 = 0;
|
||||
libconfig_int sib2_interval_DLHoppingConfigCommonModeA_r13 = 0;
|
||||
libconfig_int sib2_interval_DLHoppingConfigCommonModeA_r13_val = 0;
|
||||
libconfig_int sib2_interval_DLHoppingConfigCommonModeB_r13 = 0;
|
||||
libconfig_int sib2_interval_DLHoppingConfigCommonModeB_r13_val = 0;
|
||||
libconfig_int sib2_interval_ULHoppingConfigCommonModeA_r13 = 0;
|
||||
libconfig_int sib2_interval_ULHoppingConfigCommonModeA_r13_val = 0;
|
||||
libconfig_int sib2_interval_ULHoppingConfigCommonModeB_r13 = 0;
|
||||
libconfig_int sib2_interval_ULHoppingConfigCommonModeB_r13_val = 0;
|
||||
libconfig_int sib2_mpdcch_pdsch_hoppingOffset_r13 = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
libconfig_int srb1_timer_poll_retransmit = 0;
|
||||
libconfig_int srb1_timer_reordering = 0;
|
||||
libconfig_int srb1_timer_status_prohibit = 0;
|
||||
@@ -2407,7 +2461,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms1000;
|
||||
break;
|
||||
|
||||
case 3110:
|
||||
case 3000:
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms3000;
|
||||
break;
|
||||
|
||||
@@ -2427,7 +2481,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms20000;
|
||||
break;
|
||||
|
||||
case 31100:
|
||||
case 30000:
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms30000;
|
||||
break;
|
||||
|
||||
@@ -2559,7 +2613,51 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
}
|
||||
|
||||
if (setting_br13 != NULL) {
|
||||
int cnt = 0;
|
||||
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL0, &pucch_NumRepetitionCE_Msg4_Level0_r13))
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = pucch_NumRepetitionCE_Msg4_Level0_r13;
|
||||
++cnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level0_r13[j] = NULL;;
|
||||
}
|
||||
|
||||
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL1, &pucch_NumRepetitionCE_Msg4_Level1_r13))
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level1_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level1_r13[j] = pucch_NumRepetitionCE_Msg4_Level1_r13;
|
||||
++cnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level1_r13[j] = NULL;;
|
||||
}
|
||||
|
||||
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL2, &pucch_NumRepetitionCE_Msg4_Level2_r13))
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level2_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level2_r13[j] = pucch_NumRepetitionCE_Msg4_Level2_r13;
|
||||
++cnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level2_r13[j] = NULL;
|
||||
}
|
||||
|
||||
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_PUCCH_NUM_REPETITION_CE_MSG4_LEVEL3, &pucch_NumRepetitionCE_Msg4_Level3_r13))
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level3_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level3_r13[j] = pucch_NumRepetitionCE_Msg4_Level3_r13;
|
||||
++cnt;
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_NumRepetitionCE_Msg4_Level3_r13[j] = NULL;;
|
||||
}
|
||||
|
||||
scheduling_info_br_list = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_SCHEDULING_INFO_LIST);
|
||||
int num_scheduling_info = config_setting_length(scheduling_info_br_list);
|
||||
RRC_CONFIGURATION_REQ (msg_p).scheduling_info_br_size[j] = num_scheduling_info;
|
||||
@@ -2579,18 +2677,27 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
}
|
||||
|
||||
system_info_value_tag_SI_list = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_LIST);
|
||||
int num_system_info = config_setting_length(system_info_value_tag_SI_list);
|
||||
int num_system_info;
|
||||
if (system_info_value_tag_SI_list != NULL)
|
||||
{
|
||||
num_system_info = config_setting_length(system_info_value_tag_SI_list);
|
||||
for (sys_info_idx = 0; sys_info_idx < num_system_info; ++sys_info_idx)
|
||||
{
|
||||
system_info_value_tag_SI = config_setting_get_elem(system_info_value_tag_SI_list, sys_info_idx);
|
||||
if ( !(config_setting_lookup_int(system_info_value_tag_SI, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_SI_R13, &systemInfoValueTagSi_r13)) )
|
||||
{
|
||||
AssertFatal (0, "Failed to parse eNB configuration file %s, system info value tag %d!\n", RC.config_file_name, nb_cc++);
|
||||
}
|
||||
RRC_CONFIGURATION_REQ (msg_p).systemInfoValueTagSi_r13[j][sys_info_idx] = systemInfoValueTagSi_r13;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
num_system_info = 0;
|
||||
}
|
||||
RRC_CONFIGURATION_REQ (msg_p).system_info_value_tag_SI_size[j] = num_system_info;
|
||||
|
||||
for (sys_info_idx = 0; sys_info_idx < num_system_info; ++sys_info_idx)
|
||||
{
|
||||
system_info_value_tag_SI = config_setting_get_elem(system_info_value_tag_SI_list, sys_info_idx);
|
||||
if ( !(config_setting_lookup_int(system_info_value_tag_SI, ENB_CONFIG_STRING_SYSTEM_INFO_VALUE_TAG_SI_R13, &systemInfoValueTagSi_r13)) )
|
||||
{
|
||||
AssertFatal (0, "Failed to parse eNB configuration file %s, system info value tag %d!\n", RC.config_file_name, nb_cc++);
|
||||
}
|
||||
RRC_CONFIGURATION_REQ (msg_p).systemInfoValueTagSi_r13[j][sys_info_idx] = systemInfoValueTagSi_r13;
|
||||
}
|
||||
|
||||
|
||||
|
||||
rach_ce_level_info_r13_list = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_RACH_CE_LEVEL_INFO_LIST);
|
||||
@@ -2634,6 +2741,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RC.config_file_name, nb_cc++);
|
||||
}
|
||||
RRC_CONFIGURATION_REQ (msg_p).rsrp_range[j][rsrp_range_idx] = rsrp_range_br;
|
||||
printf("[DEBUGGING][KOGO] : rsrp range br = %d\n", rsrp_range_br);
|
||||
}
|
||||
|
||||
prach_parameters_ce_r13_list = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_PRACH_PARAMETERS_CE_R13);
|
||||
@@ -2655,6 +2763,8 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RC.config_file_name, nb_cc++);
|
||||
}
|
||||
|
||||
printf("[DEBUGGING][KOGO] : prach hopping config = %d\n", prach_HoppingConfig_r13);
|
||||
|
||||
RRC_CONFIGURATION_REQ (msg_p).prach_config_index[j][prach_parameters_index] = prach_config_index_br;
|
||||
RRC_CONFIGURATION_REQ (msg_p).prach_freq_offset[j][prach_parameters_index] = prach_freq_offset_br;
|
||||
RRC_CONFIGURATION_REQ (msg_p).prach_StartingSubframe_r13[j][prach_parameters_index] = prach_StartingSubframe_r13;
|
||||
@@ -2666,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
|
||||
{
|
||||
@@ -2676,23 +2786,31 @@ 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_MAX_NUM_PREAMBLE_ATTEMPT_CE_R13, &maxNumPreambleAttemptCE_r13))
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_r13[j][prach_parameters_index] = calloc(1, sizeof(long));
|
||||
RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_r13[j][prach_parameters_index] = maxNumPreambleAttemptCE_r13;
|
||||
*RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_r13[j][prach_parameters_index] = maxNumPreambleAttemptCE_r13;
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_r13[j][prach_parameters_index] = NULL;
|
||||
}
|
||||
|
||||
|
||||
max_available_narrow_band_list = config_setting_get_member(prach_parameters_ce_r13, ENB_CONFIG_STRING_MAX_AVAILABLE_NARROW_BAND);
|
||||
int num_available_narrow_bands = config_setting_length(max_available_narrow_band_list);
|
||||
RRC_CONFIGURATION_REQ (msg_p).max_available_narrow_band_size[j][prach_parameters_index] = num_available_narrow_bands;
|
||||
int narrow_band_index;
|
||||
for (narrow_band_index = 0; narrow_band_index < num_available_narrow_bands; narrow_band_index++)
|
||||
{
|
||||
max_available_narrow_band = config_setting_get_elem(max_available_narrow_band_list, narrow_band_index);
|
||||
RRC_CONFIGURATION_REQ (msg_p).max_available_narrow_band[j][prach_parameters_index][narrow_band_index] = config_setting_get_int(max_available_narrow_band);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// TODO
|
||||
// max_available_narrow_band = config_setting_get_member(prach_parameters_ce_r13, ENB_CONFIG_STRING_MAX_AVAILABLE_NARROW_BAND);
|
||||
|
||||
|
||||
n1_pucch_AN_info_r13_list = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_N1_PUCCH_AN_INFO_LIST);
|
||||
|
||||
int num_pucch_an_info = config_setting_length(n1_pucch_AN_info_r13_list);
|
||||
AssertFatal(cnt == num_pucch_an_info, "Num Repetition Count should be equal to pucch info count !!!");
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_info_value_size[j] = num_pucch_an_info;
|
||||
int pucch_info_idx;
|
||||
for (pucch_info_idx = 0; pucch_info_idx < num_pucch_an_info; ++pucch_info_idx)
|
||||
@@ -2708,6 +2826,104 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ (msg_p).pucch_info_value[j][pucch_info_idx] = pucch_info_value;
|
||||
}
|
||||
|
||||
setting_freq_hoppingParameters_r13 = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_FREQ_HOPPING_PARAMETERS_R13);
|
||||
if (setting_freq_hoppingParameters_r13 != NULL)
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_freq_hoppingParameters_r13_exists[j] = TRUE;
|
||||
if (config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_NB_R13, &sib2_mpdcch_pdsch_hoppingNB_r13))
|
||||
{
|
||||
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_mpdcch_pdsch_hoppingNB_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ(msg_p).sib2_mpdcch_pdsch_hoppingNB_r13[j] = sib2_mpdcch_pdsch_hoppingNB_r13;
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_mpdcch_pdsch_hoppingNB_r13[j] = NULL;
|
||||
}
|
||||
|
||||
if (config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13, &sib2_interval_DLHoppingConfigCommonModeA_r13))
|
||||
{
|
||||
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_DLHoppingConfigCommonModeA_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ(msg_p).sib2_interval_DLHoppingConfigCommonModeA_r13[j] = sib2_interval_DLHoppingConfigCommonModeA_r13;
|
||||
config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_A_R13_VAL, &sib2_interval_DLHoppingConfigCommonModeA_r13_val);
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_DLHoppingConfigCommonModeA_r13_val[j] = sib2_interval_DLHoppingConfigCommonModeA_r13_val;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_DLHoppingConfigCommonModeA_r13[j] = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13, &sib2_interval_DLHoppingConfigCommonModeB_r13))
|
||||
{
|
||||
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_DLHoppingConfigCommonModeB_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ(msg_p).sib2_interval_DLHoppingConfigCommonModeB_r13[j] = sib2_interval_DLHoppingConfigCommonModeB_r13;
|
||||
config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_INTERVAL_DL_HOPPING_CONFIG_COMMON_MODE_B_R13_VAL, &sib2_interval_DLHoppingConfigCommonModeB_r13_val);
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_DLHoppingConfigCommonModeB_r13_val[j] = sib2_interval_DLHoppingConfigCommonModeB_r13_val;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_DLHoppingConfigCommonModeB_r13[j] = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_INTERVAL_UL_HOPPING_CONFIG_COMMON_MODE_A_R13, &sib2_interval_ULHoppingConfigCommonModeA_r13))
|
||||
{
|
||||
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13[j] = sib2_interval_ULHoppingConfigCommonModeA_r13;
|
||||
config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_INTERVAL_UL_HOPPING_CONFIG_COMMON_MODE_A_R13_VAL, &sib2_interval_ULHoppingConfigCommonModeA_r13_val);
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13_val[j] = sib2_interval_ULHoppingConfigCommonModeA_r13_val;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeA_r13[j] = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_INTERVAL_UL_HOPPING_CONFIG_COMMON_MODE_B_R13, &sib2_interval_ULHoppingConfigCommonModeB_r13))
|
||||
{
|
||||
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeB_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeB_r13[j] = sib2_interval_ULHoppingConfigCommonModeB_r13;
|
||||
config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_INTERVAL_UL_HOPPING_CONFIG_COMMON_MODE_B_R13_VAL, &sib2_interval_ULHoppingConfigCommonModeB_r13_val);
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeB_r13_val[j] = sib2_interval_ULHoppingConfigCommonModeB_r13_val;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_interval_ULHoppingConfigCommonModeB_r13[j] = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (config_setting_lookup_int(setting_freq_hoppingParameters_r13, ENB_CONFIG_STRING_MPDCCH_PDSCH_HOPPING_OFFSET_R13, &sib2_mpdcch_pdsch_hoppingOffset_r13))
|
||||
{
|
||||
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_mpdcch_pdsch_hoppingOffset_r13[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ(msg_p).sib2_mpdcch_pdsch_hoppingOffset_r13[j] = sib2_mpdcch_pdsch_hoppingOffset_r13;
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_mpdcch_pdsch_hoppingOffset_r13[j] = NULL;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).sib2_freq_hoppingParameters_r13_exists[j] = FALSE;
|
||||
}
|
||||
|
||||
|
||||
// Rel8 RadioResourceConfigCommon Parameters
|
||||
if (!(config_setting_lookup_string(setting_br13, ENB_CONFIG_STRING_FRAME_TYPE, &frame_type)
|
||||
|
||||
@@ -3545,7 +3761,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms1000;
|
||||
break;
|
||||
|
||||
case 3110:
|
||||
case 3000:
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms3000;
|
||||
break;
|
||||
|
||||
@@ -3565,7 +3781,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms20000;
|
||||
break;
|
||||
|
||||
case 31100:
|
||||
case 30000:
|
||||
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig_BR[j].ue_TimersAndConstants_t311= UE_TimersAndConstants__t311_ms30000;
|
||||
break;
|
||||
|
||||
@@ -3716,6 +3932,38 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
char* prach_ConfigCommon_v1310 = NULL;
|
||||
char* mpdcch_startSF_CSS_RA_r13;
|
||||
|
||||
setting_pcch_config_v1310 = config_setting_get_member(setting_br13, ENB_CONFIG_STRING_PCCH_CONFIG_V1310);
|
||||
if (setting_pcch_config_v1310 != NULL)
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).pcch_config_v1310[j] = TRUE;
|
||||
if (!config_setting_lookup_int(setting_pcch_config_v1310, ENB_CONFIG_STRING_PAGING_NARROWBANDS_R13, &paging_narrowbands_r13)
|
||||
|| !config_setting_lookup_int(setting_pcch_config_v1310, ENB_CONFIG_STRING_MPDCCH_NUMREPETITION_PAGING_R13, &mpdcch_numrepetition_paging_r13)
|
||||
)
|
||||
AssertFatal(0,
|
||||
"Failed to parse eNB configuration file %s, enb %d pcch_config_v1310!\n",
|
||||
RC.config_file_name, i);
|
||||
|
||||
RRC_CONFIGURATION_REQ(msg_p).paging_narrowbands_r13[j] = paging_narrowbands_r13;
|
||||
RRC_CONFIGURATION_REQ(msg_p).mpdcch_numrepetition_paging_r13[j] = mpdcch_numrepetition_paging_r13;
|
||||
|
||||
if (config_setting_lookup_int(setting_pcch_config_v1310, ENB_CONFIG_STRING_NB_V1310, &nb_v1310))
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).nb_v1310[j] = CALLOC(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ(msg_p).nb_v1310[j] = nb_v1310;
|
||||
|
||||
printf("[DEBUGGING][KOGO] : nb_v1310 = %d\n", nb_v1310);
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).nb_v1310[j] = NULL;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).pcch_config_v1310[j] = FALSE;
|
||||
}
|
||||
|
||||
if (!config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_schedulingInfoSIB1, &schedulingInfoSIB1_BR_r13))
|
||||
AssertFatal(0,
|
||||
@@ -3815,7 +4063,7 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
||||
RRC_CONFIGURATION_REQ(msg_p).si_HoppingConfigCommon_r13[j] = si_HoppingConfigCommon_r13;
|
||||
RRC_CONFIGURATION_REQ(msg_p).startSymbolBR_r13[j] = startSymbolBR_r13;
|
||||
|
||||
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_Q_QUALMINRSRQ_CE, &si_ValidityTime_r13))
|
||||
if (config_setting_lookup_int(setting_br13, ENB_CONFIG_STRING_SI_VALIDITYTIME, &si_ValidityTime_r13))
|
||||
{
|
||||
RRC_CONFIGURATION_REQ(msg_p).si_ValidityTime_r13[j] = calloc(1, sizeof(long));
|
||||
*RRC_CONFIGURATION_REQ(msg_p).si_ValidityTime_r13[j] = si_ValidityTime_r13;
|
||||
|
||||
@@ -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)){
|
||||
|
||||
@@ -310,7 +310,10 @@ void generate_Msg2(module_id_t module_idP,int CC_idP,frame_t frameP,sub_frame_t
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_prb_per_subband = 1;
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_vector = 1;
|
||||
// dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.bf_vector = ;
|
||||
|
||||
|
||||
// Rel10 fields
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel10.pdsch_start = cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13;
|
||||
// Rel13 fields
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.ue_type = (RA_template->rach_resource_type < 3) ? 1 : 2;;
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.pdsch_payload_type = 2; // not SI message
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.initial_transmission_sf_io = (10*frameP)+subframeP;
|
||||
@@ -658,6 +661,8 @@ void generate_Msg4(module_id_t module_idP,int CC_idP,frame_t frameP,sub_frame_t
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_prb_per_subband = 1;
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_vector = 1;
|
||||
// dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.bf_vector = ;
|
||||
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel10.pdsch_start = cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13;
|
||||
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.ue_type = (RA_template->rach_resource_type < 3) ? 1 : 2;
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.pdsch_payload_type = 2; // not SI message
|
||||
|
||||
@@ -196,7 +196,7 @@ schedule_SIB1_BR(
|
||||
|
||||
AssertFatal(bcch_sdu_length <= TBS, "length returned by RRC %d is not compatible with the TBS %d from MIB\n",bcch_sdu_length,TBS);
|
||||
|
||||
if ((frameP&1023) < 200) LOG_I(MAC,"[eNB %d] Frame %d Subframe %d: SIB1_BR->DLSCH CC_id %d, Received %d bytes, scheduling on NB %d (i %d,m %d,N_S_NB %d) rvidx %d\n",module_idP,frameP,subframeP,CC_id,bcch_sdu_length,n_NB,i,m,N_S_NB,rvidx);
|
||||
if ((frameP&1023) < 200) LOG_D(MAC,"[eNB %d] Frame %d Subframe %d: SIB1_BR->DLSCH CC_id %d, Received %d bytes, scheduling on NB %d (i %d,m %d,N_S_NB %d) rvidx %d\n",module_idP,frameP,subframeP,CC_id,bcch_sdu_length,n_NB,i,m,N_S_NB,rvidx);
|
||||
|
||||
// allocate all 6 PRBs in narrowband for SIB1_BR
|
||||
|
||||
@@ -235,6 +235,8 @@ schedule_SIB1_BR(
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.transmission_mode = (cc->p_eNB==1 ) ? 1 : 2;
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_prb_per_subband = 1;
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_vector = 1;
|
||||
// Rel10 fields
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel10.pdsch_start = 3;
|
||||
// Rel13 fields
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.ue_type = 1; // CEModeA UE
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.pdsch_payload_type = 0; // SIB1-BR
|
||||
@@ -311,7 +313,7 @@ schedule_SI_BR(
|
||||
nfapi_dl_config_request_body_t *dl_req;
|
||||
int i;
|
||||
int rvidx;
|
||||
|
||||
int absSF = (frameP*10)+subframeP;
|
||||
|
||||
|
||||
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||
@@ -362,7 +364,7 @@ schedule_SI_BR(
|
||||
|
||||
// check if the SI is to be scheduled now
|
||||
int period_in_sf = 80<<si_Periodicity; // 2^i * 80 subframes, note: si_Periodicity is 2^i * 80ms
|
||||
int sf_mod_period = ((frameP*10)+subframeP)%period_in_sf;
|
||||
int sf_mod_period = absSF%period_in_sf;
|
||||
int k = sf_mod_period&3;
|
||||
// Note: definition of k and rvidx from 36.321 section 5.3.1
|
||||
rvidx = (((3*k)>>1) + (k&1))&3;
|
||||
@@ -391,14 +393,14 @@ schedule_SI_BR(
|
||||
// check that SIB1 didn't take this narrowband
|
||||
if (vrb_map[first_rb] > 0) continue;
|
||||
|
||||
first_rb = narrowband_to_first_rb(cc,si_Narrowband_r13);
|
||||
first_rb = narrowband_to_first_rb(cc,si_Narrowband_r13-1);
|
||||
vrb_map[first_rb] = 1;
|
||||
vrb_map[first_rb+1] = 1;
|
||||
vrb_map[first_rb+2] = 1;
|
||||
vrb_map[first_rb+4] = 1;
|
||||
vrb_map[first_rb+5] = 1;
|
||||
|
||||
if ((frameP%1000) < 200) LOG_D(MAC,"[eNB %d] Frame %d Subframe %d: SI_BR->DLSCH CC_id %d, Narrowband %d rvidx %d (sf_mod_period %d : si_WindowLength_BR_r13 %d : si_RepetitionPattern_r13 %d) bcch_sdu_length %d\n",
|
||||
if ((frameP&1023) < 200) LOG_D(MAC,"[eNB %d] Frame %d Subframe %d: SI_BR->DLSCH CC_id %d, Narrowband %d rvidx %d (sf_mod_period %d : si_WindowLength_BR_r13 %d : si_RepetitionPattern_r13 %d) bcch_sdu_length %d\n",
|
||||
module_idP,frameP,subframeP,CC_id,si_Narrowband_r13-1,rvidx,
|
||||
sf_mod_period,si_WindowLength_BR_r13,si_RepetitionPattern_r13,
|
||||
bcch_sdu_length);
|
||||
@@ -432,10 +434,12 @@ schedule_SI_BR(
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.transmission_mode = (cc->p_eNB==1 ) ? 1 : 2;
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_prb_per_subband = 1;
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.num_bf_vector = 1;
|
||||
// Rel10 fields (for PDSCH starting symbol)
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel10.pdsch_start = cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13;
|
||||
// Rel13 fields
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.ue_type = 1; // CEModeA UE
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.pdsch_payload_type = 1; // SI-BR
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.initial_transmission_sf_io = 0xFFFF; // absolute SF
|
||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel13.initial_transmission_sf_io = absSF - sf_mod_period;
|
||||
|
||||
// dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.bf_vector = ;
|
||||
dl_req->number_pdu++;
|
||||
@@ -757,7 +761,7 @@ schedule_SI(
|
||||
|
||||
#ifdef Rel14
|
||||
schedule_SIB1_BR(module_idP,frameP,subframeP);
|
||||
// schedule_SI_BR(module_idP,frameP,subframeP);
|
||||
schedule_SI_BR(module_idP,frameP,subframeP);
|
||||
#endif
|
||||
|
||||
stop_meas(&eNB->schedule_si);
|
||||
|
||||
@@ -608,10 +608,15 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
|
||||
else
|
||||
{
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->fdd_DownlinkOrTddSubframeBitmapBR_r13->present
|
||||
= SystemInformationBlockType1_v1310_IEs__bandwidthReducedAccessRelatedInfo_r13__fdd_DownlinkOrTddSubframeBitmapBR_r13_PR_subframePattern10_r13;
|
||||
= SystemInformationBlockType1_v1310_IEs__bandwidthReducedAccessRelatedInfo_r13__fdd_DownlinkOrTddSubframeBitmapBR_r13_PR_subframePattern40_r13;
|
||||
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->fdd_DownlinkOrTddSubframeBitmapBR_r13->choice.subframePattern40_r13.buf = calloc(5, sizeof(uint8_t));
|
||||
memmove(sib1_1310->bandwidthReducedAccessRelatedInfo_r13->fdd_DownlinkOrTddSubframeBitmapBR_r13->choice.subframePattern40_r13.buf, &configuration->fdd_DownlinkOrTddSubframeBitmapBR_val_r13[CC_id], 5 * sizeof(uint8_t));
|
||||
// memmove(sib1_1310->bandwidthReducedAccessRelatedInfo_r13->fdd_DownlinkOrTddSubframeBitmapBR_r13->choice.subframePattern40_r13.buf, &configuration->fdd_DownlinkOrTddSubframeBitmapBR_val_r13[CC_id], 5 * sizeof(uint8_t));
|
||||
int bm_index;
|
||||
for (bm_index = 0; bm_index < 5; bm_index++)
|
||||
{
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->fdd_DownlinkOrTddSubframeBitmapBR_r13->choice.subframePattern40_r13.buf[bm_index] = 0xFF;
|
||||
}
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->fdd_DownlinkOrTddSubframeBitmapBR_r13->choice.subframePattern40_r13.size = 5;
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->fdd_DownlinkOrTddSubframeBitmapBR_r13->choice.subframePattern40_r13.bits_unused = 0;
|
||||
}
|
||||
@@ -647,27 +652,37 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->si_ValidityTime_r13 = calloc(1, sizeof(long));
|
||||
memset(sib1_1310->bandwidthReducedAccessRelatedInfo_r13->si_ValidityTime_r13, 0, sizeof(long));
|
||||
*sib1_1310->bandwidthReducedAccessRelatedInfo_r13->si_ValidityTime_r13 = *configuration->si_ValidityTime_r13[CC_id];
|
||||
printf("[DEBUGGING][KOGO]: si_validity time = %d\n", *sib1_1310->bandwidthReducedAccessRelatedInfo_r13->si_ValidityTime_r13);
|
||||
}
|
||||
else
|
||||
{
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->si_ValidityTime_r13 = NULL;
|
||||
}
|
||||
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13 = calloc(1, sizeof(SystemInfoValueTagList_r13_t));
|
||||
SystemInfoValueTagSI_r13_t systemInfoValueTagSi_r13;
|
||||
|
||||
SystemInfoValueTagSI_r13_t *systemInfoValueTagSi_r13;
|
||||
int num_system_info_value_tag = configuration->system_info_value_tag_SI_size[CC_id];
|
||||
for (index = 0; index < num_system_info_value_tag; ++index)
|
||||
if (num_system_info_value_tag > 0)
|
||||
{
|
||||
if (configuration->systemInfoValueTagSi_r13[CC_id][index])
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13 = calloc(1, sizeof(SystemInfoValueTagList_r13_t));
|
||||
for (index = 0; index < num_system_info_value_tag; ++index)
|
||||
{
|
||||
systemInfoValueTagSi_r13 = configuration->systemInfoValueTagSi_r13[CC_id][index];
|
||||
systemInfoValueTagSi_r13 = CALLOC(1, sizeof(SystemInfoValueTagSI_r13_t));
|
||||
if (configuration->systemInfoValueTagSi_r13[CC_id][index])
|
||||
{
|
||||
*systemInfoValueTagSi_r13 = configuration->systemInfoValueTagSi_r13[CC_id][index];
|
||||
}
|
||||
else
|
||||
{
|
||||
*systemInfoValueTagSi_r13 = 0;
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13->list, systemInfoValueTagSi_r13);
|
||||
}
|
||||
else
|
||||
{
|
||||
systemInfoValueTagSi_r13 = 0;
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13->list, &systemInfoValueTagSi_r13);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13 = NULL;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -806,8 +821,9 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
|
||||
|
||||
|
||||
sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13 = calloc(1, sizeof(SystemInfoValueTagList_r13_t));
|
||||
SystemInfoValueTagSI_r13_t systemInfoValueTagSi_r13 = 0;
|
||||
ASN_SEQUENCE_ADD(&sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13->list, &systemInfoValueTagSi_r13);
|
||||
SystemInfoValueTagSI_r13_t *systemInfoValueTagSi_r13 = CALLOC(1, sizeof(SystemInfoValueTagSI_r13_t));
|
||||
*systemInfoValueTagSi_r13 = 0;
|
||||
ASN_SEQUENCE_ADD(&sib1_1310->bandwidthReducedAccessRelatedInfo_r13->systemInfoValueTagList_r13->list, systemInfoValueTagSi_r13);
|
||||
|
||||
sib1_1310->nonCriticalExtension = calloc(1, sizeof(SystemInformationBlockType1_v1320_IEs_t));
|
||||
memset(sib1_1310->nonCriticalExtension, 0, sizeof(SystemInformationBlockType1_v1320_IEs_t));
|
||||
@@ -1015,10 +1031,10 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
(*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1 = calloc(1, sizeof(struct RACH_ConfigCommon__ext1));
|
||||
memset((*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1, 0, sizeof(struct RACH_ConfigCommon__ext1));
|
||||
|
||||
if (rrconfig->rach_maxHARQ_Msg3Tx)
|
||||
if (rrconfig->preambleTransMax_CE_r13)
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1->preambleTransMax_CE_r13 = calloc(1, sizeof(PreambleTransMax_t));
|
||||
*(*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1->preambleTransMax_CE_r13 = rrconfig->rach_maxHARQ_Msg3Tx; // to be re-initialized when we find the enum
|
||||
*(*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1->preambleTransMax_CE_r13 = *rrconfig->preambleTransMax_CE_r13; // to be re-initialized when we find the enum
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1028,13 +1044,12 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
(*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1->rach_CE_LevelInfoList_r13 = calloc(1, sizeof(RACH_CE_LevelInfoList_r13_t));
|
||||
memset((*sib2)->radioResourceConfigCommon.rach_ConfigCommon.ext1->rach_CE_LevelInfoList_r13, 0, sizeof(RACH_CE_LevelInfoList_r13_t));
|
||||
|
||||
RACH_CE_LevelInfo_r13_t *rach_ce_levelinfo_r13 = calloc(1, sizeof(RACH_CE_LevelInfo_r13_t));
|
||||
memset(rach_ce_levelinfo_r13, 0, sizeof(RACH_CE_LevelInfo_r13_t));
|
||||
|
||||
RACH_CE_LevelInfo_r13_t *rach_ce_levelinfo_r13;
|
||||
int num_rach_ce_level_info = configuration->rach_CE_LevelInfoList_r13_size[CC_id];
|
||||
int index;
|
||||
for (index = 0; index < num_rach_ce_level_info; ++index)
|
||||
{
|
||||
rach_ce_levelinfo_r13 = calloc(1, sizeof(RACH_CE_LevelInfo_r13_t));
|
||||
if (configuration->rach_CE_LevelInfoList_r13_size[CC_id])
|
||||
{
|
||||
rach_ce_levelinfo_r13->preambleMappingInfo_r13.firstPreamble_r13 = configuration->firstPreamble_r13[CC_id][index];
|
||||
@@ -1167,34 +1182,196 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
// LTE-M - +Kogo
|
||||
(*sib2)->radioResourceConfigCommon.ext4 = calloc(1, sizeof(struct RadioResourceConfigCommonSIB__ext4));
|
||||
memset((*sib2)->radioResourceConfigCommon.ext4, 0, sizeof(struct RadioResourceConfigCommonSIB__ext4));
|
||||
(*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310 = calloc(1, sizeof(BCCH_Config_v1310_t));
|
||||
memset((*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310, 0, sizeof(BCCH_Config_v1310_t));
|
||||
(*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310->modificationPeriodCoeff_v1310 = BCCH_Config_v1310__modificationPeriodCoeff_v1310_n64;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pcch_Config_v1310 = NULL;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13 = NULL;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pdsch_ConfigCommon_v1310 = NULL;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pusch_ConfigCommon_v1310 = NULL;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310 = NULL; //calloc(1, sizeof(BCCH_Config_v1310_t));
|
||||
//memset((*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310, 0, sizeof(BCCH_Config_v1310_t));
|
||||
//(*sib2)->radioResourceConfigCommon.ext4->bcch_Config_v1310->modificationPeriodCoeff_v1310 = BCCH_Config_v1310__modificationPeriodCoeff_v1310_n64;
|
||||
|
||||
if (configuration->pcch_config_v1310)
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pcch_Config_v1310 = CALLOC(1, sizeof(PCCH_Config_v1310_t));
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pcch_Config_v1310->paging_narrowBands_r13 = configuration->paging_narrowbands_r13[CC_id];
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pcch_Config_v1310->mpdcch_NumRepetition_Paging_r13 = configuration->mpdcch_numrepetition_paging_r13[CC_id];
|
||||
if (configuration->nb_v1310[CC_id])
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pcch_Config_v1310->nB_v1310 = CALLOC(1, sizeof(long));
|
||||
*(*sib2)->radioResourceConfigCommon.ext4->pcch_Config_v1310->nB_v1310 = *configuration->nb_v1310[CC_id];
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pcch_Config_v1310->nB_v1310 = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pcch_Config_v1310 = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (configuration->sib2_freq_hoppingParameters_r13_exists[CC_id])
|
||||
{
|
||||
puts("[DEBUGGING][KOGO][SIB23]: Structure exists");
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13 = CALLOC(1, sizeof(FreqHoppingParameters_r13_t));
|
||||
if (configuration->sib2_mpdcch_pdsch_hoppingNB_r13[CC_id])
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->mpdcch_pdsch_HoppingNB_r13 = CALLOC(1, sizeof(long));
|
||||
*(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->mpdcch_pdsch_HoppingNB_r13 = *configuration->sib2_mpdcch_pdsch_hoppingNB_r13[CC_id];
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->mpdcch_pdsch_HoppingNB_r13 = NULL;
|
||||
}
|
||||
|
||||
if (configuration->sib2_interval_DLHoppingConfigCommonModeA_r13[CC_id])
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeA_r13
|
||||
= CALLOC(1, sizeof(struct FreqHoppingParameters_r13__interval_DLHoppingConfigCommonModeA_r13));
|
||||
if (*configuration->sib2_interval_DLHoppingConfigCommonModeA_r13[CC_id] == 0)
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeA_r13->present
|
||||
= FreqHoppingParameters_r13__interval_DLHoppingConfigCommonModeA_r13_PR_interval_FDD_r13;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeA_r13->choice.interval_FDD_r13
|
||||
= configuration->sib2_interval_DLHoppingConfigCommonModeA_r13_val[CC_id];
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeA_r13->present
|
||||
= FreqHoppingParameters_r13__interval_DLHoppingConfigCommonModeA_r13_PR_interval_TDD_r13;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeA_r13->choice.interval_TDD_r13
|
||||
= configuration->sib2_interval_DLHoppingConfigCommonModeA_r13_val[CC_id];
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeA_r13 = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (configuration->sib2_interval_DLHoppingConfigCommonModeB_r13[CC_id])
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeB_r13
|
||||
= CALLOC(1, sizeof(struct FreqHoppingParameters_r13__interval_DLHoppingConfigCommonModeB_r13));
|
||||
if (*configuration->sib2_interval_DLHoppingConfigCommonModeB_r13[CC_id] == 0)
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeB_r13->present
|
||||
= FreqHoppingParameters_r13__interval_DLHoppingConfigCommonModeB_r13_PR_interval_FDD_r13;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeB_r13->choice.interval_FDD_r13
|
||||
= configuration->sib2_interval_DLHoppingConfigCommonModeB_r13_val[CC_id];
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeB_r13->present
|
||||
= FreqHoppingParameters_r13__interval_DLHoppingConfigCommonModeB_r13_PR_interval_TDD_r13;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeB_r13->choice.interval_TDD_r13
|
||||
= configuration->sib2_interval_DLHoppingConfigCommonModeB_r13_val[CC_id];
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_DLHoppingConfigCommonModeB_r13 = NULL;
|
||||
}
|
||||
|
||||
if (configuration->sib2_interval_ULHoppingConfigCommonModeA_r13[CC_id])
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeA_r13
|
||||
= CALLOC(1, sizeof(struct FreqHoppingParameters_r13__interval_ULHoppingConfigCommonModeA_r13));
|
||||
if (*configuration->sib2_interval_ULHoppingConfigCommonModeA_r13[CC_id] == 0)
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeA_r13->present
|
||||
= FreqHoppingParameters_r13__interval_ULHoppingConfigCommonModeA_r13_PR_interval_FDD_r13;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeA_r13->choice.interval_FDD_r13
|
||||
= configuration->sib2_interval_ULHoppingConfigCommonModeA_r13_val[CC_id];
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeA_r13->present
|
||||
= FreqHoppingParameters_r13__interval_ULHoppingConfigCommonModeA_r13_PR_interval_TDD_r13;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeA_r13->choice.interval_TDD_r13
|
||||
= configuration->sib2_interval_ULHoppingConfigCommonModeA_r13_val[CC_id];
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeA_r13 = NULL;
|
||||
}
|
||||
|
||||
if (configuration->sib2_interval_ULHoppingConfigCommonModeB_r13[CC_id])
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeB_r13
|
||||
= CALLOC(1, sizeof(struct FreqHoppingParameters_r13__interval_ULHoppingConfigCommonModeB_r13));
|
||||
if (*configuration->sib2_interval_ULHoppingConfigCommonModeB_r13[CC_id] == 0)
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeB_r13->present
|
||||
= FreqHoppingParameters_r13__interval_ULHoppingConfigCommonModeB_r13_PR_interval_FDD_r13;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeB_r13->choice.interval_FDD_r13
|
||||
= configuration->sib2_interval_ULHoppingConfigCommonModeB_r13_val[CC_id];
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeB_r13->present
|
||||
= FreqHoppingParameters_r13__interval_ULHoppingConfigCommonModeB_r13_PR_interval_TDD_r13;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeB_r13->choice.interval_TDD_r13
|
||||
= configuration->sib2_interval_ULHoppingConfigCommonModeB_r13_val[CC_id];
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->interval_ULHoppingConfigCommonModeB_r13 = NULL;
|
||||
}
|
||||
|
||||
if (configuration->sib2_mpdcch_pdsch_hoppingOffset_r13[CC_id])
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->mpdcch_pdsch_HoppingOffset_r13 = CALLOC(1, sizeof(long));
|
||||
*(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->mpdcch_pdsch_HoppingOffset_r13 = *configuration->sib2_mpdcch_pdsch_hoppingOffset_r13[CC_id];
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13->mpdcch_pdsch_HoppingOffset_r13 = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->freqHoppingParameters_r13 = NULL;
|
||||
}
|
||||
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pdsch_ConfigCommon_v1310 = calloc(1,sizeof(PDSCH_ConfigCommon_v1310_t));
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pdsch_ConfigCommon_v1310->pdsch_maxNumRepetitionCEmodeA_r13 = calloc(1,sizeof(long));
|
||||
*(*sib2)->radioResourceConfigCommon.ext4->pdsch_ConfigCommon_v1310->pdsch_maxNumRepetitionCEmodeA_r13 = 0;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pdsch_ConfigCommon_v1310->pdsch_maxNumRepetitionCEmodeB_r13 = NULL;
|
||||
|
||||
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pusch_ConfigCommon_v1310 = calloc(1,sizeof(PUSCH_ConfigCommon_v1310_t));
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pusch_ConfigCommon_v1310->pusch_maxNumRepetitionCEmodeA_r13 = calloc(1,sizeof(long));
|
||||
*(*sib2)->radioResourceConfigCommon.ext4->pusch_ConfigCommon_v1310->pusch_maxNumRepetitionCEmodeA_r13 = 0;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pusch_ConfigCommon_v1310->pusch_maxNumRepetitionCEmodeB_r13 = NULL;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pusch_ConfigCommon_v1310->pusch_HoppingOffset_v1310 = NULL;
|
||||
|
||||
if (rrconfig->prach_ConfigCommon_v1310)
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->prach_ConfigCommon_v1310 = calloc(1, sizeof(PRACH_ConfigSIB_v1310_t));
|
||||
memset((*sib2)->radioResourceConfigCommon.ext4->prach_ConfigCommon_v1310, 0, sizeof(PRACH_ConfigSIB_v1310_t));
|
||||
|
||||
RSRP_Range_t rsrp_range;
|
||||
RSRP_Range_t *rsrp_range;
|
||||
int num_rsrp_range = configuration->rsrp_range_list_size[CC_id];
|
||||
int rsrp_index;
|
||||
for (rsrp_index = 0; rsrp_index < num_rsrp_range; ++rsrp_index)
|
||||
{
|
||||
rsrp_range = CALLOC(1, sizeof(RSRP_Range_t));
|
||||
if (configuration->rsrp_range_list_size[CC_id])
|
||||
{
|
||||
rsrp_range = configuration->rsrp_range[CC_id][rsrp_index];
|
||||
*rsrp_range = configuration->rsrp_range[CC_id][rsrp_index];
|
||||
printf("[DEBUGGING][KOGO][SIB23] : rsrp range = %d\n", *rsrp_range);
|
||||
}
|
||||
else
|
||||
{
|
||||
rsrp_range = 60;
|
||||
*rsrp_range = 60;
|
||||
}
|
||||
|
||||
ASN_SEQUENCE_ADD(&(*sib2)->radioResourceConfigCommon.ext4->prach_ConfigCommon_v1310->rsrp_ThresholdsPrachInfoList_r13.list, &rsrp_range);
|
||||
ASN_SEQUENCE_ADD(&(*sib2)->radioResourceConfigCommon.ext4->prach_ConfigCommon_v1310->rsrp_ThresholdsPrachInfoList_r13.list, rsrp_range);
|
||||
}
|
||||
|
||||
|
||||
@@ -1227,92 +1404,140 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
(*sib2)->radioResourceConfigCommon.ext4->prach_ConfigCommon_v1310->prach_HoppingOffset_r13 = NULL;
|
||||
}
|
||||
|
||||
PRACH_ParametersCE_r13_t *prach_parametersce_r13 = calloc(1, sizeof(PRACH_ParametersCE_r13_t));
|
||||
memset(prach_parametersce_r13, 0, sizeof(PRACH_ParametersCE_r13_t));
|
||||
PRACH_ParametersCE_r13_t *prach_parametersce_r13;
|
||||
|
||||
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)
|
||||
{
|
||||
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 = *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 = *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];
|
||||
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 = 2;
|
||||
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
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->prach_ConfigCommon_v1310 = NULL;
|
||||
}
|
||||
|
||||
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310 = calloc(1, sizeof(PUCCH_ConfigCommon_v1310_t));
|
||||
memset((*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310, 0, sizeof(PUCCH_ConfigCommon_v1310_t));
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->n1PUCCH_AN_InfoList_r13 = calloc(1, sizeof(N1PUCCH_AN_InfoList_r13_t));
|
||||
|
||||
int num_pucch_info_list = configuration->pucch_info_value_size[CC_id];
|
||||
int pucch_index;
|
||||
long pucch_info_value;
|
||||
long *pucch_info_value;
|
||||
for (pucch_index = 0; pucch_index < num_pucch_info_list; ++pucch_index)
|
||||
{
|
||||
pucch_info_value = CALLOC(1, sizeof(long));
|
||||
if (configuration->pucch_info_value_size[CC_id])
|
||||
{
|
||||
pucch_info_value = configuration->pucch_info_value[CC_id][pucch_index];
|
||||
*pucch_info_value = configuration->pucch_info_value[CC_id][pucch_index];
|
||||
}
|
||||
else
|
||||
{
|
||||
pucch_info_value = 0;
|
||||
*pucch_info_value = 0;
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->n1PUCCH_AN_InfoList_r13->list, &pucch_info_value);
|
||||
ASN_SEQUENCE_ADD(&(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->n1PUCCH_AN_InfoList_r13->list, pucch_info_value);
|
||||
}
|
||||
|
||||
if (configuration->pucch_NumRepetitionCE_Msg4_Level0_r13[CC_id])
|
||||
{
|
||||
puts("LEVEL 0");
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level0_r13 = CALLOC(1, sizeof(long));
|
||||
*(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level0_r13 = *configuration->pucch_NumRepetitionCE_Msg4_Level0_r13[CC_id];
|
||||
printf("[DEBUGGING][KOGO][SIB23]: pucch_NumRepetitionCE_Msg4_Level0_r13 = %d\n", *(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level0_r13);
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level0_r13 = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (configuration->pucch_NumRepetitionCE_Msg4_Level1_r13[CC_id])
|
||||
{
|
||||
puts("LEVEL 1");
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level1_r13 = CALLOC(1, sizeof(long));
|
||||
*(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level1_r13 = *configuration->pucch_NumRepetitionCE_Msg4_Level1_r13[CC_id];
|
||||
printf("[DEBUGGING][KOGO][SIB23]: pucch_NumRepetitionCE_Msg4_Level1_r13 = %d\n", *(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level1_r13);
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level1_r13 = NULL;
|
||||
}
|
||||
|
||||
if (configuration->pucch_NumRepetitionCE_Msg4_Level2_r13[CC_id])
|
||||
{
|
||||
puts("LEVEL 2");
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level2_r13 = CALLOC(1, sizeof(long));
|
||||
*(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level2_r13 = *configuration->pucch_NumRepetitionCE_Msg4_Level2_r13[CC_id];
|
||||
printf("[DEBUGGING][KOGO][SIB23]: pucch_NumRepetitionCE_Msg4_Level2_r13 = %d\n", *(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level2_r13);
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level2_r13 = NULL;
|
||||
}
|
||||
|
||||
if (configuration->pucch_NumRepetitionCE_Msg4_Level3_r13[CC_id])
|
||||
{
|
||||
puts("LEVEL 3");
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level3_r13 = CALLOC(1, sizeof(long));
|
||||
*(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level3_r13 = *configuration->pucch_NumRepetitionCE_Msg4_Level3_r13[CC_id];
|
||||
printf("[DEBUGGING][KOGO][SIB23]: pucch_NumRepetitionCE_Msg4_Level3_r13 = %d\n", *(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level3_r13);
|
||||
}
|
||||
else
|
||||
{
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level3_r13 = NULL;
|
||||
}
|
||||
|
||||
// +kogo FIXME
|
||||
// ASN_SEQUENCE_ADD(&(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->n1PUCCH_AN_InfoList_r13->list, &pucch_info_value2);
|
||||
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level0_r13 = NULL;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level1_r13 = NULL;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level2_r13 = NULL;
|
||||
(*sib2)->radioResourceConfigCommon.ext4->pucch_ConfigCommon_v1310->pucch_NumRepetitionCE_Msg4_Level3_r13 = NULL;
|
||||
//-----------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -1514,7 +1739,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
|
||||
sib2_mbsfn_SubframeConfig1->subframeAllocation.choice.oneFrame.buf[0]=0x38<<2;
|
||||
|
||||
ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list,sib2_mbsfn_SubframeConfig1);
|
||||
ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list, sib2_mbsfn_SubframeConfig1);
|
||||
|
||||
if (MBMS_flag == 4 ) {
|
||||
LOG_I(RRC,"Adding MBSFN subframe Configuration 2 to SIB2\n");
|
||||
@@ -1532,7 +1757,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
sib2_mbsfn_SubframeConfig2->subframeAllocation.choice.oneFrame.buf[0]=0x07<<2;
|
||||
|
||||
|
||||
ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list,sib2_mbsfn_SubframeConfig2);
|
||||
ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list, sib2_mbsfn_SubframeConfig2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1556,16 +1781,16 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
|
||||
(*sib3)->cellReselectionInfoCommon.speedStateReselectionPars=NULL;
|
||||
|
||||
(*sib3)->cellReselectionServingFreqInfo.s_NonIntraSearch=NULL;
|
||||
(*sib3)->cellReselectionServingFreqInfo.threshServingLow=31;
|
||||
(*sib3)->cellReselectionServingFreqInfo.cellReselectionPriority=7;
|
||||
(*sib3)->cellReselectionServingFreqInfo.s_NonIntraSearch = NULL;
|
||||
(*sib3)->cellReselectionServingFreqInfo.threshServingLow = 0;
|
||||
(*sib3)->cellReselectionServingFreqInfo.s_NonIntraSearch = 0;
|
||||
(*sib3)->cellReselectionServingFreqInfo.cellReselectionPriority = 7;
|
||||
|
||||
(*sib3)->intraFreqCellReselectionInfo.q_RxLevMin = -70;
|
||||
(*sib3)->intraFreqCellReselectionInfo.p_Max = NULL;
|
||||
(*sib3)->intraFreqCellReselectionInfo.s_IntraSearch = CALLOC(1,sizeof(*(*sib3)->intraFreqCellReselectionInfo.s_IntraSearch));
|
||||
*(*sib3)->intraFreqCellReselectionInfo.s_IntraSearch = 31;
|
||||
(*sib3)->intraFreqCellReselectionInfo.allowedMeasBandwidth=CALLOC(1,sizeof(*(*sib3)->intraFreqCellReselectionInfo.allowedMeasBandwidth));
|
||||
|
||||
*(*sib3)->intraFreqCellReselectionInfo.allowedMeasBandwidth = AllowedMeasBandwidth_mbw6;
|
||||
|
||||
(*sib3)->intraFreqCellReselectionInfo.presenceAntennaPort1 = 0;
|
||||
@@ -1573,9 +1798,21 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
(*sib3)->intraFreqCellReselectionInfo.neighCellConfig.size = 1;
|
||||
(*sib3)->intraFreqCellReselectionInfo.neighCellConfig.buf[0] = 1;
|
||||
(*sib3)->intraFreqCellReselectionInfo.neighCellConfig.bits_unused = 6;
|
||||
(*sib3)->intraFreqCellReselectionInfo.t_ReselectionEUTRA = 1;
|
||||
(*sib3)->intraFreqCellReselectionInfo.t_ReselectionEUTRA = 2;
|
||||
(*sib3)->intraFreqCellReselectionInfo.t_ReselectionEUTRA_SF = (struct SpeedStateScaleFactors *)NULL;
|
||||
|
||||
(*sib3)->ext1 = CALLOC(1, sizeof(struct SystemInformationBlockType3__ext1));
|
||||
(*sib3)->ext1->s_IntraSearch_v920 = CALLOC(1, sizeof(struct SystemInformationBlockType3__ext1__s_IntraSearch_v920));
|
||||
(*sib3)->ext1->s_IntraSearch_v920->s_IntraSearchP_r9 = 31; // FIXME
|
||||
(*sib3)->ext1->s_IntraSearch_v920->s_IntraSearchQ_r9 = 4;
|
||||
|
||||
(*sib3)->ext4 = CALLOC(1, sizeof(struct SystemInformationBlockType3__ext4));
|
||||
(*sib3)->ext4->cellSelectionInfoCE_r13 = CALLOC(1, sizeof(CellSelectionInfoCE_r13_t));
|
||||
(*sib3)->ext4->cellSelectionInfoCE_r13->q_RxLevMinCE_r13 = -70;
|
||||
(*sib3)->ext4->cellSelectionInfoCE_r13->q_QualMinRSRQ_CE_r13 = NULL;
|
||||
(*sib3)->ext4->t_ReselectionEUTRA_CE_r13 = CALLOC(1, sizeof(T_ReselectionEUTRA_CE_r13_t));
|
||||
*(*sib3)->ext4->t_ReselectionEUTRA_CE_r13 = 2;
|
||||
|
||||
// SIB13
|
||||
// fill in all elements of SIB13 if present
|
||||
#if defined(Rel10) || defined(Rel14)
|
||||
@@ -1657,7 +1894,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
|
||||
#if defined(Rel10) || defined(Rel14)
|
||||
|
||||
if (MBMS_flag > 0) {
|
||||
ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list,sib13_part);
|
||||
ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib13_part);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user