Merge "cleanup of BuildAndSendUESetReq"
[o-du/l2.git] / src / 5gnrmac / lwr_mac_fsm.c
index 29d458a..c01734a 100644 (file)
@@ -76,9 +76,7 @@ extern void fapiMacConfigRsp();
 extern uint8_t UnrestrictedSetNcsTable[MAX_ZERO_CORR_CFG_IDX];
 
 /* Global variables */
-SlotIndInfo slotIndInfo;
 uint8_t slotIndIdx;
-
 uint16_t sendTxDataReq(CmLteTimingInfo *currTimingInfo, DlAlloc *dlInfo);
 
 void lwrMacInit()
@@ -2138,11 +2136,40 @@ S16 lwr_mac_handleStartReqEvt(void *msg)
    return ROK;
 } /* lwr_mac_handleStartReqEvt */
 
+ /*******************************************************************
+  *
+  * @brief Sends FAPI Stop Req to PHY
+  *
+  * @details
+  *
+  *    Function : lwr_mac_handleStopReqEvt
+  *
+  *    Functionality:
+  *         -Sends FAPI Stop Req to PHY
+  *
+  * @params[in]
+  * @return ROK     - success
+  *         RFAILED - failure
+  *
+  ********************************************************************/
+
 S16 lwr_mac_handleStopReqEvt(void *msg)
 {
 #ifdef FAPI
-   /* stop TX and RX operation return PHy to configured State
-      send stop.indication to l2/l3 */
+   uint32_t msgLen = 0;
+   fapi_stop_req_t *stopReq = NULLP;
+   LWR_MAC_ALLOC(stopReq, sizeof(fapi_stop_req_t));
+   if(stopReq != NULLP)
+   {
+      fillMsgHeader(&stopReq->header, FAPI_STOP_REQUEST, msgLen);
+      DU_LOG("\nLOWER MAC: Sending Stop Request to PHY");
+      LwrMacSendToPhy(stopReq->header.message_type_id, sizeof(fapi_stop_req_t), (void *)stopReq);
+   }
+   else
+   {
+      DU_LOG("\nLOWER MAC: Failed to allocate memory for Stop Request");
+      return RFAILED;
+   }
 #endif
    return ROK;
 }
@@ -2163,9 +2190,9 @@ S16 lwr_mac_handleStopReqEvt(void *msg)
  *             pointer to modified value
  ******************************************************************/
 
-PUBLIC void setMibPdu(uint8_t *mibPdu, uint32_t *val)
+PUBLIC void setMibPdu(uint8_t *mibPdu, uint32_t *val, uint16_t sfn)
 {
-   *mibPdu |= (((uint8_t)(slotIndInfo.sfn >> 2)) & MIB_SFN_BITMASK);
+   *mibPdu |= (((uint8_t)(sfn >> 2)) & MIB_SFN_BITMASK);
    *val = (mibPdu[0] << 24 | mibPdu[1] << 16 | mibPdu[2] << 8);
     DU_LOG("\nLWR_MAC: MIB PDU %x", *val);
 }
@@ -2191,8 +2218,7 @@ PUBLIC void setMibPdu(uint8_t *mibPdu, uint32_t *val)
  ******************************************************************/
 
 S16 fillSsbPdu(fapi_dl_tti_req_pdu_t *dlTtiReqPdu, MacCellCfg *macCellCfg,
-       MacDlSlot *currDlSlot,
-       uint32_t *msgLen, uint8_t ssbIdxCount) 
+       MacDlSlot *currDlSlot, uint32_t *msgLen, uint8_t ssbIdxCount, uint16_t sfn)
 {
    uint32_t mibPayload = 0;
    if(dlTtiReqPdu != NULL)
@@ -2206,7 +2232,7 @@ S16 fillSsbPdu(fapi_dl_tti_req_pdu_t *dlTtiReqPdu, MacCellCfg *macCellCfg,
       dlTtiReqPdu->u.ssb_pdu.ssbOffsetPointA = macCellCfg->ssbCfg.ssbOffsetPointA;
       dlTtiReqPdu->u.ssb_pdu.bchPayloadFlag = macCellCfg->ssbCfg.bchPayloadFlag;
       /* Bit manipulation for SFN */
-      setMibPdu(macCellCfg->ssbCfg.mibPdu, &mibPayload);
+      setMibPdu(macCellCfg->ssbCfg.mibPdu, &mibPayload, sfn);
       dlTtiReqPdu->u.ssb_pdu.bchPayload.v.bchPayload = mibPayload;
       dlTtiReqPdu->u.ssb_pdu.preCodingAndBeamforming.numPrgs = 0;
       dlTtiReqPdu->u.ssb_pdu.preCodingAndBeamforming.prgSize = 0;
@@ -2903,7 +2929,8 @@ uint16_t handleDlTtiReq(CmLteTimingInfo *currTimingInfo)
                                                        {
                                                                for(idx = 0; idx < currDlSlot->dlInfo.brdcstAlloc.ssbIdxSupported; idx++)
                                                                {
-                                                                       fillSsbPdu(&dlTtiReq->pdus[numPduEncoded], &macCellCfg, currDlSlot, &msgLen, idx);
+                                                                       fillSsbPdu(&dlTtiReq->pdus[numPduEncoded], &macCellCfg,\
+                                                                          currDlSlot, &msgLen, idx, dlTtiReq->sfn);
                                                                        numPduEncoded++;
                                                                }
                                                        }
@@ -3287,6 +3314,7 @@ lwrMacFsmHdlr fapiEvtHdlr[MAX_STATE][MAX_EVENT] =
        lwr_mac_handleConfigReqEvt,
        lwr_mac_handleConfigRspEvt,
        lwr_mac_handleInvalidEvt,
+       lwr_mac_handleInvalidEvt,
    },
    {
        /* PHY_STATE_CONFIGURED */
@@ -3295,6 +3323,7 @@ lwrMacFsmHdlr fapiEvtHdlr[MAX_STATE][MAX_EVENT] =
        lwr_mac_handleConfigReqEvt,
        lwr_mac_handleConfigRspEvt,
        lwr_mac_handleStartReqEvt,
+       lwr_mac_handleInvalidEvt,
    },
    {
        /* PHY_STATE_RUNNING */
@@ -3303,6 +3332,7 @@ lwrMacFsmHdlr fapiEvtHdlr[MAX_STATE][MAX_EVENT] =
        lwr_mac_handleConfigReqEvt,
        lwr_mac_handleConfigRspEvt,
        lwr_mac_handleInvalidEvt,
+       lwr_mac_handleStopReqEvt,
    }
 };