CRC and Rx Data Indication
[o-du/l2.git] / src / cu_stub / cu_f1ap_msg_hdl.c
index 55c95ca..a7ce195 100644 (file)
 #include "cu_stub_sctp.h"
 #include "cu_f1ap_msg_hdl.h"
 
-char encBuf[ENC_BUF_MAX_LEN];
-
-/*******************************************************************
- *
- * @brief Writes the encoded chunks into a buffer
- *
- * @details
- *
- *    Function : PrepFinalEncBuf 
- *
- *    Functionality:Fills the encoded buffer
- *
- * @params[in] void *buffer,initial encoded data
- * @params[in] size_t size,size of buffer
- * @params[in] void *encodedBuf,final buffer
- * @return ROK     - success
- *         RFAILED - failure
- *
- * ****************************************************************/
-static int PrepFinalEncBuf(const void *buffer, size_t size, void *encodedBuf)
-{
-   memcpy(encodedBuf + encBufSize, buffer, size);
-   encBufSize += size;
-   return 0;
-} /* PrepFinalEncBuf */
-
 /*******************************************************************
 *
 * @brief Sends F1 msg over SCTP
@@ -97,24 +71,36 @@ S16 SendF1APMsg(Region region, Pool pool)
    RETVALUE(ROK);
 } /* SendF1APMsg */
 
-
-void plmnBuildCU(Plmn plmn, OCTET_STRING_t *octe)
+/*******************************************************************
+*
+* @brief Builds NRCell ID 
+*
+* @details
+*
+*    Function : BuildNrCellId
+*
+*    Functionality: Building the NR Cell ID
+*
+* @params[in] BIT_STRING_t *nrcell
+* @return ROK     - success
+*         RFAILED - failure
+*
+* ****************************************************************/
+S16 BuildNrCellId(BIT_STRING_t *nrcell)
 {
-   U8 mncCnt;
-   mncCnt = 2;
-   octe->buf[0] = ((plmn.mcc[1] << 4) | (plmn.mcc[0]));
-   if(mncCnt == 2)
-   {
-      octe->buf[1]  = ((0xf0) | (plmn.mcc[2]));
-      octe->buf[2] = ((plmn.mnc[1] << 4) | (plmn.mnc[0]));
-   }
-   else
+   U8 tmp;
+   for (tmp = 0 ; tmp < nrcell->size-1; tmp++)
    {
-      octe->buf[1] = ((plmn.mnc[0] << 4) | (plmn.mcc[2]));
-      octe->buf[2] = ((plmn.mnc[2] << 4) | (plmn.mnc[1]));
+      nrcell->buf[tmp] = 0;
    }
+   nrcell->buf[4]   = 16; 
+   nrcell->bits_unused = 4;
+   nrcell->size = 5 * sizeof(uint8_t);
+   RETVALUE(ROK);
 }
-/*******************************************************************
+
+/********************************************************************
  *
  * @brief Builds and sends the F1SetupResponse
  *
@@ -317,10 +303,10 @@ S16 BuildAndSendF1SetupRsp()
       CU_FREE(f1apMsg, sizeof(F1AP_PDU_t));
       RETVALUE(RFAILED);
    }
-    plmnBuildCU(cuCfgParams.plmn , &cellToActivate->list.array[0]->value.choice.\
+    buildPlmnId(cuCfgParams.plmn , &cellToActivate->list.array[0]->value.choice.\
          Cells_to_be_Activated_List_Item.nRCGI.pLMN_Identity);
    cellToActivate->list.array[0]->value.choice.Cells_to_be_Activated_List_Item.\
-      nRCGI.nRCellIdentity.size = 5*sizeof(uint8_t);
+      nRCGI.nRCellIdentity.size = 5;
    CU_ALLOC(cellToActivate->list.array[0]->value.choice.\
          Cells_to_be_Activated_List_Item.nRCGI.nRCellIdentity.buf,\
          5*sizeof(uint8_t));
@@ -351,18 +337,7 @@ S16 BuildAndSendF1SetupRsp()
       CU_FREE(f1apMsg, sizeof(F1AP_PDU_t));
       RETVALUE(RFAILED);
    }
-   for (int tmp = 0 ; tmp < cellToActivate->list.array[0]->value.\
-         choice.Cells_to_be_Activated_List_Item.\
-         nRCGI.nRCellIdentity.size-1; tmp++)
-   {
-      cellToActivate->list.array[0]->value.choice.\
-         Cells_to_be_Activated_List_Item.nRCGI.nRCellIdentity.buf[tmp] = 0;
-   }
-   cellToActivate->list.array[0]->value.choice.\
-      Cells_to_be_Activated_List_Item.nRCGI.nRCellIdentity.buf[4] = 16;
-   cellToActivate->list.array[0]->value.choice.Cells_to_be_Activated_List_Item.\
-      nRCGI.nRCellIdentity.bits_unused = 4;
-
+   BuildNrCellId(&(cellToActivate->list.array[0]->value.choice.Cells_to_be_Activated_List_Item.nRCGI.nRCellIdentity));
    /* RRC Version */
    idx++;
    f1SetupRsp->protocolIEs.list.array[idx]->id = \
@@ -1033,7 +1008,7 @@ void F1APMsgHdlr(Buffer *mBuf)
             {
                DU_LOG("\nF1AP : F1 setup request received");
                BuildAndSendF1SetupRsp();
-                                 break;
+              break;
             }
 
             case InitiatingMessage__value_PR_GNBDUConfigurationUpdate: