X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_utils.c;h=3d8b86349240bd4bde4cdb95fa17dca177b47576;hb=refs%2Fchanges%2F28%2F1828%2F1;hp=da5a29b02bff3cae5036448321df9d2cae8341e2;hpb=829bbd114f1c3dc00c1da47bca0a8207c049df3f;p=o-du%2Fl2.git diff --git a/src/du_app/du_utils.c b/src/du_app/du_utils.c index da5a29b02..3d8b86349 100644 --- a/src/du_app/du_utils.c +++ b/src/du_app/du_utils.c @@ -28,14 +28,14 @@ #define DU_INST 0 #define DU_ID 1 -#define DU_IP_V4_ADDR "168.168.31.12" -#define CU_IP_V4_ADDR "168.168.31.57" +#define DU_IP_V4_ADDR "10.0.2.20" +#define CU_IP_V4_ADDR "10.0.2.25" #define DU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0001" #define DU_PORT 38472 #define CU_PORT 38472 #define NR_PCI 1 #define NR_CELL_ID 1 -#define DU_NAME "Oran_OAM_DU" +#define DU_NAME "ORAN_OAM_DU" #define CELL_DIR UL_DL #define CELL_TYPE SMALL #define DUPLEX_MODE DUP_MODE_TDD @@ -80,9 +80,6 @@ #define TDD_PERIODICITY TX_PRDCTY_MS_2P5 #define RSS_MEASUREMENT_UNIT DONT_REPORT_RSSI -extern DuCfgParams ducfgparam; - - /* Filling Slot configuration as : * Slot Sym 0 Sym 1 Sym 2 Sym 3 Sym 4 Sym 5 Sym 6 Sym 7 Sym 8 Sym 9 Sym10 Sym11 Sym12 Sym13 * 0 DL DL DL DL DL DL DL DL DL DL DL DL DL DL @@ -107,8 +104,6 @@ extern DuCfgParams ducfgparam; * RFAILED - failure * * ****************************************************************/ - - void fillSlotConfig() { U8 slot; @@ -117,19 +112,19 @@ 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.clCellCfg.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.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; for(symbol = 0; symbol < MAX_SYMB_PER_SLOT; symbol++) - ducfgparam.clCellCfg.tddCfg.slotCfg[4][symbol] = UL_SLOT; + duCfgParam.clCellCfg.tddCfg.slotCfg[4][symbol] = UL_SLOT; } - + /******************************************************************* * * @brief Reads the CL Configuration. @@ -150,91 +145,97 @@ void fillSlotConfig() /* This function is used to fill up the cell configuration for CL */ -void readClCfg() +S16 readClCfg() { - ducfgparam.clCellCfg.carrierId = CARRIER_IDX; + duCfgParam.clCellCfg.carrierId = CARRIER_IDX; /* Cell configuration */ - ducfgparam.clCellCfg.cellId = NR_CELL_ID; - ducfgparam.clCellCfg.phyCellId = NR_PCI; - ducfgparam.clCellCfg.dupType = DUPLEX_MODE; + duCfgParam.clCellCfg.cellId = NR_CELL_ID; + duCfgParam.clCellCfg.phyCellId = NR_PCI; + duCfgParam.clCellCfg.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.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; /* 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.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; /* 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.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; /* 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; - *(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.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; + if(SGetSBuf(DU_APP_MEM_REGION, DU_POOL, (Data **)&(duCfgParam.clCellCfg.prachCfg.fdm[0].unsuedRootSeq), NUM_UNUSED_ROOT_SEQ * sizeof(U8))) + { + printf("\nMemory 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; /* TDD configuration */ - ducfgparam.clCellCfg.tddCfg.pres = TRUE; - ducfgparam.clCellCfg.tddCfg.tddPeriod = TDD_PERIODICITY; + duCfgParam.clCellCfg.tddCfg.pres = TRUE; + duCfgParam.clCellCfg.tddCfg.tddPeriod = TDD_PERIODICITY; fillSlotConfig(); /* RSSI Measurement configuration */ - ducfgparam.clCellCfg.rssiUnit = RSS_MEASUREMENT_UNIT; + duCfgParam.clCellCfg.rssiUnit = RSS_MEASUREMENT_UNIT; /* This should be calculated based on - (number of mandatory parameters) + (number of otional parameters being filled) */ - ducfgparam.clCellCfg.numTlv = 39; + (number of mandatory parameters) + (number of otional parameters being filled) */ + duCfgParam.clCellCfg.numTlv = 39; + RETVALUE(ROK); } /******************************************************************* * @@ -254,134 +255,145 @@ void readClCfg() * * ****************************************************************/ -void readCfg() +S16 readCfg() { U8 i,j,k; - + U32 ipv4_du, ipv4_cu; + + cmInetAddr((S8*)DU_IP_V4_ADDR, &ipv4_du); + cmInetAddr((S8*)CU_IP_V4_ADDR, &ipv4_cu); + //U32 ipv6_int = inet_addr(DU_IP_V6_ADDR); + /* F1 DU IP Address and Port*/ - ducfgparam.sctpParams.duIpAddr.ipV4Pres = TRUE; - strcpy(ducfgparam.sctpParams.duIpAddr.ipV4Addr, (char*)DU_IP_V4_ADDR); - ducfgparam.sctpParams.duIpAddr.ipV6Pres = FALSE; - strcpy(ducfgparam.sctpParams.duIpAddr.ipV6Addr, (char*)DU_IP_V6_ADDR); - ducfgparam.sctpParams.duPort = DU_PORT; - + duCfgParam.sctpParams.duIpAddr.ipV4Pres = TRUE; + duCfgParam.sctpParams.duIpAddr.ipV4Addr = ipv4_du; + duCfgParam.sctpParams.duIpAddr.ipV6Pres = FALSE; + //strcpy(duCfgParam.sctpParams.duIpAddr.ipV6Addr, (char*)DU_IP_V6_ADDR); + duCfgParam.sctpParams.duPort = DU_PORT; + /* F1 CU IP Address and Port*/ - ducfgparam.sctpParams.cuIpAddr.ipV4Pres = TRUE; - strcpy(ducfgparam.sctpParams.cuIpAddr.ipV4Addr, (char*)CU_IP_V4_ADDR); - ducfgparam.sctpParams.cuIpAddr.ipV6Pres = FALSE; - strcpy(ducfgparam.sctpParams.cuIpAddr.ipV6Addr, DU_IP_V6_ADDR); - ducfgparam.sctpParams.cuPort = CU_PORT; - + duCfgParam.sctpParams.cuIpAddr.ipV4Pres = TRUE; + duCfgParam.sctpParams.cuIpAddr.ipV4Addr = ipv4_cu; + duCfgParam.sctpParams.cuIpAddr.ipV6Pres = FALSE; + //strcpy(duCfgParam.sctpParams.cuIpAddr.ipV6Addr, DU_IP_V6_ADDR); + duCfgParam.sctpParams.cuPort = CU_PORT; + + duCfgParam.maxUe = 32; //TODO: Check /* DU Info */ - ducfgparam.duId = DU_ID; - strcpy(ducfgparam.duName,DU_NAME); - + duCfgParam.duId = DU_ID; + strcpy((char*)duCfgParam.duName,DU_NAME); + for(i=0;i