*******************************************************************************/
/* This file contains all utility functions */
-#include "du_cfg.h"
+#include "du_mgr.h"
+#include "du_sys_info_hdl.h"
#include "MIB.h"
#include "PLMN-IdentityInfo.h"
#include "odu_common_codec.h"
/* DL carrier configuration */
duCfgParam.macCellCfg.dlCarrCfg.pres = TRUE;
- duCfgParam.macCellCfg.dlCarrCfg.bw = SUL_ARFCN;
+ duCfgParam.macCellCfg.dlCarrCfg.bw = BANDWIDTH;
duCfgParam.macCellCfg.dlCarrCfg.freq = NR_ARFCN;
duCfgParam.macCellCfg.dlCarrCfg.k0[0] = 1;
duCfgParam.macCellCfg.dlCarrCfg.k0[1] = 1;
/* SSB configuration */
duCfgParam.macCellCfg.ssbCfg.ssbPbchPwr = SSB_PBCH_PWR;
- duCfgParam.macCellCfg.ssbCfg.bchPayloadOption = BCH_PAYLOAD;
+ duCfgParam.macCellCfg.ssbCfg.bchPayloadFlag = BCH_PAYLOAD;
duCfgParam.macCellCfg.ssbCfg.scsCmn = SUBCARRIER_SPACING;
- duCfgParam.macCellCfg.ssbCfg.ssbPrbOffset = PRB_OFFSET;
+ duCfgParam.macCellCfg.ssbCfg.ssbOffsetPointA = OFFSET_TO_POINT_A;
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.ssbScOffset = SSB_SUBCARRIER_OFFSET;
+ duCfgParam.macCellCfg.ssbCfg.ssbMask[0] = 1; /* only one SSB is transmitted */
+ duCfgParam.macCellCfg.ssbCfg.ssbMask[1] = 0;
+ if(BuildMibPdu() != ROK)
+ {
+ DU_LOG("\nFailed to build MIB PDU");
+ memset(&duCfgParam.macCellCfg.ssbCfg.mibPdu, 0, 3*sizeof(uint8_t));
+ }
+ else
+ {
+ for(uint8_t idx=0; idx<encBufSize; idx++)
+ {
+ duCfgParam.macCellCfg.ssbCfg.mibPdu[idx]=encBuf[idx];
+ }
+ }
duCfgParam.macCellCfg.ssbCfg.multCarrBand = SSB_MULT_CARRIER_BAND;
duCfgParam.macCellCfg.ssbCfg.multCellCarr = MULT_CELL_CARRIER;
/* RSSI Measurement configuration */
duCfgParam.macCellCfg.rssiUnit = RSS_MEASUREMENT_UNIT;
+ /* fill SIB1 configuration */
+ duCfgParam.macCellCfg.sib1Cfg.sib1PduLen = duCfgParam.srvdCellLst[0].duSysInfo.sib1Len;
+ DU_ALLOC(duCfgParam.macCellCfg.sib1Cfg.sib1Pdu,duCfgParam.srvdCellLst[0].duSysInfo.sib1Len);
+ memcpy(duCfgParam.macCellCfg.sib1Cfg.sib1Pdu, duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg, \
+ duCfgParam.srvdCellLst[0].duSysInfo.sib1Len);
+ duCfgParam.macCellCfg.sib1Cfg.sib1NewTxPeriod = SIB1_NEW_TX_PERIOD;
+ duCfgParam.macCellCfg.sib1Cfg.sib1RepetitionPeriod = SIB1_REPETITION_PERIOD;
+ duCfgParam.macCellCfg.sib1Cfg.coresetZeroIndex = CORESET_0_INDEX;
+ duCfgParam.macCellCfg.sib1Cfg.searchSpaceZeroIndex = SEARCHSPACE_0_INDEX;
+ duCfgParam.macCellCfg.sib1Cfg.sib1Mcs = SIB1_MCS;
+
/* This should be calculated based on
(number of mandatory parameters) + (number of otional parameters being filled) */
duCfgParam.macCellCfg.numTlv = 39;
}
/*******************************************************************
- *
- * @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
- *
- * ****************************************************************/
-
+*
+* @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 */
+ duPort[F1_INTERFACE] = DU_PORT; /* DU Port idx 0 38472 */
+ duPort[E2_INTERFACE] = RIC_PORT; /* RIC Port idx 1 38482 */
- RETVALUE(ROK);
+ RETVALUE(ROK);
}
+
+
/*******************************************************************
*
* @brief Configures the DU Parameters
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);
+ cmInetAddr((S8*)RIC_IP_V4_ADDR, &ipv4_ric);
+ fillDuPort(duCfgParam.sctpParams.duPort);
/* F1 DU IP Address and Port*/
duCfgParam.sctpParams.duIpAddr.ipV4Addr = ipv4_du;
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;
-
-
+ /* Fill RIC Params */
+ duCfgParam.sctpParams.ricIpAddr.ipV4Addr = ipv4_ric;
+ duCfgParam.sctpParams.ricPort = RIC_PORT;
/* EGTP Parameters */
duCfgParam.egtpParams.localIp.ipV4Pres = TRUE;
duCfgParam.egtpParams.localIp.ipV4Addr = ipv4_du;
sib1.tac = DU_TAC;
sib1.ranac = DU_RANAC;
sib1.cellIdentity = CELL_IDENTITY;
- sib1.cellResvdForOpUse =\
+ sib1.cellResvdForOpUse =
PLMN_IdentityInfo__cellReservedForOperatorUse_notReserved;
duCfgParam.sib1Params = sib1;
return RFAILED;
}
strcpy(duCfgParam.srvdCellLst[i].duSysInfo.mibMsg, encBuf);
+ duCfgParam.srvdCellLst[i].duSysInfo.mibLen = encBufSize;
/*gnb DU System Info mib msg*/
BuildSib1Msg();
DU_LOG("\nDU_APP: Memory allocation failure");
return RFAILED;
}
- for(int x=0; x<encBufSize; x++)
- {
- duCfgParam.srvdCellLst[i].duSysInfo.sib1Msg[x]=\
- encBuf[x];
- }
+ memcpy(duCfgParam.srvdCellLst[i].duSysInfo.sib1Msg,\
+ encBuf,encBufSize);
+ duCfgParam.srvdCellLst[i].duSysInfo.sib1Len = encBufSize;
}
* ****************************************************************/
S16 bitStringToInt(BIT_STRING_t *bitString, U16 *val)
{
- U16 numOctets, idx;
+ U16 idx;
if(bitString->buf == NULL || bitString->size <= 0)
{
DU_LOG("\nDU_APP : Bit string is empty");
return RFAILED;
}
- numOctets = (bitString->size + 7 )/8;
- for(idx=0; idx< numOctets; idx++)
+ for(idx=0; idx< bitString->size-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;
}