PLTFRM_FLAGS+=-DSS_USE_WLS_MEM -DINTEL_WLS_MEM -DDEBUG_MODE
ifeq ($(PHY_MODE),TIMER)
PLTFRM_FLAGS+=-DINTEL_TIMER_MODE
- else
- #TODO: Remove below flag for testing RACH.indication onward
- PLTFRM_FLAGS+=-DTEMP_INTG_FLAG
endif
endif
ifeq ($(O1_ENABLE),YES)
L_OPTS+=-lsysrepo -lyang
L_OPTS+=-lsysrepo-cpp -lyang-cpp
+L_OPTS+= -lnetconf2 -lcjson -lcurl
L_OPTS+=-lstdc++
endif
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/phy_stub.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
ifeq ($(O1_ENABLE),YES)
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CCPP1)'
+ $(Q)$(MAKE) -f $(COM_BUILD_DIR)/ves.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CCPP1)'
endif
link_du: du
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/phy_stub.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
ifeq ($(O1_ENABLE),YES)
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CCPP1)'
+ $(Q)$(MAKE) -f $(COM_BUILD_DIR)/ves.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CCPP1)'
endif
$(Q)rm -rf $(OBJ_ROOT)/odu/*
$(Q)rm -rf $(LIB_ROOT)/odu/*
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
ifeq ($(O1_ENABLE),YES)
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CCPP1)'
+ $(Q)$(MAKE) -f $(COM_BUILD_DIR)/ves.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CCPP1)'
endif
clean_cu:
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
ifeq ($(O1_ENABLE),YES)
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CCPP1)'
+ $(Q)$(MAKE) -f $(COM_BUILD_DIR)/ves.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CCPP1)'
endif
$(Q)rm -rf $(OBJ_ROOT)/cu_stub/*
$(Q)rm -rf $(LIB_ROOT)/cu_stub/*
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
ifeq ($(O1_ENABLE),YES)
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1.mak OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CCPP1)'
+ $(Q)$(MAKE) -f $(COM_BUILD_DIR)/ves.mak OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CCPP1)'
endif
clean_ric:
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
ifeq ($(O1_ENABLE),YES)
$(Q)$(MAKE) -f $(COM_BUILD_DIR)/o1.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CCPP1)'
+ $(Q)$(MAKE) -f $(COM_BUILD_DIR)/ves.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CCPP1)'
endif
$(Q)rm -rf $(OBJ_ROOT)/ric_stub/*
$(Q)rm -rf $(LIB_ROOT)/ric_stub/*
$(Q)cp -f ./obj/odu/odu ./bin/odu
$(Q)cp -rf ./bin/odu $(ROOT_DIR)/bin/
$(Q)cp -f ../scripts/odu_script.sh $(ROOT_DIR)/bin/odu
+ $(Q)cp -rf ../config/ $(ROOT_DIR)/bin/odu
$(Q)cp -f ./lib/odu/*.a $(ROOT_DIR)/libs/
$(Q)echo -e "***** BUILD COMPLETE *****"
Create new netconf user (login with root user and run following commands)
$adduser --system netconf && \
- echo "netconf:netconf" | chpasswd
+ echo "netconf:netconf!" | chpasswd
$mkdir -p /home/netconf/.ssh && \
ssh-keygen -A && \
$sysrepocfg --import=startup_config.xml --datastore running --module o-ran-sc-odu-interface-v1
+5. Configure the netconf server details for VES PNF Event
+
+ $cd l2/build/config
+
+ Open the netconfConfig.xml and edit the desired MAC address, IP, Port, Username and Password for VES PNF Registration.
+
+6. Configure the VES server details to send VES Events
+
+ $cd l2/build/config
+
+ Open the vesConfig.xml and edit the desired IP, Port, Username and Password to send VES Event.
+
D. How to Clean and Build:
--------------------------
- 1. Building ODU binary:
+ 1. Build commands:
+ a. odu - Builds all components of ODU
+ b. cu_stub - Builds all CU Stub
+ c. ric_stub - Builds all RIC_Stub
+ d. clean_odu - clean up ODU
+ e. clean_cu - clean up CU Stub
+ f. clean_ric - clean up RIC Stub
+ g. clean_all - cleanup everything
+ h. options:
+ i. MACHINE=BIT64/BIT32 - Specify underlying machine type. Default is BIT32
+ ii. NODE=TEST_STUB - Specify if it is a test node. Mandatory for cu_stub/ric_stub. Must not be used for odu
+ iii. MODE=FDD/TDD - Specify duplex mode. Default is FDD
+ iv. PHY=INTEL_L1 - Specify type of phy. If not specified, PHY stub is used
+ v. PHY_MODE=TIMER - Specify mode of phy. Used only if PHY=INTEL_L1. Default is radio mode
+ vi. O1_ENABLE=YES - Specify if O1 interface is enabled. If not specified, it is disabled
+
+ 2. Building ODU binary:
a. Build folder
cd l2/build/odu
b. Building ODU binary
- make odu MACHINE=BIT64 MODE=FDD
+ make odu MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
c. Cleaning ODU binary
- make clean_odu MACHINE=BIT64 MODE=FDD
+ make clean_odu MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
- 2. Building CU Stub binary:
+ 3. Building CU Stub binary:
a. Build folder
cd l2/build/odu
b. Building CU Stub binary
- make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+ make cu_stub NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
c. Cleaning CU Stub binary
- make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+ make clean_cu NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
- 3. Building RIC Stub binary:
+ 4. Building RIC Stub binary:
a. Build folder
cd l2/build/odu
b. Building RIC Stub binary
- make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+ make ric_stub NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
c. Cleaning RIC Stub binary
- make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+ make clean_ric NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
- 4. Cleaning ODU, CU Stub and RIC Stub:
+ 5. Cleaning ODU, CU Stub and RIC Stub:
make clean_all
a. Build folder
cd l2/build/odu
b. Building ODU binary
- make odu MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
+ make odu MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
c. Cleaning ODU binary
- make clean_odu MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
+ make clean_odu MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
2. Building CU Stub binary:
a. Build folder
cd l2/build/odu
b. Building CU Stub binary
- make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
+ make cu_stub NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
c. Cleaning CU Stub binary
- make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
+ make clean_cu NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
3. Building RIC Stub binary:
a. Build folder
cd l2/build/odu
b. Building RIC Stub binary
- make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
+ make ric_stub NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
c. Cleaning RIC Stub binary
- make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
+ make clean_ric NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
4. Cleaning ODU, CU Stub and RIC Stub:
make clean_all
c. Build folder
cd l2/build/odu
d. Build ODU Binary:
- make odu PHY=INTEL_L1 PHY_MODE=TIMER MACHINE=BIT64 MODE=FDD
+ make odu PHY=<refer section D.1.h> PHY_MODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
2. Build CU Stub and RIC Stub:
- a. Execute steps in sections D.2 and D.3.
+ a. Execute steps in sections D.3 and D.4
II. Execution
- 1. Execute L1:
+ 1. Refer to below link for assumptions, dependencies, pre-requisites etc for ODU-Low execution
+ https://docs.o-ran-sc.org/projects/o-ran-sc-o-du-phy/en/latest/
+
+ 2. Execute L1:
a. Setup environment:
cd <intel_directory>/phy/
source ./setupenv.sh
b. Run L1 binary :
cd <intel_directory>/FlexRAN/l1/bin/nr5g/gnb/l1
- To run in timer mode : ./l1.sh -e
+ To run
+ i. In timer mode : ./l1.sh -e
+ ii. In radio mode : ./l1.sh -xran
L1 is up when console prints follow:
Non BBU threads in application
PHY>welcome to application console
- 2. Execute FAPI Translator:
+ 3. Execute FAPI Translator:
a. Setup environment:
cd <intel_directory>/phy/
source ./setupenv.sh
cd <intel_directory>/phy/fapi_5g/bin/
./oran_5g_fapi --cfg=oran_5g_fapi.cfg
- 3. Execute CU Stub and RIC Stub:
+ 4. Execute CU Stub and RIC Stub:
a. Run steps in sections E.1-E.3
- 4. Execute DU:
+ 5. Execute DU:
a. DU execution folder
cd l2/bin/odu
b. Export WLS library path
2. Connect to the server with
user: netconf
- pwd: netconf
+ pwd: netconf!
3. Send a Netconf get request for alarms xpath
{
/* prach ocassion present in this subframe */
#ifdef NR_TDD
- if(UL_SLOT != schGetSlotSymbFrmt(prachOccasionTimingInfo.slot, cell->slotFrmtBitMap))
+ if(UL_SLOT != schGetSlotSymbFrmt(prachOccasionTimingInfo.slot%cell->numSlotsInPeriodicity,\
+ cell->slotFrmtBitMap))
{
DU_LOG("\nERROR --> SCH : PrachCfgIdx %d doesn't support UL slot", prachCfgIdx);
}
* RFAILED - failure
*
* ****************************************************************/
- uint8_t schDlRsrcAllocMsg4(DlMsgAlloc *msg4Alloc, SchCellCb *cell, uint16_t slot)
+ uint8_t schDlRsrcAllocMsg4(DlMsgAlloc *msg4Alloc, SchCellCb *cell, uint16_t slot, bool ssbPresent, bool sib1Present)
{
uint8_t coreset0Idx = 0;
uint8_t numRbs = 0;
uint8_t offsetPointA;
uint8_t FreqDomainResource[6] = {0};
uint16_t tbSize = 0;
- uint8_t numPdschSymbols = 12; /* considering pdsch region from 2 to 13 */
- uint8_t mcs = 4; /* MCS fixed to 4 */
+ uint8_t numPdschSymbols = 11; /* considering pdsch region from 3 to 13 */
+ uint8_t mcs = 4; /* MCS fixed to 4 */
SchBwpDlCfg *initialBwp;
+ FreqDomainAlloc *sib1PdschFreqAlloc = NULL;
PdcchCfg *pdcch = &msg4Alloc->dlMsgPdcchCfg;
PdschCfg *pdsch = &msg4Alloc->dlMsgPdschCfg;
pdsch->codeword[cwCount].mcsIndex = mcs; /* mcs configured to 4 */
pdsch->codeword[cwCount].mcsTable = 0; /* notqam256 */
pdsch->codeword[cwCount].rvIndex = 0;
- /* 38.214: Table 5.1.3.2-1, divided by 8 to get the value in bytes */
- /* TODO : Calculate tbSize based of DL CCCH msg size */
- tbSize = schCalcTbSize(2664/8); /* send this value to the func in bytes when considering msg4 size */
+ tbSize = schCalcTbSize(msg4Alloc->dlMsgInfo.dlMsgPduLen + TX_PAYLOAD_HDR_LEN); /* MSG4 size + FAPI header size*/
pdsch->codeword[cwCount].tbSize = tbSize;
}
pdsch->dataScramblingId = cell->cellCfg.phyCellId;
pdsch->numLayers = 1;
pdsch->transmissionScheme = 0;
pdsch->refPoint = 0;
- pdsch->dmrs.dlDmrsSymbPos = 2;
+ pdsch->dmrs.dlDmrsSymbPos = 4; /* Bitmap value 00000000000100 i.e. using 3rd symbol for PDSCH DMRS */
pdsch->dmrs.dmrsConfigType = 0; /* type-1 */
pdsch->dmrs.dlDmrsScramblingId = cell->cellCfg.phyCellId;
pdsch->dmrs.scid = 0;
pdsch->dmrs.nrOfDmrsSymbols = NUM_DMRS_SYMBOLS;
pdsch->dmrs.dmrsAddPos = DMRS_ADDITIONAL_POS;
pdsch->pdschFreqAlloc.resourceAllocType = 1; /* RAT type-1 RIV format */
- /* the RB numbering starts from coreset0, and PDSCH is always above SSB */
- pdsch->pdschFreqAlloc.freqAlloc.startPrb = offset + SCH_SSB_NUM_PRB;
- pdsch->pdschFreqAlloc.freqAlloc.numPrb = schCalcNumPrb(tbSize,mcs,numPdschSymbols);
+ /* The RB numbering starts from coreset0 */
+ pdsch->pdschFreqAlloc.freqAlloc.startPrb = PDSCH_START_RB;
+ if(ssbPresent)
+ {
+ /* PDSCH is always above SSB */
+ pdsch->pdschFreqAlloc.freqAlloc.startPrb = offsetPointA + SCH_SSB_NUM_PRB + 1;
+ }
+ if(sib1Present)
+ {
+ /* Must not overlap with SIB1 */
+ sib1PdschFreqAlloc = &cell->cellCfg.sib1SchCfg.sib1PdschCfg.pdschFreqAlloc.freqAlloc;
+ pdsch->pdschFreqAlloc.freqAlloc.startPrb = sib1PdschFreqAlloc->startPrb + sib1PdschFreqAlloc->numPrb + 1;
+ }
+ pdsch->pdschFreqAlloc.freqAlloc.numPrb = schCalcNumPrb(tbSize, mcs, numPdschSymbols);
pdsch->pdschFreqAlloc.vrbPrbMapping = 0; /* non-interleaved */
- pdsch->pdschTimeAlloc.timeAlloc.startSymb = 2; /* spec-38.214, Table 5.1.2.1-1 */
- pdsch->pdschTimeAlloc.timeAlloc.numSymb = 12;
+ pdsch->pdschTimeAlloc.timeAlloc.startSymb = 3; /* spec-38.214, Table 5.1.2.1-1 */
+ pdsch->pdschTimeAlloc.timeAlloc.numSymb = numPdschSymbols;
pdsch->beamPdschInfo.numPrgs = 1;
pdsch->beamPdschInfo.prgSize = 1;
pdsch->beamPdschInfo.digBfInterfaces = 0;
{
uint8_t ueIdx;
uint16_t tbSize = 0;
- uint8_t numPdschSymbols = 12; /* considering pdsch region from 2 to 13 */
PdcchCfg *pdcch = NULLP;
PdschCfg *pdsch = NULLP;
BwpCfg *bwp = NULLP;
pdsch->codeword[cwCount].mcsIndex = ueCb.ueCfg.dlModInfo.mcsIndex;
pdsch->codeword[cwCount].mcsTable = ueCb.ueCfg.dlModInfo.mcsTable;
pdsch->codeword[cwCount].rvIndex = 0;
- tbSize = schCalcTbSize(*accumalatedSize);
+ tbSize = schCalcTbSize(*accumalatedSize + TX_PAYLOAD_HDR_LEN);
if(tbSize < *accumalatedSize)
*accumalatedSize = tbSize;
pdsch->codeword[cwCount].tbSize = tbSize;
pdsch->numLayers = 1;
pdsch->transmissionScheme = 0;
pdsch->refPoint = 0;
- pdsch->dmrs.dlDmrsSymbPos = 2;
+ pdsch->dmrs.dlDmrsSymbPos = 4; /* Bitmap value 00000000000100 i.e. using 3rd symbol for PDSCH DMRS */
pdsch->dmrs.dmrsConfigType = 0; /* type-1 */
pdsch->dmrs.dlDmrsScramblingId = cell->cellCfg.phyCellId;
pdsch->dmrs.scid = 0;
pdsch->dmrs.nrOfDmrsSymbols = NUM_DMRS_SYMBOLS;
pdsch->dmrs.dmrsAddPos = pdschCfg.dmrsDlCfgForPdschMapTypeA.addPos;
pdsch->pdschFreqAlloc.resourceAllocType = 1; /* RAT type-1 RIV format */
- pdsch->pdschFreqAlloc.freqAlloc.startPrb = 1;
- pdsch->pdschFreqAlloc.freqAlloc.numPrb = schCalcNumPrb(tbSize, ueCb.ueCfg.dlModInfo.mcsIndex, numPdschSymbols);
+ pdsch->pdschFreqAlloc.freqAlloc.startPrb = PDSCH_START_RB;
+ pdsch->pdschFreqAlloc.freqAlloc.numPrb = schCalcNumPrb(tbSize, ueCb.ueCfg.dlModInfo.mcsIndex, \
+ pdschCfg.timeDomRsrcAllociList[0].symbolLength);
pdsch->pdschFreqAlloc.vrbPrbMapping = 0; /* non-interleaved */
pdsch->pdschTimeAlloc.timeAlloc.startSymb = pdschCfg.timeDomRsrcAllociList[0].startSymbol;
pdsch->pdschTimeAlloc.timeAlloc.numSymb = pdschCfg.timeDomRsrcAllociList[0].symbolLength;
return RFAILED;
}
memset(dlDataMsgInfo, 0, sizeof(RlcDlUserDataInfo));
- if(ODU_GET_MSG_BUF(DU_APP_MEM_REGION, DU_POOL, &dlDataMsgInfo->dlMsg) != ROK)
- {
- DU_LOG("\nERROR --> DU_APP : Memory allocation failed for dlMsg in duHdlEgtpDlData()");
- DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, dlDataMsgInfo, sizeof(RlcDlUserDataInfo));
- return RFAILED;
- }
dlDataMsgInfo->dlMsg = egtpMsg->msg;
dlDataMsgInfo->msgLen = msgLen;
*
* Functionality: Fills Sp Cell Group Info
*
- * @params[in] SpCellCfg *spCell
+ * @params[in] MacUeCfg *macUeCfg
* @return void
*
*****************************************************************/
- void fillDefaultSpCellGrpInfo(SpCellCfg *spCell)
+ void fillDefaultSpCellGrpInfo(MacUeCfg *macUeCfg)
{
+ SpCellCfg *spCell = NULL;
+
+ if(macUeCfg)
+ spCell = &macUeCfg->spCellCfg;
+
if(spCell)
{
+ macUeCfg->spCellCfgPres = true;
+
spCell->servCellIdx = SERV_CELL_IDX;
/* Filling Initial Dl Bwp */
fillDefaultInitDlBwp(&spCell->servCellCfg.initDlBwp);
*
* Functionality: Fills Physical Cell Group Info
*
- * @params[in] PhyCellGrpCfg *cellGrp
+ * @params[in] MacUeCfg *macUeCfg
* @return void
*
*****************************************************************/
- void fillDefaultPhyCellGrpInfo(PhyCellGrpCfg *cellGrp)
+ void fillDefaultPhyCellGrpInfo(MacUeCfg *macUeCfg)
{
+ PhyCellGrpCfg *cellGrp = NULL;
+
+ if(macUeCfg)
+ cellGrp = &macUeCfg->phyCellGrpCfg;
+
if(cellGrp)
{
+ macUeCfg->phyCellGrpCfgPres = true;
cellGrp->pdschHarqAckCodebook = PDSCH_HARQ_ACK_CODEBOOK_DYNAMIC;
cellGrp->pNrFr1 = P_NR_FR1;
}
*
* Functionality: Fills Mac Cell Group Info
*
- * @params[in] MacCellGrpCfg *cellGrp
+ * @params[in] MacUeCfg *macUeCfg
* @return void
*
*****************************************************************/
- void fillDefaultMacCellGrpInfo(MacCellGrpCfg *cellGrp)
+ void fillDefaultMacCellGrpInfo(MacUeCfg *macUeCfg)
{
uint8_t idx;
+ MacCellGrpCfg *cellGrp = NULL;
+
+ if(macUeCfg)
+ cellGrp = &macUeCfg->macCellGrpCfg;
if(cellGrp)
{
+ macUeCfg->macCellGrpCfgPres = true;
+
/* Filling Scheduling Request Config */
cellGrp->schReqCfg.addModListCount = 1;
if(cellGrp->schReqCfg.addModListCount <= MAX_NUM_SR_CFG_PER_CELL_GRP)
macUeCfg->cellId = cellId;
macUeCfg->ueIdx = ueIdx;
macUeCfg->crnti = crnti;
- fillDefaultMacCellGrpInfo(&macUeCfg->macCellGrpCfg);
- fillDefaultPhyCellGrpInfo(&macUeCfg->phyCellGrpCfg);
- fillDefaultSpCellGrpInfo(&macUeCfg->spCellCfg);
+
+ fillDefaultMacCellGrpInfo(macUeCfg);
+ fillDefaultPhyCellGrpInfo(macUeCfg);
+ fillDefaultSpCellGrpInfo(macUeCfg);
macUeCfg->ambrCfg = NULLP;
- fillMacSrb1LcCfg(&macUeCfg->lcCfgList[0]);
fillDefaultModulation(macUeCfg);
+ fillMacSrb1LcCfg(&macUeCfg->lcCfgList[0]);
macUeCfg->numLcs++;
}
else