#include "legtp.h"
#include "du_utils.h"
#include "du_cell_mgr.h"
+#include "du_msg_hdl.h"
#ifdef O1_ENABLE
uint8_t macCfg = 0;
uint8_t macCfgInst = 0;
-DuCfgParams duCfgParam;
-uint8_t packRlcConfigReq(Pst *pst, RlcMngmt *cfg);
-uint8_t cmPkLkwCntrlReq(Pst *pst, RlcMngmt *cfg);
-uint8_t cmPkLrgCfgReq(Pst *pst, RgMngmt *cfg);
-uint8_t egtpHdlDatInd(EgtpMsg egtpMsg);
-uint8_t BuildAndSendDUConfigUpdate();
-uint16_t getTransId();
-uint8_t cmPkLrgSchCfgReq(Pst * pst,RgMngmt * cfg);
-uint8_t sendCellDeleteReqToMac(uint16_t cellId);
-uint8_t BuildAndSendStatsDeleteReq(RicSubscription *ricSubscriptionInfo);
-
packMacCellCfgReq packMacCellCfgOpts[] =
{
packMacCellCfg, /* packing for loosely coupled */
packDuMacStatsDeleteReq /* Light weight-loose coupling */
};
+DuMacStatsModificationReqFunc packMacStatsModificationReqOpts[]=
+{
+ packDuMacStatsModificationReq, /* Loose Coupling */
+ MacProcStatsModificationReq, /* Tight Coupling */
+ packDuMacStatsModificationReq /* Light weight-loose coupling */
+};
+
/**************************************************************************
* @brief Function to fill configs required by RLC
*
}
else
{
- /* TODO calling ric sub modification action to be deleted functions */
+ if((ret = e2ProcActionDeleteRsp(statsDeleteRsp)) != ROK)
+ {
+ DU_LOG("\nINFO --> DU_APP : Failed in %s at line %d", __func__, __LINE__);
+ }
}
DU_FREE_SHRABL_BUF(pst->region, pst->pool, statsDeleteRsp, sizeof(MacStatsDeleteRsp));
}
macStatsDelete->statsGrpIdToBeDelList[actionIdx] = actionDb->actionId;
actionIdx++;
}
+ actionNode= actionNode->next;
}
macStatsDelete->numStatsGroupToBeDeleted=actionIdx;
}
*
* Functionality: Statistics delete to DU layers
*
- * @params[in] Subscription Info
+ * @params[in]
+ * Subscription Info
+ * delete All Stats
*
* @return ROK - success
* RFAILED - failure
*
* ****************************************************************/
-uint8_t BuildAndSendStatsDeleteReq(RicSubscription *ricSubscriptionInfo)
+uint8_t BuildAndSendStatsDeleteReq(RicSubscription *ricSubscriptionInfo, bool deleteAllStats)
{
/* Build and sent subscription information to MAC in Statistics delete */
- if(BuildAndSendStatsDeleteReqToMac(ricSubscriptionInfo, true) != ROK)
+ if(BuildAndSendStatsDeleteReqToMac(ricSubscriptionInfo, deleteAllStats) != ROK)
{
DU_LOG("\nERROR --> DU_APP : Failed at BuildAndSendStatsDeleteReqToMac()");
return RFAILED;
return ROK;
}
+ /*******************************************************************
+ *
+ * @brief Send Statistics Modification request to MAC
+ *
+ * @details
+ *
+ * Function : BuildAndSendStatsModificationReqToMac()
+ *
+ * Functionality: Send Statistics Modification Request To Mac
+ *
+ * @params[in] Ric subscription info
+ *
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t BuildAndSendStatsModificationReqToMac(RicSubscription *ricSubscriptionInfo)
+{
+ Pst pst;
+ MacStatsModificationReq *macStatsModificationReq = NULLP;
+
+ /* Fill MAC statistics modification request */
+ DU_ALLOC_SHRABL_BUF(macStatsModificationReq, sizeof(MacStatsModificationReq));
+ if(macStatsModificationReq == NULLP)
+ {
+ DU_LOG("\nERROR --> DU_APP : Memory allocation failed for macStatsModificationReq in BuildAndSendStatsModificationReqToMac");
+ return RFAILED;
+ }
+
+ /* Fill E2 Subscription Info in MAC Statistics Modification Request and send to MAC */
+ if(fillRicSubsInMacStatsModificationReq(macStatsModificationReq, ricSubscriptionInfo) == ROK)
+ {
+ DU_LOG("\nDEBUG --> DU_APP: Sending Statistics Modification Request to MAC ");
+ FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_STATISTICS_MODIFY_REQ);
+
+ if( (*packMacStatsModificationReqOpts[pst.selector])(&pst, macStatsModificationReq) == ROK)
+ return ROK;
+
+ DU_LOG("\nERROR --> DU_APP: Failed to send Statistics Modification Request to MAC");
+ }
+
+ DU_LOG("\nERROR --> DU_APP: No Statistics group found valid. Hence statistics Modification request is not sent to MAC");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, macStatsModificationReq, sizeof(MacStatsModificationReq));
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Send Statistics Modification request to DU layers
+ *
+ * @details
+ *
+ * Function : BuildAndSendStatsModificationReq()
+ *
+ * Functionality: Check if there is an update in statistics
+ * reporting configuration. If so, send the update Modification to
+ * respective layer.
+ *
+ * @params[in] Subscription Info
+ *
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t BuildAndSendStatsModificationReq(RicSubscription *ricSubscriptionInfo)
+{
+ /* Build and sent subscription information to MAC in Statistics Modification Request */
+ if(BuildAndSendStatsModificationReqToMac(ricSubscriptionInfo) != ROK)
+ {
+ DU_LOG("\nERROR --> DU_APP : Failed at BuildAndSendStatsModificationReqToMac()");
+ return RFAILED;
+ }
+
+ return ROK;
+}
+
+/*******************************************************************
+ *
+ * @brief Process statistics modification response from MAC
+ *
+ * @details
+ *
+ * Function : DuProcMacStatsModificationRsp
+ *
+ * Functionality: Processes statistics modification configuration
+ * response from MAC. If configuration is succsessful, DUAPP starts
+ * reporting period timer for this subscription request
+ * from RIC
+ *
+ * @params[in]
+ * PST structure
+ * MAC stats modification rsp
+ *
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t DuProcMacStatsModificationRsp(Pst *pst, MacStatsModificationRsp *statsModificationRsp)
+{
+ uint8_t ret = RFAILED;
+ DU_LOG("\nINFO --> DU_APP : DuProcMacStatsModificationRsp: Received Statistics Modification Response from MAC");
+
+ if(statsModificationRsp)
+ {
+#ifdef DEBUG_PRINT
+ uint8_t idx = 0;
+ DU_LOG("\n Subscription Id [%ld]", statsModificationRsp->subscriptionId);
+
+ DU_LOG("\n Number of Accepted Groups [%d]", statsModificationRsp->numGrpAccepted);
+ for(idx=0; idx<statsModificationRsp->numGrpAccepted; idx++)
+ {
+ DU_LOG("\n Group Id [%d]", statsModificationRsp->statsGrpAcceptedList[idx]);
+ }
+
+ DU_LOG("\n Number of Rejected Groups [%d]", statsModificationRsp->numGrpRejected);
+ for(idx=0; idx<statsModificationRsp->numGrpRejected; idx++)
+ {
+ DU_LOG("\n Group Id [%d]", statsModificationRsp->statsGrpRejectedList[idx].groupId);
+ }
+#endif
+ if((ret = e2ProcStatsModificationRsp(statsModificationRsp)) != ROK)
+ {
+ DU_LOG("\nERROR --> DU_APP : DuProcMacStatsModificationRsp: Failed in %s at line %d", __func__, __LINE__);
+ }
+ DU_FREE_SHRABL_BUF(pst->region, pst->pool, statsModificationRsp, sizeof(MacStatsModificationRsp));
+ }
+ else
+ {
+ DU_LOG("\nERROR --> DU_APP : DuProcMacStatsModificationRsp: Received NULL Pointer");
+ }
+ return ret;
+}
+
/**********************************************************************
End of file
**********************************************************************/