Implementation of ue context modification response JIRA ID = ODUHIGH-298
[o-du/l2.git] / src / du_app / du_cfg.c
index a596fdf..a344340 100644 (file)
 #include "BWP-DownlinkCommon.h"
 #include "BWP-UplinkCommon.h"
 
+#ifdef O1_ENABLE
+
+#include "Config.h"
+extern StartupConfig g_cfg;
+
+#endif
+
 DuCfgParams duCfgParam;
 char encBuf[ENC_BUF_MAX_LEN];
 
@@ -61,10 +68,15 @@ char encBuf[ENC_BUF_MAX_LEN];
  *   0   DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL
  *   1   DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL
  *   2   DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL
- *   3   DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    GD    GD    GD    UL
- *   4   UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL
+     3   DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL
+     4   DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL
+     5   DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL
+     6   DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL
+     7   DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    DL    F     UL
+     8   UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL
+     9   UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL    UL  
  */
-
+#ifdef NR_TDD
 /*******************************************************************
  *
  * @brief Fills the Slot configuration 
@@ -82,27 +94,35 @@ char encBuf[ENC_BUF_MAX_LEN];
  * ****************************************************************/
 void FillSlotConfig()
 {
-   uint8_t slot;
-   uint8_t symbol;
-
-   for(slot = 0; slot <= 3; slot++)
+   uint8_t slot = 0;
+   uint8_t symbol =0;
+   
+   memset(duCfgParam.macCellCfg.tddCfg.slotCfg, 0, sizeof(duCfgParam.macCellCfg.tddCfg.slotCfg[slot][symbol]* \
+                          MAX_TDD_PERIODICITY_SLOTS*MAX_SYMB_PER_SLOT));
+   
+   //Filling the DL Slots and initializing flexi slot
+   for(slot = 0; slot <= NUM_DL_SLOTS; slot++)
    {
-      for(symbol = 0; symbol < MAX_SYMB_PER_SLOT; symbol++)
+      for(symbol =0; symbol < MAX_SYMB_PER_SLOT; symbol++)
+      {
         duCfgParam.macCellCfg.tddCfg.slotCfg[slot][symbol] = DL_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.macCellCfg.tddCfg.slotCfg[4][symbol] = UL_SLOT;
+  
+   //Filling UL Slots
+   for(slot = NUM_DL_SLOTS+1; slot <= NUM_DL_SLOTS+NUM_UL_SLOTS; slot++)
+   {
+      for(symbol = 0; symbol < MAX_SYMB_PER_SLOT; symbol++)
+        duCfgParam.macCellCfg.tddCfg.slotCfg[slot][symbol] = UL_SLOT;
+   } 
+   //Updating Flexi Slot
+   slot = NUM_DL_SLOTS;
+   duCfgParam.macCellCfg.tddCfg.slotCfg[slot][12] = FLEXI_SLOT;
+   duCfgParam.macCellCfg.tddCfg.slotCfg[slot][13] = UL_SLOT;
 
 }
-
+#endif
 /*******************************************************************
- *
  * @brief Reads the CL Configuration.
  *
  * @details
@@ -221,12 +241,14 @@ uint8_t readMacCfg()
    duCfgParam.macCellCfg.prachCfg.rsrpThreshSsb = RSRP_THRESHOLD_SSB;
    duCfgParam.macCellCfg.prachCfg.raRspWindow = RA_RSP_WINDOW;
    duCfgParam.macCellCfg.prachCfg.prachRestrictedSet = PRACH_RESTRICTED_SET;
+#ifdef NR_TDD   
    /* TDD configuration */
    duCfgParam.macCellCfg.tddCfg.pres = TRUE;
    duCfgParam.macCellCfg.tddCfg.tddPeriod = TDD_PERIODICITY;
 
    FillSlotConfig();
 
+#endif
    /* RSSI Measurement configuration */
    duCfgParam.macCellCfg.rssiUnit = RSS_MEASUREMENT_UNIT;
 
@@ -313,9 +335,14 @@ uint8_t readMacCfg()
  * ****************************************************************/
 uint8_t fillDuPort(uint16_t *duPort)
 {
+
+#ifdef O1_ENABLE
+   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 */
-
+#endif
    return ROK;
 }
 
@@ -476,7 +503,7 @@ uint8_t fillServCellCfgCommSib(SrvCellCfgCommSib *srvCellCfgComm)
 
    /* Configuring TDD UL DL config common */
    tddCfg.refScs = SubcarrierSpacing_kHz30;
-   tddCfg.txPrd = TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms2p5;
+   tddCfg.txPrd = TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms5;
    tddCfg.numDlSlots = NUM_DL_SLOTS;
    tddCfg.numDlSymbols = NUM_DL_SYMBOLS;
    tddCfg.numUlSlots = NUM_UL_SLOTS;
@@ -515,9 +542,26 @@ uint8_t readCfg()
    MibParams mib;
    Sib1Params sib1;    
 
+#ifdef O1_ENABLE
+   if( getStartupConfig(&g_cfg) != ROK )
+   {
+      RETVALUE(RFAILED);
+   }
+   cmInetAddr((S8*)g_cfg.DU_IPV4_Addr, &ipv4_du);
+   cmInetAddr((S8*)g_cfg.CU_IPV4_Addr, &ipv4_cu);
+   cmInetAddr((S8*)g_cfg.RIC_IPV4_Addr, &ipv4_ric);
+
+   duCfgParam.sctpParams.cuPort = g_cfg.CU_Port;
+   duCfgParam.sctpParams.ricPort = g_cfg.RIC_Port;
+#else   
    cmInetAddr((S8*)DU_IP_V4_ADDR, &ipv4_du);
    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;
+#endif
+
    fillDuPort(duCfgParam.sctpParams.duPort);
 
    /* F1 DU IP Address and Port*/
@@ -525,11 +569,10 @@ uint8_t readCfg()
 
    /* F1 CU IP Address and Port*/
    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;
    duCfgParam.egtpParams.localIp.ipV4Addr = ipv4_du;