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 {
}threshX_Q_r9_t;
typedef struct InterFreqCarrierFreqInfo_s {
long dl_CarrierFreq[MAX_NUM_CCs];
long q_RxLevMin[MAX_NUM_CCs];
bool p_Max_Present[MAX_NUM_CCs];
long p_Max[MAX_NUM_CCs]; /* OPTIONAL */
long t_ReselectionEUTRA[MAX_NUM_CCs];
bool t_ReselectionEUTRA_SF_Present[MAX_NUM_CCs];
LTE_SpeedStateScaleFactors_t *t_ReselectionEUTRA_SF[MAX_NUM_CCs]; /* OPTIONAL */
long threshX_High[MAX_NUM_CCs];
long threshX_Low[MAX_NUM_CCs];
long allowedMeasBandwidth[MAX_NUM_CCs];
bool presenceAntennaPort1[MAX_NUM_CCs];
bool cellReselectionPriority_Present[MAX_NUM_CCs];
long *cellReselectionPriority[MAX_NUM_CCs];/* OPTIONAL */
LTE_NeighCellConfig_t neighCellConfig[MAX_NUM_CCs];
bool q_OffsetFreqPresent[MAX_NUM_CCs];
e_LTE_Q_OffsetRange *q_OffsetFreq[MAX_NUM_CCs];/* OPTIONAL */
bool interFreqNeighCellList_Present[MAX_NUM_CCs];
LTE_InterFreqNeighCellInfo_t *interFreqNeighCellList[MAX_NUM_CCs];/* OPTIONAL */
bool interFreqBlackCellList_Present[MAX_NUM_CCs];
PhysCellIdRange_t *interFreqBlackCellList[MAX_NUM_CCs];/* OPTIONAL */
bool q_QualMin_r9_Present[MAX_NUM_CCs];
long *q_QualMin_r9[MAX_NUM_CCs];/* OPTIONAL */
bool threshX_Q_r9_Present[MAX_NUM_CCs];
threshX_Q_r9_t threshX_Q_r9[MAX_NUM_CCs];/* OPTIONAL */
bool q_QualMinWB_r11_Present[MAX_NUM_CCs];
long *q_QualMinWB_r11[MAX_NUM_CCs];/* OPTIONAL */
long dl_CarrierFreq;
long q_RxLevMin;
bool p_Max_Present;
long p_Max; /* OPTIONAL */
long t_ReselectionEUTRA;
bool t_ReselectionEUTRA_SF_Present;
LTE_SpeedStateScaleFactors_t *t_ReselectionEUTRA_SF; /* OPTIONAL */
long threshX_High;
long threshX_Low;
long allowedMeasBandwidth;
bool presenceAntennaPort1;
bool cellReselectionPriority_Present;
long *cellReselectionPriority;/* OPTIONAL */
LTE_NeighCellConfig_t neighCellConfig;
bool q_OffsetFreqPresent;
e_LTE_Q_OffsetRange *q_OffsetFreq;/* OPTIONAL */
bool interFreqNeighCellList_Present;
LTE_InterFreqNeighCellInfo_t *interFreqNeighCellList;/* OPTIONAL */
bool interFreqBlackCellList_Present;
PhysCellIdRange_t *interFreqBlackCellList;/* OPTIONAL */
bool q_QualMin_r9_Present;
long *q_QualMin_r9;/* OPTIONAL */
bool threshX_Q_r9_Present;
threshX_Q_r9_t threshX_Q_r9;/* OPTIONAL */
bool q_QualMinWB_r11_Present;
long *q_QualMinWB_r11;/* OPTIONAL */
}InterFreqCarrierFreqInfo_t;
typedef struct IntraFreqNeighCellInfo_s {
int intraFreqNeighCellListCount;
long physCellId;
e_LTE_Q_OffsetRange q_OffsetCell;
}IntraFreqNeighCellInfo_t;
......@@ -479,14 +480,14 @@ typedef struct RrcConfigurationReq_s {
long t_ReselectionEUTRA[MAX_NUM_CCs];
//SIB4
bool sib4_Present;
bool sib4_Present[MAX_NUM_CCs];
bool intraFreqNeighCellListPresent;
IntraFreqNeighCellInfo_t *intraFreqNeighCellList;
IntraFreqNeighCellInfo_t *intraFreqNeighCellList[MAX_NUM_CCs];
//SIB5
bool sib5_Present;
bool sib5_Present[MAX_NUM_CCs];
int InterFreqCarrierFreqInfoCount;
InterFreqCarrierFreqInfo_t *InterFreqCarrierFreqInfo;
InterFreqCarrierFreqInfo_t *InterFreqCarrierFreqInfo[MAX_NUM_CCs];
//SIB18
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) {
paramlist_def_t PLMNParamList = {ENB_CONFIG_STRING_PLMN_LIST, NULL, 0};
/* map parameter checking array instances to parameter definition array instances */
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)
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) {
RRC_CONFIGURATION_REQ (msg_p).cellReselectionPriority[M]=7;
RRC_CONFIGURATION_REQ (msg_p).sib3_q_RxLevMin[M]=-70;
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
......
......@@ -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));
sib5_part->present = LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5;
*sib5 = &sib5_part->choice.sib5;
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++) {
InterFreqCarrierInfo->dl_CarrierFreq = configuration->InterFreqCarrierFreqInfo[i].dl_CarrierFreq[CC_id];
InterFreqCarrierInfo->q_RxLevMin = configuration->InterFreqCarrierFreqInfo[i].q_RxLevMin[CC_id];
if(true == configuration->InterFreqCarrierFreqInfo[i].p_Max_Present[CC_id]) {
InterFreqCarrierInfo->p_Max = configuration->InterFreqCarrierFreqInfo[i].p_Max[CC_id];
InterFreqCarrierInfo[i].dl_CarrierFreq = configuration->InterFreqCarrierFreqInfo[CC_id][i].dl_CarrierFreq;
InterFreqCarrierInfo[i].q_RxLevMin = configuration->InterFreqCarrierFreqInfo[CC_id][i].q_RxLevMin;
if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].p_Max_Present) {
InterFreqCarrierInfo[i].p_Max = configuration->InterFreqCarrierFreqInfo[CC_id][i].p_Max;
}
InterFreqCarrierInfo->t_ReselectionEUTRA = configuration->InterFreqCarrierFreqInfo[i].t_ReselectionEUTRA[CC_id];
if(true == configuration->InterFreqCarrierFreqInfo[i].t_ReselectionEUTRA_SF_Present[CC_id]) {
InterFreqCarrierInfo->t_ReselectionEUTRA_SF = configuration->InterFreqCarrierFreqInfo[i].t_ReselectionEUTRA_SF[CC_id];
InterFreqCarrierInfo[i].t_ReselectionEUTRA = configuration->InterFreqCarrierFreqInfo[CC_id][i].t_ReselectionEUTRA;
if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].t_ReselectionEUTRA_SF_Present) {
InterFreqCarrierInfo[i].t_ReselectionEUTRA_SF = configuration->InterFreqCarrierFreqInfo[CC_id][i].t_ReselectionEUTRA_SF;
}
InterFreqCarrierInfo->threshX_High = configuration->InterFreqCarrierFreqInfo[i].threshX_High[CC_id];
InterFreqCarrierInfo->threshX_Low = configuration->InterFreqCarrierFreqInfo[i].threshX_Low[CC_id];
InterFreqCarrierInfo->allowedMeasBandwidth = configuration->InterFreqCarrierFreqInfo[i].allowedMeasBandwidth[CC_id];
InterFreqCarrierInfo->presenceAntennaPort1 = configuration->InterFreqCarrierFreqInfo[i].presenceAntennaPort1[CC_id];
if(true == configuration->InterFreqCarrierFreqInfo[i].cellReselectionPriority_Present[CC_id]) {
InterFreqCarrierInfo->cellReselectionPriority = configuration->InterFreqCarrierFreqInfo[i].cellReselectionPriority[CC_id];
InterFreqCarrierInfo[i].threshX_High = configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_High;
InterFreqCarrierInfo[i].threshX_Low = configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_Low;
InterFreqCarrierInfo[i].allowedMeasBandwidth = configuration->InterFreqCarrierFreqInfo[CC_id][i].allowedMeasBandwidth;
InterFreqCarrierInfo[i].presenceAntennaPort1 = configuration->InterFreqCarrierFreqInfo[CC_id][i].presenceAntennaPort1;
if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].cellReselectionPriority_Present) {
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.bits_unused = 0;
InterFreqCarrierInfo->neighCellConfig.buf = NULL;//[0] = 0x01<<4;
if(true == configuration->InterFreqCarrierFreqInfo[i].q_OffsetFreqPresent[CC_id]) {
InterFreqCarrierInfo->q_OffsetFreq = configuration->InterFreqCarrierFreqInfo[i].q_OffsetFreq[CC_id];
InterFreqCarrierInfo[i].neighCellConfig.bits_unused = 0;
InterFreqCarrierInfo[i].neighCellConfig.buf = NULL;//[0] = 0x01<<4;
if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].q_OffsetFreqPresent) {
InterFreqCarrierInfo[i].q_OffsetFreq = configuration->InterFreqCarrierFreqInfo[CC_id][i].q_OffsetFreq;
}
if(true == configuration->InterFreqCarrierFreqInfo[i].interFreqNeighCellList_Present[CC_id]) {
InterFreqCarrierInfo->interFreqNeighCellList = CALLOC(1,sizeof(struct LTE_InterFreqNeighCellList));
InterFreqCarrierInfo->interFreqNeighCellList = configuration->InterFreqCarrierFreqInfo[i].interFreqNeighCellList[CC_id];
if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].interFreqNeighCellList_Present) {
InterFreqCarrierInfo[i].interFreqNeighCellList = CALLOC(1,sizeof(struct LTE_InterFreqNeighCellList));
InterFreqCarrierInfo[i].interFreqNeighCellList = configuration->InterFreqCarrierFreqInfo[CC_id][i].interFreqNeighCellList;
}
if(true == configuration->InterFreqCarrierFreqInfo[i].interFreqBlackCellList_Present[CC_id]) {
InterFreqCarrierInfo->interFreqBlackCellList = CALLOC(1,sizeof(struct LTE_InterFreqBlackCellList));
InterFreqCarrierInfo->interFreqBlackCellList = configuration->InterFreqCarrierFreqInfo[i].interFreqBlackCellList[CC_id];
if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].interFreqBlackCellList_Present) {
InterFreqCarrierInfo[i].interFreqBlackCellList = CALLOC(1,sizeof(struct LTE_InterFreqBlackCellList));
InterFreqCarrierInfo[i].interFreqBlackCellList = configuration->InterFreqCarrierFreqInfo[CC_id][i].interFreqBlackCellList;
}
if ((true == configuration->InterFreqCarrierFreqInfo[i].threshX_Q_r9_Present[CC_id]) ||
(true == configuration->InterFreqCarrierFreqInfo[i].q_QualMin_r9_Present[CC_id])) {
InterFreqCarrierInfo->ext1 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext1));
if ((true == configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_Q_r9_Present) ||
(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].q_QualMin_r9_Present)) {
InterFreqCarrierInfo[i].ext1 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext1));
LOG_A(RRC,"add ext1 for CC_ID %d\n ",CC_id);
}
if(true == configuration->InterFreqCarrierFreqInfo[i].q_QualMin_r9_Present[CC_id]) {
InterFreqCarrierInfo->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];
if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].q_QualMin_r9_Present) {
InterFreqCarrierInfo[i].ext1->q_QualMin_r9 = CALLOC(1,sizeof(LTE_Q_QualMin_r9_t));
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]) {
InterFreqCarrierInfo->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->ext1->threshX_Q_r9->threshX_LowQ_r9 = configuration->InterFreqCarrierFreqInfo[i].threshX_Q_r9[CC_id].threshX_LowQ_r9;
if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_Q_r9_Present) {
InterFreqCarrierInfo[i].ext1->threshX_Q_r9 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext1__threshX_Q_r9));
InterFreqCarrierInfo[i].ext1->threshX_Q_r9->threshX_HighQ_r9 = configuration->InterFreqCarrierFreqInfo[CC_id][i].threshX_Q_r9.threshX_HighQ_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,
InterFreqCarrierInfo->ext1->threshX_Q_r9->threshX_HighQ_r9,
InterFreqCarrierInfo->ext1->threshX_Q_r9->threshX_LowQ_r9);
InterFreqCarrierInfo[i].ext1->threshX_Q_r9->threshX_HighQ_r9,
InterFreqCarrierInfo[i].ext1->threshX_Q_r9->threshX_LowQ_r9);
}
if(true == configuration->InterFreqCarrierFreqInfo[i].q_QualMinWB_r11_Present[CC_id]) {
InterFreqCarrierInfo->ext2 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext2));
InterFreqCarrierInfo->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];
if(true == configuration->InterFreqCarrierFreqInfo[CC_id][i].q_QualMinWB_r11_Present) {
InterFreqCarrierInfo[i].ext2 = CALLOC(1,sizeof(struct LTE_InterFreqCarrierFreqInfo__ext2));
InterFreqCarrierInfo[i].ext2->q_QualMinWB_r11 = CALLOC(1,sizeof(LTE_Q_QualMin_r9_t));
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)->ext1 = NULL;
......
......@@ -336,7 +336,7 @@ init_SI(
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift);
if(true == configuration->sib4_Present) {
if(true == configuration->sib4_Present[CC_id]) {
if(NULL == carrier->SIB4) {
carrier->SIB4 = (uint8_t *) malloc16(64);
}
......@@ -350,7 +350,7 @@ init_SI(
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) {
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