Slot indication from MAC to DU APP : LWLC fix and LC
[o-du/l2.git] / src / cm / du_app_mac_inf.c
index 1a00339..51c46c8 100644 (file)
@@ -53,7 +53,7 @@
  *         RFAILED - failure
  *
  ***************************************************************************/
-uint16_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg)
+int  packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg)
 {
    if(pst->selector == DU_SELECTOR_LC)
    {
@@ -66,15 +66,16 @@ uint16_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg)
 
       if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) 
       {
-         RETVALUE(RFAILED);
+         return RFAILED;
       }
 
       /* pack the address of the structure */
       CMCHKPK(cmPkPtr,(PTR)macCellCfg, mBuf);
 
       DU_LOG("\nDU-APP : MAC CELL config sent");
-      RETVALUE(SPstTsk(pst,mBuf));
+      return SPstTsk(pst,mBuf);
    } 
+   return ROK;
 }
 
 /**************************************************************************
@@ -95,7 +96,7 @@ uint16_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg)
  *         RFAILED - failure
  *
  ***************************************************************************/
-void unpackDuMacCellCfg(
+int  unpackDuMacCellCfg(
    DuMacCellCfgReq func,
    Pst *pst,
    Buffer *mBuf)
@@ -135,21 +136,21 @@ void unpackDuMacCellCfg(
  *         RFAILED - failure
  *
  ***************************************************************************/
-uint16_t packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm)
+int  packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm)
 {
    if(pst->selector == DU_SELECTOR_LC)
    {
       Buffer *mBuf = NULLP;
       if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) 
       {
-         RETVALUE(RFAILED);
+         return RFAILED;
       }
 
       /* pack the transaction ID in CNF structure */
                CMCHKPK(SPkU8, macCellCfgCfm->rsp, mBuf);
       CMCHKPK(SPkU16, macCellCfgCfm->transId, mBuf);
 
-      RETVALUE(SPstTsk(pst,mBuf));
+      return SPstTsk(pst,mBuf);
    }
    else if(pst->selector == DU_SELECTOR_LWLC)
    {
@@ -176,7 +177,7 @@ uint16_t packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm)
  *         RFAILED - failure
  *
  ***************************************************************************/
-uint16_t unpackMacCellCfgCfm(
+int unpackMacCellCfgCfm(
    DuMacCellCfgCfm func, 
    Pst *pst,
    Buffer *mBuf)
@@ -189,11 +190,12 @@ uint16_t unpackMacCellCfgCfm(
       CMCHKUNPK(SUnpkU16, &(macCellCfgCfm.transId), mBuf);
       CMCHKUNPK(SUnpkU8, &(macCellCfgCfm.rsp), mBuf);
 
-      RETVALUE((*func)(&macCellCfgCfm));
+      return (*func)(pst, &macCellCfgCfm);
    }
    else
    {
       /* only loose coupling is suported */
+               return ROK;
    }
 }
 
@@ -228,7 +230,7 @@ uint16_t packMacCellStartReq(Pst *pst, MacCellStartInfo  *cellStartInfo)
       if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK)
       {
          DU_LOG("\nDU APP : Memory allocation failed for cell start req pack");
-         RETVALUE(RFAILED);
+         return RFAILED;
       }
 
       /* pack the address of the structure */
@@ -307,7 +309,7 @@ uint16_t packMacCellStopReq(Pst *pst, MacCellStopInfo  *cellStopInfo)
       if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK)
       {
          DU_LOG("\nDU APP : Memory allocation failed for cell stop req pack");
-         RETVALUE(RFAILED);
+         return RFAILED;
       }
  
       /* pack the address of the structure */
@@ -374,28 +376,34 @@ uint16_t unpackMacCellStopReq(DuMacCellStopReq func, Pst *pst, Buffer *mBuf)
  * ****************************************************************/
 uint16_t packMacSlotInd(Pst *pst, SlotInfo *slotInfo )
 {
-   if(pst->selector == DU_SELECTOR_LC || pst->selector == DU_SELECTOR_TC)
+   Buffer *mBuf = NULLP;
+   if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK)
    {
-      /* Loose coupling not supported */
-      DU_LOG("\nDU APP : Only LWLC supported");
+      DU_LOG("\nDU APP : Memory allocation failed for cell start req pack");
       return RFAILED;
    }
-   else if(pst->selector == DU_SELECTOR_LWLC)
+   if(pst->selector == DU_SELECTOR_LC)
    {
-      Buffer *mBuf = NULLP;
+      CMCHKPK(SPkU16, slotInfo->cellId, mBuf);
+      CMCHKPK(SPkU16, slotInfo->sfn, mBuf);
+      CMCHKPK(SPkU16, slotInfo->slot, mBuf);
 
-      if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK)
-      {
-         DU_LOG("\nDU APP : Memory allocation failed for cell start req pack");
-         RETVALUE(RFAILED);
-      }
+               SPutStaticBuffer(pst->region, pst->pool, slotInfo, sizeof(SlotInfo), 0);
+               slotInfo = NULL;
+   }
+   else if(pst->selector == DU_SELECTOR_LWLC)
+   {
       /* pack the address of the structure */
       CMCHKPK(cmPkPtr,(PTR)slotInfo, mBuf);
-
-      return SPstTsk(pst,mBuf);
    }
-   return ROK;
+   else
+   {
+      SPutMsg(mBuf);
+   }
+
+   return SPstTsk(pst,mBuf);
 }
 
 /*******************************************************************
@@ -418,15 +426,27 @@ uint16_t packMacSlotInd(Pst *pst, SlotInfo *slotInfo )
  * ****************************************************************/
 uint16_t unpackMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf)
 {
-   SlotInfo *slotInfo;
-  
    if(pst->selector == DU_SELECTOR_LWLC)
    {
+      SlotInfo *slotInfo;
+
       /* unpack the address of the structure */
       CMCHKUNPK(cmUnpkPtr, (PTR *)&slotInfo, mBuf);
       SPutMsg(mBuf);
       return (*func)(pst, slotInfo);
    }
+   else if(pst->selector == DU_SELECTOR_LC)
+   {
+      SlotInfo slotInfo;
+
+      CMCHKUNPK(SUnpkU16, &(slotInfo.slot), mBuf);
+      CMCHKUNPK(SUnpkU16, &(slotInfo.sfn), mBuf);
+      CMCHKUNPK(SUnpkU16, &(slotInfo.cellId), mBuf);
+
+      SPutMsg(mBuf);
+      return (*func)(pst, &slotInfo);
+
+   }
    else
    {
       /* Nothing to do for loose coupling */