Commit cb907c41 authored by Vaibhav Shrivastava's avatar Vaibhav Shrivastava

SIB5 Redesign Changes

parent 833024ce
...@@ -323,35 +323,36 @@ typedef struct threshX_Q_r9_s { ...@@ -323,35 +323,36 @@ typedef struct threshX_Q_r9_s {
}threshX_Q_r9_t; }threshX_Q_r9_t;
typedef struct InterFreqCarrierFreqInfo_s { typedef struct InterFreqCarrierFreqInfo_s {
long dl_CarrierFreq[MAX_NUM_CCs]; long dl_CarrierFreq;
long q_RxLevMin[MAX_NUM_CCs]; long q_RxLevMin;
bool p_Max_Present[MAX_NUM_CCs]; bool p_Max_Present;
long p_Max[MAX_NUM_CCs]; /* OPTIONAL */ long p_Max; /* OPTIONAL */
long t_ReselectionEUTRA[MAX_NUM_CCs]; long t_ReselectionEUTRA;
bool t_ReselectionEUTRA_SF_Present[MAX_NUM_CCs]; bool t_ReselectionEUTRA_SF_Present;
LTE_SpeedStateScaleFactors_t *t_ReselectionEUTRA_SF[MAX_NUM_CCs]; /* OPTIONAL */ LTE_SpeedStateScaleFactors_t *t_ReselectionEUTRA_SF; /* OPTIONAL */
long threshX_High[MAX_NUM_CCs]; long threshX_High;
long threshX_Low[MAX_NUM_CCs]; long threshX_Low;
long allowedMeasBandwidth[MAX_NUM_CCs]; long allowedMeasBandwidth;
bool presenceAntennaPort1[MAX_NUM_CCs]; bool presenceAntennaPort1;
bool cellReselectionPriority_Present[MAX_NUM_CCs]; bool cellReselectionPriority_Present;
long *cellReselectionPriority[MAX_NUM_CCs];/* OPTIONAL */ long *cellReselectionPriority;/* OPTIONAL */
LTE_NeighCellConfig_t neighCellConfig[MAX_NUM_CCs]; LTE_NeighCellConfig_t neighCellConfig;
bool q_OffsetFreqPresent[MAX_NUM_CCs]; bool q_OffsetFreqPresent;
e_LTE_Q_OffsetRange *q_OffsetFreq[MAX_NUM_CCs];/* OPTIONAL */ e_LTE_Q_OffsetRange *q_OffsetFreq;/* OPTIONAL */
bool interFreqNeighCellList_Present[MAX_NUM_CCs]; bool interFreqNeighCellList_Present;
LTE_InterFreqNeighCellInfo_t *interFreqNeighCellList[MAX_NUM_CCs];/* OPTIONAL */ LTE_InterFreqNeighCellInfo_t *interFreqNeighCellList;/* OPTIONAL */
bool interFreqBlackCellList_Present[MAX_NUM_CCs]; bool interFreqBlackCellList_Present;
PhysCellIdRange_t *interFreqBlackCellList[MAX_NUM_CCs];/* OPTIONAL */ PhysCellIdRange_t *interFreqBlackCellList;/* OPTIONAL */
bool q_QualMin_r9_Present[MAX_NUM_CCs]; bool q_QualMin_r9_Present;
long *q_QualMin_r9[MAX_NUM_CCs];/* OPTIONAL */ long *q_QualMin_r9;/* OPTIONAL */
bool threshX_Q_r9_Present[MAX_NUM_CCs]; bool threshX_Q_r9_Present;
threshX_Q_r9_t threshX_Q_r9[MAX_NUM_CCs];/* OPTIONAL */ threshX_Q_r9_t threshX_Q_r9;/* OPTIONAL */
bool q_QualMinWB_r11_Present[MAX_NUM_CCs]; bool q_QualMinWB_r11_Present;
long *q_QualMinWB_r11[MAX_NUM_CCs];/* OPTIONAL */ long *q_QualMinWB_r11;/* OPTIONAL */
}InterFreqCarrierFreqInfo_t; }InterFreqCarrierFreqInfo_t;
typedef struct IntraFreqNeighCellInfo_s { typedef struct IntraFreqNeighCellInfo_s {
int intraFreqNeighCellListCount;
long physCellId; long physCellId;
e_LTE_Q_OffsetRange q_OffsetCell; e_LTE_Q_OffsetRange q_OffsetCell;
}IntraFreqNeighCellInfo_t; }IntraFreqNeighCellInfo_t;
...@@ -479,14 +480,14 @@ typedef struct RrcConfigurationReq_s { ...@@ -479,14 +480,14 @@ typedef struct RrcConfigurationReq_s {
long t_ReselectionEUTRA[MAX_NUM_CCs]; long t_ReselectionEUTRA[MAX_NUM_CCs];
//SIB4 //SIB4
bool sib4_Present; bool sib4_Present[MAX_NUM_CCs];
bool intraFreqNeighCellListPresent; bool intraFreqNeighCellListPresent;
IntraFreqNeighCellInfo_t *intraFreqNeighCellList; IntraFreqNeighCellInfo_t *intraFreqNeighCellList[MAX_NUM_CCs];
//SIB5 //SIB5
bool sib5_Present; bool sib5_Present[MAX_NUM_CCs];
int InterFreqCarrierFreqInfoCount; int InterFreqCarrierFreqInfoCount;
InterFreqCarrierFreqInfo_t *InterFreqCarrierFreqInfo; InterFreqCarrierFreqInfo_t *InterFreqCarrierFreqInfo[MAX_NUM_CCs];
//SIB18 //SIB18
e_LTE_SL_CP_Len_r12 rxPool_sc_CP_Len[MAX_NUM_CCs]; e_LTE_SL_CP_Len_r12 rxPool_sc_CP_Len[MAX_NUM_CCs];
......
...@@ -422,7 +422,6 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) { ...@@ -422,7 +422,6 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
paramlist_def_t PLMNParamList = {ENB_CONFIG_STRING_PLMN_LIST, NULL, 0}; paramlist_def_t PLMNParamList = {ENB_CONFIG_STRING_PLMN_LIST, NULL, 0};
/* map parameter checking array instances to parameter definition array instances */ /* map parameter checking array instances to parameter definition array instances */
checkedparam_t config_check_PLMNParams [] = PLMNPARAMS_CHECK; checkedparam_t config_check_PLMNParams [] = PLMNPARAMS_CHECK;
RRC_CONFIGURATION_REQ (msg_p).InterFreqCarrierFreqInfo = CALLOC(1,sizeof(struct InterFreqCarrierFreqInfo_s));
for (int I = 0; I < sizeof(PLMNParams) / sizeof(paramdef_t); ++I) for (int I = 0; I < sizeof(PLMNParams) / sizeof(paramdef_t); ++I)
PLMNParams[I].chkPptr = &(config_check_PLMNParams[I]); PLMNParams[I].chkPptr = &(config_check_PLMNParams[I]);
...@@ -434,11 +433,6 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) { ...@@ -434,11 +433,6 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
RRC_CONFIGURATION_REQ (msg_p).cellReselectionPriority[M]=7; RRC_CONFIGURATION_REQ (msg_p).cellReselectionPriority[M]=7;
RRC_CONFIGURATION_REQ (msg_p).sib3_q_RxLevMin[M]=-70; RRC_CONFIGURATION_REQ (msg_p).sib3_q_RxLevMin[M]=-70;
RRC_CONFIGURATION_REQ (msg_p).t_ReselectionEUTRA[M]=1; RRC_CONFIGURATION_REQ (msg_p).t_ReselectionEUTRA[M]=1;
RRC_CONFIGURATION_REQ (msg_p).InterFreqCarrierFreqInfo[k].dl_CarrierFreq[M]=300;
RRC_CONFIGURATION_REQ (msg_p).InterFreqCarrierFreqInfo[k].q_RxLevMin[M]=-53;
RRC_CONFIGURATION_REQ (msg_p).InterFreqCarrierFreqInfo[k].threshX_High[M]=10;
RRC_CONFIGURATION_REQ (msg_p).InterFreqCarrierFreqInfo[k].threshX_Low[M]=1;
RRC_CONFIGURATION_REQ (msg_p).InterFreqCarrierFreqInfo[k].allowedMeasBandwidth[M]=3;
} }
// In the configuration file it is in seconds. For RRC it has to be in milliseconds // In the configuration file it is in seconds. For RRC it has to be in milliseconds
......
...@@ -2406,65 +2406,66 @@ uint8_t do_SIB5(uint8_t Mod_id, ...@@ -2406,65 +2406,66 @@ uint8_t do_SIB5(uint8_t Mod_id,
memset(sib5_part,0,sizeof(struct LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); memset(sib5_part,0,sizeof(struct LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
sib5_part->present = LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5; sib5_part->present = LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5;
*sib5 = &sib5_part->choice.sib5; *sib5 = &sib5_part->choice.sib5;
LTE_InterFreqCarrierFreqInfo_t *InterFreqCarrierInfo; LTE_InterFreqCarrierFreqInfo_t *InterFreqCarrierInfo;
InterFreqCarrierInfo = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo)); InterFreqCarrierInfo = CALLOC(configuration->InterFreqCarrierFreqInfoCount,sizeof(struct LTE_InterFreqCarrierFreqInfo));
for(int i=0;i<configuration->InterFreqCarrierFreqInfoCount;i++) { for(int i=0;i<configuration->InterFreqCarrierFreqInfoCount;i++) {
InterFreqCarrierInfo->dl_CarrierFreq = configuration->InterFreqCarrierFreqInfo[i].dl_CarrierFreq[CC_id]; InterFreqCarrierInfo[i].dl_CarrierFreq = configuration->InterFreqCarrierFreqInfo[CC_id][i].dl_CarrierFreq;
InterFreqCarrierInfo->q_RxLevMin = configuration->InterFreqCarrierFreqInfo[i].q_RxLevMin[CC_id]; InterFreqCarrierInfo[i].q_RxLevMin = configuration->InterFreqCarrierFreqInfo[CC_id][i].q_RxLevMin;
if(true == configuration->InterFreqCarrierFreqInfo[i].p_Max_Present[CC_id]) { if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].p_Max_Present) {
InterFreqCarrierInfo->p_Max = configuration->InterFreqCarrierFreqInfo[i].p_Max[CC_id]; InterFreqCarrierInfo[i].p_Max = configuration->InterFreqCarrierFreqInfo[CC_id][i].p_Max;
} }
InterFreqCarrierInfo->t_ReselectionEUTRA = configuration->InterFreqCarrierFreqInfo[i].t_ReselectionEUTRA[CC_id]; InterFreqCarrierInfo[i].t_ReselectionEUTRA = configuration->InterFreqCarrierFreqInfo[CC_id][i].t_ReselectionEUTRA;
if(true == configuration->InterFreqCarrierFreqInfo[i].t_ReselectionEUTRA_SF_Present[CC_id]) { if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].t_ReselectionEUTRA_SF_Present) {
InterFreqCarrierInfo->t_ReselectionEUTRA_SF = configuration->InterFreqCarrierFreqInfo[i].t_ReselectionEUTRA_SF[CC_id]; InterFreqCarrierInfo[i].t_ReselectionEUTRA_SF = configuration->InterFreqCarrierFreqInfo[CC_id][i].t_ReselectionEUTRA_SF;
} }
InterFreqCarrierInfo->threshX_High = configuration->InterFreqCarrierFreqInfo[i].threshX_High[CC_id]; InterFreqCarrierInfo[i].threshX_High = configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_High;
InterFreqCarrierInfo->threshX_Low = configuration->InterFreqCarrierFreqInfo[i].threshX_Low[CC_id]; InterFreqCarrierInfo[i].threshX_Low = configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_Low;
InterFreqCarrierInfo->allowedMeasBandwidth = configuration->InterFreqCarrierFreqInfo[i].allowedMeasBandwidth[CC_id]; InterFreqCarrierInfo[i].allowedMeasBandwidth = configuration->InterFreqCarrierFreqInfo[CC_id][i].allowedMeasBandwidth;
InterFreqCarrierInfo->presenceAntennaPort1 = configuration->InterFreqCarrierFreqInfo[i].presenceAntennaPort1[CC_id]; InterFreqCarrierInfo[i].presenceAntennaPort1 = configuration->InterFreqCarrierFreqInfo[CC_id][i].presenceAntennaPort1;
if(true == configuration->InterFreqCarrierFreqInfo[i].cellReselectionPriority_Present[CC_id]) { if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].cellReselectionPriority_Present) {
InterFreqCarrierInfo->cellReselectionPriority = configuration->InterFreqCarrierFreqInfo[i].cellReselectionPriority[CC_id]; InterFreqCarrierInfo[i].cellReselectionPriority = configuration->InterFreqCarrierFreqInfo[CC_id][i].cellReselectionPriority;
} }
InterFreqCarrierInfo->neighCellConfig.size = 0;//1; InterFreqCarrierInfo[i].neighCellConfig.size = 0;//1;
//InterFreqCarrierInfo->neighCellConfig.buf = CALLOC(1,1); //InterFreqCarrierInfo->neighCellConfig.buf = CALLOC(1,1);
InterFreqCarrierInfo->neighCellConfig.bits_unused = 0; InterFreqCarrierInfo[i].neighCellConfig.bits_unused = 0;
InterFreqCarrierInfo->neighCellConfig.buf = NULL;//[0] = 0x01<<4; InterFreqCarrierInfo[i].neighCellConfig.buf = NULL;//[0] = 0x01<<4;
if(true == configuration->InterFreqCarrierFreqInfo[i].q_OffsetFreqPresent[CC_id]) { if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].q_OffsetFreqPresent) {
InterFreqCarrierInfo->q_OffsetFreq = configuration->InterFreqCarrierFreqInfo[i].q_OffsetFreq[CC_id]; InterFreqCarrierInfo[i].q_OffsetFreq = configuration->InterFreqCarrierFreqInfo[CC_id][i].q_OffsetFreq;
} }
if(true == configuration->InterFreqCarrierFreqInfo[i].interFreqNeighCellList_Present[CC_id]) { if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].interFreqNeighCellList_Present) {
InterFreqCarrierInfo->interFreqNeighCellList = CALLOC(1,sizeof(struct LTE_InterFreqNeighCellList)); InterFreqCarrierInfo[i].interFreqNeighCellList = CALLOC(1,sizeof(struct LTE_InterFreqNeighCellList));
InterFreqCarrierInfo->interFreqNeighCellList = configuration->InterFreqCarrierFreqInfo[i].interFreqNeighCellList[CC_id]; InterFreqCarrierInfo[i].interFreqNeighCellList = configuration->InterFreqCarrierFreqInfo[CC_id][i].interFreqNeighCellList;
} }
if(true == configuration->InterFreqCarrierFreqInfo[i].interFreqBlackCellList_Present[CC_id]) { if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].interFreqBlackCellList_Present) {
InterFreqCarrierInfo->interFreqBlackCellList = CALLOC(1,sizeof(struct LTE_InterFreqBlackCellList)); InterFreqCarrierInfo[i].interFreqBlackCellList = CALLOC(1,sizeof(struct LTE_InterFreqBlackCellList));
InterFreqCarrierInfo->interFreqBlackCellList = configuration->InterFreqCarrierFreqInfo[i].interFreqBlackCellList[CC_id]; InterFreqCarrierInfo[i].interFreqBlackCellList = configuration->InterFreqCarrierFreqInfo[CC_id][i].interFreqBlackCellList;
} }
if ((true == configuration->InterFreqCarrierFreqInfo[i].threshX_Q_r9_Present[CC_id]) || if ((true == configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_Q_r9_Present) ||
(true == configuration->InterFreqCarrierFreqInfo[i].q_QualMin_r9_Present[CC_id])) { (true == configuration->InterFreqCarrierFreqInfo[CC_id][i].q_QualMin_r9_Present)) {
InterFreqCarrierInfo->ext1 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext1)); InterFreqCarrierInfo[i].ext1 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext1));
LOG_A(RRC,"add ext1 for CC_ID %d\n ",CC_id); LOG_A(RRC,"add ext1 for CC_ID %d\n ",CC_id);
} }
if(true == configuration->InterFreqCarrierFreqInfo[i].q_QualMin_r9_Present[CC_id]) { if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].q_QualMin_r9_Present) {
InterFreqCarrierInfo->ext1->q_QualMin_r9 = CALLOC(1,sizeof(LTE_Q_QualMin_r9_t)); InterFreqCarrierInfo[i].ext1->q_QualMin_r9 = CALLOC(1,sizeof(LTE_Q_QualMin_r9_t));
InterFreqCarrierInfo->ext1->q_QualMin_r9 = configuration->InterFreqCarrierFreqInfo[i].q_QualMin_r9[CC_id]; InterFreqCarrierInfo[i].ext1->q_QualMin_r9 = configuration->InterFreqCarrierFreqInfo[CC_id][i].q_QualMin_r9;
} }
if(true == configuration->InterFreqCarrierFreqInfo[i].threshX_Q_r9_Present[CC_id]) { if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_Q_r9_Present) {
InterFreqCarrierInfo->ext1->threshX_Q_r9 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext1__threshX_Q_r9)); InterFreqCarrierInfo[i].ext1->threshX_Q_r9 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext1__threshX_Q_r9));
InterFreqCarrierInfo->ext1->threshX_Q_r9->threshX_HighQ_r9 = configuration->InterFreqCarrierFreqInfo[i].threshX_Q_r9[CC_id].threshX_HighQ_r9; InterFreqCarrierInfo[i].ext1->threshX_Q_r9->threshX_HighQ_r9 = configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_Q_r9.threshX_HighQ_r9;
InterFreqCarrierInfo->ext1->threshX_Q_r9->threshX_LowQ_r9 = configuration->InterFreqCarrierFreqInfo[i].threshX_Q_r9[CC_id].threshX_LowQ_r9; InterFreqCarrierInfo[i].ext1->threshX_Q_r9->threshX_LowQ_r9 = configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_Q_r9.threshX_LowQ_r9;
LOG_A(RRC,"add ext1 threshX_Q_r9 Low and high for CC_ID %d threshX_HighQ_r9 %d threshX_LowQ_r9 %d\n ",CC_id, LOG_A(RRC,"add ext1 threshX_Q_r9 Low and high for CC_ID %d threshX_HighQ_r9 %d threshX_LowQ_r9 %d\n ",CC_id,
InterFreqCarrierInfo->ext1->threshX_Q_r9->threshX_HighQ_r9, InterFreqCarrierInfo[i].ext1->threshX_Q_r9->threshX_HighQ_r9,
InterFreqCarrierInfo->ext1->threshX_Q_r9->threshX_LowQ_r9); InterFreqCarrierInfo[i].ext1->threshX_Q_r9->threshX_LowQ_r9);
} }
if(true == configuration->InterFreqCarrierFreqInfo[i].q_QualMinWB_r11_Present[CC_id]) { if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].q_QualMinWB_r11_Present) {
InterFreqCarrierInfo->ext2 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext2)); InterFreqCarrierInfo[i].ext2 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext2));
InterFreqCarrierInfo->ext2->q_QualMinWB_r11 = CALLOC(1,sizeof(LTE_Q_QualMin_r9_t)); InterFreqCarrierInfo[i].ext2->q_QualMinWB_r11 = CALLOC(1,sizeof(LTE_Q_QualMin_r9_t));
InterFreqCarrierInfo->ext2->q_QualMinWB_r11 = configuration->InterFreqCarrierFreqInfo[i].q_QualMinWB_r11[CC_id]; InterFreqCarrierInfo[i].ext2->q_QualMinWB_r11 = configuration->InterFreqCarrierFreqInfo[CC_id][i].q_QualMinWB_r11;
} }
ASN_SEQUENCE_ADD(&(*sib5)->interFreqCarrierFreqList.list,InterFreqCarrierInfo);
} }
ASN_SEQUENCE_ADD(&(*sib5)->interFreqCarrierFreqList.list,InterFreqCarrierInfo);
(*sib5)->lateNonCriticalExtension = NULL; (*sib5)->lateNonCriticalExtension = NULL;
(*sib5)->ext1 = NULL; (*sib5)->ext1 = NULL;
......
...@@ -336,7 +336,7 @@ init_SI( ...@@ -336,7 +336,7 @@ init_SI(
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift); carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift);
if(true == configuration->sib4_Present) { if(true == configuration->sib4_Present[CC_id]) {
if(NULL == carrier->SIB4) { if(NULL == carrier->SIB4) {
carrier->SIB4 = (uint8_t *) malloc16(64); carrier->SIB4 = (uint8_t *) malloc16(64);
} }
...@@ -350,7 +350,7 @@ init_SI( ...@@ -350,7 +350,7 @@ init_SI(
AssertFatal(carrier->sizeof_SIB4 != 255,"FATAL, RC.rrc[mod].carrier[CC_id].sizeof_SIB4 == 255"); AssertFatal(carrier->sizeof_SIB4 != 255,"FATAL, RC.rrc[mod].carrier[CC_id].sizeof_SIB4 == 255");
} }
if(true == configuration->sib5_Present) { if(true == configuration->sib5_Present[CC_id]) {
if(NULL == carrier->SIB5) { if(NULL == carrier->SIB5) {
carrier->SIB5 = (uint8_t *) malloc16(64); carrier->SIB5 = (uint8_t *) malloc16(64);
} }
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment