X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fdu_app%2Fdu_cfg.c;h=cbebd467706c5f19a6aa365afe26a8f4432b98fe;hb=ef711b0830aedde36f4a1beceed146d08e77ce58;hp=4fd8612a69e10c49920ac2e16fba4af975ed1459;hpb=3a52fbb41a099e37ef072276055cf765828db299;p=o-du%2Fl2.git diff --git a/src/du_app/du_cfg.c b/src/du_app/du_cfg.c index 4fd8612a6..cbebd4677 100644 --- a/src/du_app/du_cfg.c +++ b/src/du_app/du_cfg.c @@ -17,7 +17,7 @@ *******************************************************************************/ /* This file contains all utility functions */ -#include "du_cfg.h" +#include "du_mgr.h" #include "MIB.h" #include "PLMN-IdentityInfo.h" #include "odu_common_codec.h" @@ -58,16 +58,16 @@ void FillSlotConfig() for(slot = 0; slot <= 3; slot++) { for(symbol = 0; symbol < MAX_SYMB_PER_SLOT; symbol++) - duCfgParam.clCellCfg.tddCfg.slotCfg[slot][symbol] = DL_SLOT; + duCfgParam.macCellCfg.tddCfg.slotCfg[slot][symbol] = DL_SLOT; } - duCfgParam.clCellCfg.tddCfg.slotCfg[3][10] = GUARD_SLOT; - duCfgParam.clCellCfg.tddCfg.slotCfg[3][11] = GUARD_SLOT; - duCfgParam.clCellCfg.tddCfg.slotCfg[3][12] = GUARD_SLOT; - duCfgParam.clCellCfg.tddCfg.slotCfg[3][13] = UL_SLOT; + duCfgParam.macCellCfg.tddCfg.slotCfg[3][10] = GUARD_SLOT; + duCfgParam.macCellCfg.tddCfg.slotCfg[3][11] = GUARD_SLOT; + duCfgParam.macCellCfg.tddCfg.slotCfg[3][12] = GUARD_SLOT; + duCfgParam.macCellCfg.tddCfg.slotCfg[3][13] = UL_SLOT; for(symbol = 0; symbol < MAX_SYMB_PER_SLOT; symbol++) - duCfgParam.clCellCfg.tddCfg.slotCfg[4][symbol] = UL_SLOT; + duCfgParam.macCellCfg.tddCfg.slotCfg[4][symbol] = UL_SLOT; } @@ -77,7 +77,7 @@ void FillSlotConfig() * * @details * - * Function : readClCfg + * Function : readMacCfg * * Functionality: * - Fills up the cell configuration for CL. @@ -91,99 +91,125 @@ void FillSlotConfig() /* This function is used to fill up the cell configuration for CL */ -S16 readClCfg() +S16 readMacCfg() { - duCfgParam.clCellCfg.carrierId = CARRIER_IDX; + duCfgParam.macCellCfg.carrierId = CARRIER_IDX; /* Cell configuration */ - duCfgParam.clCellCfg.cellId = NR_CELL_ID; - duCfgParam.clCellCfg.phyCellId = NR_PCI; - duCfgParam.clCellCfg.dupType = DUPLEX_MODE; + duCfgParam.macCellCfg.cellId = NR_CELL_ID; + duCfgParam.macCellCfg.phyCellId = NR_PCI; + duCfgParam.macCellCfg.dupType = DUPLEX_MODE; /* DL carrier configuration */ - duCfgParam.clCellCfg.dlCarrCfg.pres = TRUE; - duCfgParam.clCellCfg.dlCarrCfg.bw = SUL_ARFCN; - duCfgParam.clCellCfg.dlCarrCfg.freq = NR_ARFCN; - duCfgParam.clCellCfg.dlCarrCfg.k0[0] = 1; - duCfgParam.clCellCfg.dlCarrCfg.k0[1] = 1; - duCfgParam.clCellCfg.dlCarrCfg.k0[2] = 1; - duCfgParam.clCellCfg.dlCarrCfg.k0[3] = 1; - duCfgParam.clCellCfg.dlCarrCfg.k0[4] = 1; - duCfgParam.clCellCfg.dlCarrCfg.gridSize[0] = 1; - duCfgParam.clCellCfg.dlCarrCfg.gridSize[1] = 1; - duCfgParam.clCellCfg.dlCarrCfg.gridSize[2] = 1; - duCfgParam.clCellCfg.dlCarrCfg.gridSize[3] = 1; - duCfgParam.clCellCfg.dlCarrCfg.gridSize[4] = 1; - duCfgParam.clCellCfg.dlCarrCfg.numAnt = NUM_TX_ANT; + duCfgParam.macCellCfg.dlCarrCfg.pres = TRUE; + duCfgParam.macCellCfg.dlCarrCfg.bw = SUL_ARFCN; + duCfgParam.macCellCfg.dlCarrCfg.freq = NR_ARFCN; + duCfgParam.macCellCfg.dlCarrCfg.k0[0] = 1; + duCfgParam.macCellCfg.dlCarrCfg.k0[1] = 1; + duCfgParam.macCellCfg.dlCarrCfg.k0[2] = 1; + duCfgParam.macCellCfg.dlCarrCfg.k0[3] = 1; + duCfgParam.macCellCfg.dlCarrCfg.k0[4] = 1; + duCfgParam.macCellCfg.dlCarrCfg.gridSize[0] = 1; + duCfgParam.macCellCfg.dlCarrCfg.gridSize[1] = 1; + duCfgParam.macCellCfg.dlCarrCfg.gridSize[2] = 1; + duCfgParam.macCellCfg.dlCarrCfg.gridSize[3] = 1; + duCfgParam.macCellCfg.dlCarrCfg.gridSize[4] = 1; + duCfgParam.macCellCfg.dlCarrCfg.numAnt = NUM_TX_ANT; /* UL Carrier configuration */ - duCfgParam.clCellCfg.ulCarrCfg.pres = TRUE; - duCfgParam.clCellCfg.ulCarrCfg.bw = SUL_ARFCN; - duCfgParam.clCellCfg.ulCarrCfg.freq = NR_ARFCN; - duCfgParam.clCellCfg.ulCarrCfg.k0[0] = 1; - duCfgParam.clCellCfg.ulCarrCfg.k0[1] = 1; - duCfgParam.clCellCfg.ulCarrCfg.k0[2] = 1; - duCfgParam.clCellCfg.ulCarrCfg.k0[3] = 1; - duCfgParam.clCellCfg.ulCarrCfg.k0[4] = 1; - duCfgParam.clCellCfg.ulCarrCfg.gridSize[0] = 1; - duCfgParam.clCellCfg.ulCarrCfg.gridSize[1] = 1; - duCfgParam.clCellCfg.ulCarrCfg.gridSize[2] = 1; - duCfgParam.clCellCfg.ulCarrCfg.gridSize[3] = 1; - duCfgParam.clCellCfg.ulCarrCfg.gridSize[4] = 1; - duCfgParam.clCellCfg.ulCarrCfg.numAnt = NUM_RX_ANT; - - duCfgParam.clCellCfg.freqShft = FREQ_SHIFT_7P5KHZ; + duCfgParam.macCellCfg.ulCarrCfg.pres = TRUE; + duCfgParam.macCellCfg.ulCarrCfg.bw = SUL_ARFCN; + duCfgParam.macCellCfg.ulCarrCfg.freq = NR_ARFCN; + duCfgParam.macCellCfg.ulCarrCfg.k0[0] = 1; + duCfgParam.macCellCfg.ulCarrCfg.k0[1] = 1; + duCfgParam.macCellCfg.ulCarrCfg.k0[2] = 1; + duCfgParam.macCellCfg.ulCarrCfg.k0[3] = 1; + duCfgParam.macCellCfg.ulCarrCfg.k0[4] = 1; + duCfgParam.macCellCfg.ulCarrCfg.gridSize[0] = 1; + duCfgParam.macCellCfg.ulCarrCfg.gridSize[1] = 1; + duCfgParam.macCellCfg.ulCarrCfg.gridSize[2] = 1; + duCfgParam.macCellCfg.ulCarrCfg.gridSize[3] = 1; + duCfgParam.macCellCfg.ulCarrCfg.gridSize[4] = 1; + duCfgParam.macCellCfg.ulCarrCfg.numAnt = NUM_RX_ANT; + + duCfgParam.macCellCfg.freqShft = FREQ_SHIFT_7P5KHZ; /* SSB configuration */ - duCfgParam.clCellCfg.ssbCfg.ssbPbchPwr = SSB_PBCH_PWR; - duCfgParam.clCellCfg.ssbCfg.bchPayload = BCH_PAYLOAD; - duCfgParam.clCellCfg.ssbCfg.scsCmn = SUBCARRIER_SPACING; - duCfgParam.clCellCfg.ssbCfg.ssbPrbOffset = PRB_OFFSET; - duCfgParam.clCellCfg.ssbCfg.betaPss = BETA_PSS; - duCfgParam.clCellCfg.ssbCfg.ssbPeriod = SSB_PERIODICITTY; - duCfgParam.clCellCfg.ssbCfg.ssbSubcOffset = SSB_SUBCARRIER_OFFSET; - duCfgParam.clCellCfg.ssbCfg.mibPdu = 104; - duCfgParam.clCellCfg.ssbCfg.nSSBMask[0] = 2162721; - duCfgParam.clCellCfg.ssbCfg.nSSBMask[1] = 0; - duCfgParam.clCellCfg.ssbCfg.multCarrBand = SSB_MULT_CARRIER_BAND; - duCfgParam.clCellCfg.ssbCfg.multCellCarr = MULT_CELL_CARRIER; + duCfgParam.macCellCfg.ssbCfg.ssbPbchPwr = SSB_PBCH_PWR; + duCfgParam.macCellCfg.ssbCfg.bchPayloadOption = BCH_PAYLOAD; + duCfgParam.macCellCfg.ssbCfg.scsCmn = SUBCARRIER_SPACING; + duCfgParam.macCellCfg.ssbCfg.ssbPrbOffset = PRB_OFFSET; + duCfgParam.macCellCfg.ssbCfg.betaPss = BETA_PSS; + duCfgParam.macCellCfg.ssbCfg.ssbPeriod = SSB_PERIODICITTY; + duCfgParam.macCellCfg.ssbCfg.ssbSubcOffset = SSB_SUBCARRIER_OFFSET; + duCfgParam.macCellCfg.ssbCfg.mibPdu = 104; + duCfgParam.macCellCfg.ssbCfg.nSSBMask[0] = 2162721; + duCfgParam.macCellCfg.ssbCfg.nSSBMask[1] = 0; + duCfgParam.macCellCfg.ssbCfg.multCarrBand = SSB_MULT_CARRIER_BAND; + duCfgParam.macCellCfg.ssbCfg.multCellCarr = MULT_CELL_CARRIER; /* PRACH configuration */ - duCfgParam.clCellCfg.prachCfg.pres = TRUE; - duCfgParam.clCellCfg.prachCfg.prachSeqLen = PRACH_SEQ_LEN; - duCfgParam.clCellCfg.prachCfg.prachSubcSpacing = PRACH_SUBCARRIER_SPACING; - duCfgParam.clCellCfg.prachCfg.prachRstSetCfg = PRACH_RESTRICTED_SET_CFG; - duCfgParam.clCellCfg.prachCfg.prachFdm = NUM_PRACH_FDM; - duCfgParam.clCellCfg.prachCfg.fdm[0].rootSeqIdx = ROOT_SEQ_IDX; - duCfgParam.clCellCfg.prachCfg.fdm[0].numRootSeq = NUM_ROOT_SEQ; - duCfgParam.clCellCfg.prachCfg.fdm[0].k1 = 1; - duCfgParam.clCellCfg.prachCfg.fdm[0].zeroCorrZoneCfg = ZERO_CORRELATION_ZONE_CFG; - duCfgParam.clCellCfg.prachCfg.fdm[0].numUnusedRootSeq = NUM_UNUSED_ROOT_SEQ; - DU_ALLOC(duCfgParam.clCellCfg.prachCfg.fdm[0].unsuedRootSeq, NUM_UNUSED_ROOT_SEQ * sizeof(U8)); - if(duCfgParam.clCellCfg.prachCfg.fdm[0].unsuedRootSeq == NULLP) + duCfgParam.macCellCfg.prachCfg.pres = TRUE; + duCfgParam.macCellCfg.prachCfg.prachSeqLen = PRACH_SEQ_LEN; + duCfgParam.macCellCfg.prachCfg.prachSubcSpacing = PRACH_SUBCARRIER_SPACING; + duCfgParam.macCellCfg.prachCfg.prachRstSetCfg = PRACH_RESTRICTED_SET_CFG; + duCfgParam.macCellCfg.prachCfg.prachFdm = NUM_PRACH_FDM; + duCfgParam.macCellCfg.prachCfg.fdm[0].rootSeqIdx = ROOT_SEQ_IDX; + duCfgParam.macCellCfg.prachCfg.fdm[0].numRootSeq = NUM_ROOT_SEQ; + duCfgParam.macCellCfg.prachCfg.fdm[0].k1 = 1; + duCfgParam.macCellCfg.prachCfg.fdm[0].zeroCorrZoneCfg = ZERO_CORRELATION_ZONE_CFG; + duCfgParam.macCellCfg.prachCfg.fdm[0].numUnusedRootSeq = NUM_UNUSED_ROOT_SEQ; + DU_ALLOC(duCfgParam.macCellCfg.prachCfg.fdm[0].unsuedRootSeq, NUM_UNUSED_ROOT_SEQ * sizeof(U8)); + if(duCfgParam.macCellCfg.prachCfg.fdm[0].unsuedRootSeq == NULLP) { DU_LOG("\nDU_APP : Memory allocation failed"); RETVALUE(RFAILED); } - *(duCfgParam.clCellCfg.prachCfg.fdm[0].unsuedRootSeq) = UNUSED_ROOT_SEQ; - duCfgParam.clCellCfg.prachCfg.ssbPerRach = SSB_PER_RACH; - duCfgParam.clCellCfg.prachCfg.prachMultCarrBand = PRACH_MULT_CARRIER_BAND; + *(duCfgParam.macCellCfg.prachCfg.fdm[0].unsuedRootSeq) = UNUSED_ROOT_SEQ; + duCfgParam.macCellCfg.prachCfg.ssbPerRach = SSB_PER_RACH; + duCfgParam.macCellCfg.prachCfg.prachMultCarrBand = PRACH_MULT_CARRIER_BAND; /* TDD configuration */ - duCfgParam.clCellCfg.tddCfg.pres = TRUE; - duCfgParam.clCellCfg.tddCfg.tddPeriod = TDD_PERIODICITY; + duCfgParam.macCellCfg.tddCfg.pres = TRUE; + duCfgParam.macCellCfg.tddCfg.tddPeriod = TDD_PERIODICITY; FillSlotConfig(); /* RSSI Measurement configuration */ - duCfgParam.clCellCfg.rssiUnit = RSS_MEASUREMENT_UNIT; + duCfgParam.macCellCfg.rssiUnit = RSS_MEASUREMENT_UNIT; /* This should be calculated based on (number of mandatory parameters) + (number of otional parameters being filled) */ - duCfgParam.clCellCfg.numTlv = 39; + duCfgParam.macCellCfg.numTlv = 39; RETVALUE(ROK); } + +/******************************************************************* + * + * @brief Configures the DU Parameters + * + * @details + * + * Function : fillDuPort + * + * Functionality: + * - fills the DU Ports. + * + * @params[in] duPort array to be filled + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ + +S16 fillDuPort(U16 *duPort) +{ + duPort[F1_INTERFACE] = DU_PORT; /* DU Port idx 0 38472 */ + duPort[E2_INTERFACE] = RIC_PORT; /* RIC Port idx 1 38482 */ + + RETVALUE(ROK); +} + /******************************************************************* * * @brief Configures the DU Parameters @@ -194,7 +220,7 @@ S16 readClCfg() * * Functionality: * - Initializes the DuCfg members. - * - Calls readClCfg() + * - Calls readMacCfg() * * @params[in] system task ID * @return ROK - success @@ -205,23 +231,26 @@ S16 readClCfg() S16 readCfg() { U8 i,j,k; - U32 ipv4_du, ipv4_cu; + U32 ipv4_du, ipv4_cu, ipv4_ric; MibParams mib; Sib1Params sib1; cmInetAddr((S8*)DU_IP_V4_ADDR, &ipv4_du); cmInetAddr((S8*)CU_IP_V4_ADDR, &ipv4_cu); + cmInetAddr((S8*)RIC_IP_V4_ADDR, &ipv4_ric); + fillDuPort(duCfgParam.sctpParams.duPort); /* F1 DU IP Address and Port*/ - duCfgParam.sctpParams.duIpAddr.ipV4Pres = TRUE; duCfgParam.sctpParams.duIpAddr.ipV4Addr = ipv4_du; - duCfgParam.sctpParams.duPort = DU_PORT; /* F1 CU IP Address and Port*/ - duCfgParam.sctpParams.cuIpAddr.ipV4Pres = TRUE; duCfgParam.sctpParams.cuIpAddr.ipV4Addr = ipv4_cu; duCfgParam.sctpParams.cuPort = CU_PORT; + /* Fill RIC Params */ + duCfgParam.sctpParams.ricIpAddr.ipV4Addr = ipv4_ric; + duCfgParam.sctpParams.ricPort = RIC_PORT; + /* EGTP Parameters */ duCfgParam.egtpParams.localIp.ipV4Pres = TRUE; @@ -417,9 +446,9 @@ S16 readCfg() } - if(readClCfg() != ROK) + if(readMacCfg() != ROK) { - DU_LOG("\nDU_APP : Failed while reading CL config"); + DU_LOG("\nDU_APP : Failed while reading MAC config"); RETVALUE(RFAILED); } @@ -509,15 +538,14 @@ S16 bitStringToInt(BIT_STRING_t *bitString, U16 *val) return RFAILED; } - numOctets = (bitString->size + 7 )/8; - for(idx=0; idx< numOctets; idx++) + for(idx=0; idxsize-1; idx++) { *val |= bitString->buf[idx]; *val <<= 8; } - *val |= bitString->buf[numOctets -1]; - *val >>= ((numOctets * 8) - bitString->size); + *val |= bitString->buf[idx]; + *val >>= bitString->bits_unused; return ROK; }