[Epic-ID: ODUHIGH-516][Task-ID: ODUHIGH-531] RIC Subscription Modification Refuse
[o-du/l2.git] / src / du_app / du_e2ap_mgr.h
index 935e9a0..ef32be4 100644 (file)
 
 /* This file contains all E2AP message handler related functionality */
 #define MAX_E2_SETUP_TMR 1
+#define MAX_E2_NODE_CONFIG_UPDATE_TMR 1
 #define MAX_RIC_SERVICE_UPDATE_TMR 1
+#define MAX_RIC_SUBSCRIPTION_REPORTING_TMR 1
 
 #define EVENT_E2_SETUP_TMR 1
 #define EVENT_RIC_SERVICE_UPDATE_TMR 2
+#define EVENT_E2_NODE_CONFIG_UPDATE_TMR 3
+#define EVENT_RIC_SUBSCRIPTION_REPORTING_TMR 4
 
 #define MAX_NUM_TRANSACTION 256 /* As per, O-RAN WG3 E2AP v3.0, section 9.2.33 */
 #define MAX_RAN_FUNCTION 256        /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.2 : maxofRANfunctionID */
@@ -67,9 +71,11 @@ typedef enum
 typedef enum
 {
    E2_NODE_COMPONENT_ADD,
-   E2_NODE_COMPONENT_UPDATE
+   E2_NODE_COMPONENT_UPDATE,
+   E2_NODE_COMPONENT_DEL
 }ComponentActionType;
 
+
 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.30 */
 typedef enum
 {
@@ -214,10 +220,33 @@ typedef struct
    CmTimer          timer;
 }RicServiceUpdateTimer;
 
+typedef struct e2NodeCfgItem
+{
+   InterfaceType interface;
+   ComponentActionType actionType;
+}E2NodeConfigItem;
+
+typedef struct e2NodeCfgList
+{
+   uint16_t addE2NodeCount;
+   E2NodeConfigItem addE2Node[MAX_E2_NODE_COMPONENT];
+   uint16_t updateE2NodeCount;
+   E2NodeConfigItem updateE2Node[MAX_E2_NODE_COMPONENT];
+   uint16_t removeE2NodeCount;
+   E2NodeConfigItem removeE2Node[MAX_E2_NODE_COMPONENT];
+}E2NodeConfigList;
+
+typedef struct
+{
+   E2NodeConfigList configList;
+   CmTimer    timer;
+}E2NodeConfigUpdateTimer;
+
 typedef struct e2Timer
 {
    CmTimer e2SetupTimer;
-   RicServiceUpdateTimer ricServiceUpdateTimer;
+   RicServiceUpdateTimer   ricServiceUpdateTimer;
+   E2NodeConfigUpdateTimer e2NodeConfigUpdate;
    /* More timers can be added to this structure in future */
 }E2Timer;
 
@@ -265,10 +294,17 @@ typedef struct
    uint16_t instanceId;
 }RicRequestId;
 
+typedef struct reportStartTime
+{
+   uint32_t timeInSec;
+   uint32_t timeInMilliSec;
+}ReportStartTime;
+
 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.1.1 */
 typedef struct
 {
    uint32_t reportingPeriod; /* In milliseconds */
+   ReportStartTime startTime;
 }EventTriggerFormat1;
 
 /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.1 */
@@ -351,19 +387,22 @@ typedef struct
 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */
 typedef struct
 {
-   uint8_t           id;
+   int16_t           actionId;     /* O-RAN.WG3.E2AP-R003-v03.00 Section 9.2.10. Valid action id range = 0..255 */
    ActionType        type;
    ActionDefinition  definition;
    ConfigType        action;
+   E2FailureCause    failureCause; /* Used only when an action is required to be deleted */
 }ActionInfo;
 
 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */
 typedef struct
 {
    RicRequestId           requestId;
+   uint16_t               ranFuncId;
    EventTriggerDefinition eventTriggerDefinition;
    uint8_t                numOfActions;
    ActionInfo             actionSequence[MAX_RIC_ACTION];  
+   CmTimer                ricSubsReportTimer;
 }RicSubscription;
 
 typedef struct rejectedAction
@@ -449,8 +488,22 @@ typedef struct
 }E2apDb;
 
 uint8_t assignTransactionId();
+ActionInfo *fetchActionInfoFromActionId(uint8_t actionId, RicSubscription *ricSubscriptionInfo);
+RicSubscription *fetchSubsInfoFromRicReqId(RicRequestId ricReqId, RanFunction *ranFuncDb, CmLList **ricSubscriptionNode);
+RanFunction *fetchRanFuncFromRanFuncId(uint16_t ranFuncId);
+uint8_t fetchSubsInfoFromSubsId(uint64_t subscriptionId, RanFunction **ranFuncDb, CmLList **ricSubscriptionNode, \
+   RicSubscription **ricSubscriptionInfo);
+
+uint8_t fillRicSubsInMacStatsReq(MacStatsReq *macStatsReq, RicSubscription* ricSubscriptionInfo);
+uint8_t e2ProcStatsRsp(MacStatsRsp *statsRsp);
+uint8_t e2ProcStatsInd(MacStatsInd *statsInd);
+void E2apHdlRicSubsReportTmrExp(RicSubscription *ricSubscription);
+
 uint8_t ResetE2Request(E2ProcedureDirection dir, E2FailureCause resetCause);
 uint8_t SendE2APMsg(Region region, Pool pool, char *encBuf, int encBufSize);
+E2NodeComponent *fetchE2NodeComponentInfo(InterfaceType interfaceType, uint8_t componentActionType, CmLList **e2ComponentNode);
+uint8_t addOrModifyE2NodeComponent(InterfaceType interfaceType, uint8_t action, bool reqPart, uint8_t bufSize, char *bufString);
+
 /**********************************************************************
   End of file
  **********************************************************************/