#include "OCTET_STRING.h"
#include "BIT_STRING.h"
#include "odu_common_codec.h"
-#include "du_sys_info_hdl.h"
#include "MIB.h"
#include "SearchSpace.h"
#include "SIB-TypeInfo.h"
#include "RACH-ConfigCommon.h"
#include "BWP-DownlinkCommon.h"
#include "BWP-UplinkCommon.h"
+#include "TDD-UL-DL-ConfigCommon.h"
+#include "du_sys_info_hdl.h"
#ifdef O1_ENABLE
#include "CmInterface.h"
}
*(duCfgParam.macCellCfg.prachCfg.fdm[0].unsuedRootSeq) = UNUSED_ROOT_SEQ;
}
+
+ duCfgParam.macCellCfg.prachCfg.totalNumRaPreamble = NUM_RA_PREAMBLE;
duCfgParam.macCellCfg.prachCfg.ssbPerRach = SSB_PER_RACH;
+ duCfgParam.macCellCfg.prachCfg.numCbPreamblePerSsb = CB_PREAMBLE_PER_SSB;
duCfgParam.macCellCfg.prachCfg.prachMultCarrBand = PRACH_MULT_CARRIER_BAND;
duCfgParam.macCellCfg.prachCfg.raContResTmr = RA_CONT_RES_TIMER;
duCfgParam.macCellCfg.prachCfg.rsrpThreshSsb = RSRP_THRESHOLD_SSB;
cpyRrmPolicyInDuCfgParams(&rrmPolicy, 1, &duCfgParam.tempSliceCfg);
#endif
+
return ROK;
}
duPort[F1_INTERFACE] = g_cfg.DU_Port;
duPort[E2_INTERFACE] = g_cfg.RIC_Port;
#else
- duPort[F1_INTERFACE] = DU_PORT; /* DU Port idx 0 38472 */
- duPort[E2_INTERFACE] = RIC_PORT; /* RIC Port idx 1 38482 */
+ duPort[F1_INTERFACE] = F1_SCTP_PORT; /* DU Port idx 0 38472 */
+ duPort[E2_INTERFACE] = E2_SCTP_PORT; /* RIC Port idx 1 36421 */
#endif
return ROK;
}
PucchCfgCommon pucchCfg;
TddUlDlCfgCommon tddCfg;
+#ifdef O1_ENABLE
+ srvCellCfgComm->scs = convertScsValToScsEnum(cellParams.ssbSubCarrierSpacing);
+#else
+ srvCellCfgComm->scs = NR_SCS;
+#endif
+
/* Configuring DL Config Common for SIB1*/
srvCellCfgComm->dlCfg.freqBandInd = NR_FREQ_BAND;
srvCellCfgComm->dlCfg.offsetToPointA = OFFSET_TO_POINT_A;
pdcchCfg.searchSpcZero = SEARCHSPACE_0_INDEX;
pdcchCfg.searchSpcId = PDCCH_SEARCH_SPACE_ID;
pdcchCfg.ctrlRsrcSetId = PDCCH_CTRL_RSRC_SET_ID;
- pdcchCfg.monitorSlotPrdAndOffPresent = \
-
- SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1;
+ pdcchCfg.monitorSlotPrdAndOffPresent = SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1;
//pdcchCfg.monitorSlotPrdAndOff = \
SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1;
pdcchCfg.monitorSymbolsInSlot[0] = 128;
pdschCfg.present = BWP_DownlinkCommon__pdsch_ConfigCommon_PR_setup;
pdschCfg.numTimeDomRsrcAlloc = 2;
pdschCfg.timeDomAlloc[0].k0 = PDSCH_K0_CFG1;
- pdschCfg.timeDomAlloc[0].mapType = \
- PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
+ pdschCfg.timeDomAlloc[0].mapType = PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
pdschCfg.timeDomAlloc[0].sliv = calcSliv(PDSCH_START_SYMBOL,PDSCH_LENGTH_SYMBOL);
pdschCfg.timeDomAlloc[1].k0 = PDSCH_K0_CFG2;
- pdschCfg.timeDomAlloc[1].mapType = \
- PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
+ pdschCfg.timeDomAlloc[1].mapType = PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
pdschCfg.timeDomAlloc[1].sliv = calcSliv(PDSCH_START_SYMBOL,PDSCH_LENGTH_SYMBOL);
srvCellCfgComm->dlCfg.pdschCfg = pdschCfg;
/* Configuring BCCH Config for SIB1 */
- srvCellCfgComm->dlCfg.bcchCfg.modPrdCoeff = \
- BCCH_Config__modificationPeriodCoeff_n16;
+ srvCellCfgComm->dlCfg.bcchCfg.modPrdCoeff = BCCH_Config__modificationPeriodCoeff_n16;
/* Configuring PCCH Config for SIB1 */
pcchCfg.dfltPagingCycle = convertPagingCycleEnumToValue(PagingCycle_rf256);
srvCellCfgComm->ulCfg.ulScsCarrier.scs = NR_SCS;
srvCellCfgComm->ulCfg.ulScsCarrier.scsBw = NR_BANDWIDTH;
#endif
+ srvCellCfgComm->ulCfg.freqBandInd = NR_FREQ_BAND;
srvCellCfgComm->ulCfg.pMax = UL_P_MAX;
srvCellCfgComm->ulCfg.locAndBw = FREQ_LOC_BW;
srvCellCfgComm->ulCfg.timeAlignTimerComm = TimeAlignmentTimer_infinity;
rachCfg.pwrRampingStep = RACH_ConfigGeneric__powerRampingStep_dB2;
rachCfg.raRspWindow = RACH_ConfigGeneric__ra_ResponseWindow_sl10;
rachCfg.numRaPreamble = NUM_RA_PREAMBLE;
- rachCfg.ssbPerRachOccPresent = \
- RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_one;
- rachCfg.numSsbPerRachOcc = SSB_PER_RACH;
+ rachCfg.numSsbPerRachOcc = RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_one;
+ rachCfg.numCbPreamblePerSsb = CB_PREAMBLE_PER_SSB;
rachCfg.contResTimer = RACH_ConfigCommon__ra_ContentionResolutionTimer_sf64;
rachCfg.rsrpThreshSsb = RSRP_THRESHOLD_SSB;
rachCfg.rootSeqIdxPresent = RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139;
srvCellCfgComm->tddCfg = tddCfg;
srvCellCfgComm->ssbPosInBurst = 192;
- srvCellCfgComm->ssbPrdServingCell = SSB_PERIODICITY_20MS;
+ srvCellCfgComm->ssbPrdServingCell = SSB_PERIODICITY;
srvCellCfgComm->ssPbchBlockPwr = SSB_PBCH_PWR;
return ROK;
cmInetAddr((S8*)CU_IP_V4_ADDR, &ipv4_cu);
cmInetAddr((S8*)RIC_IP_V4_ADDR, &ipv4_ric);
- duCfgParam.sctpParams.cuPort = CU_PORT;
- duCfgParam.sctpParams.ricPort = RIC_PORT;
+ duCfgParam.sctpParams.cuPort = F1_SCTP_PORT;
+ duCfgParam.sctpParams.ricPort = E2_SCTP_PORT;
#endif
fillDuPort(duCfgParam.sctpParams.duPort);
/* EGTP Parameters */
duCfgParam.egtpParams.localIp.ipV4Pres = TRUE;
duCfgParam.egtpParams.localIp.ipV4Addr = ipv4_du;
- duCfgParam.egtpParams.localPort = DU_EGTP_PORT;
+ duCfgParam.egtpParams.localPort = F1_EGTP_PORT;
duCfgParam.egtpParams.destIp.ipV4Pres = TRUE;
duCfgParam.egtpParams.destIp.ipV4Addr = ipv4_cu;
- duCfgParam.egtpParams.destPort = CU_EGTP_PORT;
+ duCfgParam.egtpParams.destPort = F1_EGTP_PORT;
duCfgParam.egtpParams.minTunnelId = MIN_TEID;
duCfgParam.egtpParams.maxTunnelId = MAX_TEID;
* RFAILED - failure
*
* ****************************************************************/
-uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, CopyOfRecvdSliceCfg *tempSliceCfg)
+uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, MacSliceCfgReq *tempSliceCfg)
{
- uint8_t policyIdx = 0, memberListIdx = 0, count = 0;
-
+ uint8_t policyIdx = 0, memberListIdx = 0;
if(policyNum)
{
- tempSliceCfg->totalRrmPolicy = policyNum;
- DU_ALLOC(tempSliceCfg->rrmPolicy, tempSliceCfg->totalRrmPolicy * sizeof(RrmPolicy*));
- if(tempSliceCfg->rrmPolicy == NULLP)
+ tempSliceCfg->numOfRrmPolicy = policyNum;
+ DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy, tempSliceCfg->numOfRrmPolicy * sizeof(MacSliceRrmPolicy*));
+ if(!tempSliceCfg->listOfRrmPolicy)
{
DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams");
return RFAILED;
}
- for(policyIdx = 0; policyIdx<tempSliceCfg->totalRrmPolicy; policyIdx++)
+ for(policyIdx = 0; policyIdx<tempSliceCfg->numOfRrmPolicy; policyIdx++)
{
- DU_ALLOC(tempSliceCfg->rrmPolicy[policyIdx], sizeof(RrmPolicy));
- if(tempSliceCfg->rrmPolicy[policyIdx] == NULLP)
+ DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy[policyIdx], sizeof(MacSliceRrmPolicy));
+ if(!tempSliceCfg->listOfRrmPolicy[policyIdx])
{
DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams");
return RFAILED;
}
-
- if(rrmPolicy[policyIdx].rRMMemberNum)
+
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->resourceType = rrmPolicy[policyIdx].resourceType;
+
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem = rrmPolicy[policyIdx].rRMMemberNum;
+
+ if(tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem)
{
- tempSliceCfg->rrmPolicy[policyIdx]->numMemberList = rrmPolicy[policyIdx].rRMMemberNum;
- DU_ALLOC(tempSliceCfg->rrmPolicy[policyIdx]->memberList, tempSliceCfg->rrmPolicy[policyIdx]->numMemberList * sizeof(PolicyMemberList*))
- if(tempSliceCfg->rrmPolicy[policyIdx]->memberList == NULLP)
+ DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList,\
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem * sizeof(RrmPolicyMemberList*));
+
+ if(!tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList)
{
DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams");
return RFAILED;
}
- for(memberListIdx = 0; memberListIdx<tempSliceCfg->rrmPolicy[policyIdx]->numMemberList; memberListIdx++)
+
+ for(memberListIdx = 0; memberListIdx<tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem; memberListIdx++)
{
- DU_ALLOC(tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx], sizeof(PolicyMemberList))
- if(tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx] == NULLP)
+ DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx], sizeof(RrmPolicyMemberList));
+ if(!tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx])
{
DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams");
return RFAILED;
}
- memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->snssai.sd, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sd, 3 * sizeof(uint8_t));
- memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->snssai.sst, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sst, sizeof(uint8_t));
- memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->plmn.mcc, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mcc, 3 * sizeof(uint8_t));
- memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->plmn.mnc, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mnc, 3 * sizeof(uint8_t));
- count++;
+ memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->snssai.sd,\
+ &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sd, 3 * sizeof(uint8_t));
+ memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->snssai.sst,\
+ &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sst, sizeof(uint8_t));
+ memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->plmn.mcc,\
+ &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mcc, 3 * sizeof(uint8_t));
+ memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->plmn.mnc,\
+ &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mnc, 3 * sizeof(uint8_t));
}
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->policyRatio.maxRatio = rrmPolicy[policyIdx].rRMPolicyMaxRatio;
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->policyRatio.minRatio = rrmPolicy[policyIdx].rRMPolicyMinRatio;
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->policyRatio.dedicatedRatio = rrmPolicy[policyIdx].rRMPolicyDedicatedRatio;
}
-
- tempSliceCfg->rrmPolicy[policyIdx]->rsrcType = rrmPolicy[policyIdx].resourceType;
- tempSliceCfg->rrmPolicy[policyIdx]->policyMaxRatio = rrmPolicy[policyIdx].rRMPolicyMaxRatio;
- tempSliceCfg->rrmPolicy[policyIdx]->policyMinRatio = rrmPolicy[policyIdx].rRMPolicyMinRatio;
- tempSliceCfg->rrmPolicy[policyIdx]->policyDedicatedRatio = rrmPolicy[policyIdx].rRMPolicyDedicatedRatio;
-
}
- tempSliceCfg->totalSliceCount = count;
}
+
return ROK;
}
+
/*******************************************************************
*
* @brief Reads config and posts message to du_app on completion