Merge "[Epic-ID: ODUHIGH-556][Task-ID: ODUHIGH-570] UL Candidate Sel and Res Alloc...
[o-du/l2.git] / src / du_app / du_e2ap_mgr.h
index 935e9a0..1ed7351 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 */
 #define STRING_SIZE_150_BYTES 150
 #define STRING_SIZE_1000_BYTES 1000
 
-#define SHORT_NAME "ORAN-E2SM-KPM"
-#define SERVICE_MODEL_OID  "1.3.6.1.4.1.53148.1.2.2.2"
-#define DESCRIPTION "KPM Monitor"
-#define NUM_OF_EVENT_TRIGGER_STYLE_SUPPORTED 1
-#define EVENT_TRIGGER_STYLE_NAME "Periodic Report"
-#define EVENT_TRIGGER_STYLE_TYPE 1
-#define EVENT_TRIGGER_STYLE_FORMAT_TYPE 1
-#define NUM_OF_RIC_REPORT_STYLE_SUPPORTED 1
-#define REPORT_STYLE_NAME "E2 Node Measurement"
-#define REPORT_STYLE_TYPE 1
-#define REPORT_ACTION_FORMAT_TYPE 1
-#define MEASUREMENT_TYPE_NAME (char*[]) {"RRU.PrbTotDl", "RRU.PrbTotUl"}
-#define RIC_INDICATION_HEADER_FORMAT 1
-#define RIC_INDICATION_MESSAGE_FORMAT 1
-
 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.26 */
 typedef enum
 {
@@ -67,9 +56,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 +205,33 @@ typedef struct
    CmTimer          timer;
 }RicServiceUpdateTimer;
 
+typedef struct e2NodeCfgItem
+{
+   InterfaceType interface;
+   uint64_t      componentId; 
+}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 +279,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 +372,23 @@ 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];  
+   CmLListCp              actionSequence; 
+   CmTimer                ricSubsReportTimer;
+   ConfigType             action;
+   E2FailureCause         failureCause; /* Used only when a subscription is required to be deleted */
 }RicSubscription;
 
 typedef struct rejectedAction
@@ -382,6 +407,26 @@ typedef struct pendingSubsRspInfo
    RejectedAction  rejectedActionList[MAX_RIC_ACTION];
 }PendingSubsRspInfo;
 
+typedef struct actionStatus
+{
+   uint8_t         numOfAcceptedActions;
+   uint8_t         acceptedActionList[MAX_RIC_ACTION];
+   uint8_t         numOfRejectedActions;
+   RejectedAction  rejectedActionList[MAX_RIC_ACTION];
+}ActionStatus;
+
+typedef struct pendingSubsModRspInfo 
+{
+   RicRequestId requestId;
+   uint16_t     ranFuncId;
+   bool         addActionCompleted;
+   ActionStatus addActionStatus;
+   bool         modActionCompleted;
+   ActionStatus modActionStatus;
+   bool         removeActionCompleted;
+   ActionStatus removeActionStatus;
+}PendingSubsModRspInfo;
+
 typedef struct
 {
    /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.2.1 */
@@ -398,18 +443,26 @@ typedef struct
    CmLListCp        subscriptionList;
    uint8_t          numPendingSubsRsp;
    PendingSubsRspInfo pendingSubsRspInfo[MAX_PENDING_SUBSCRIPTION_RSP];
+   uint8_t            numPendingSubsModRsp;
+   PendingSubsModRspInfo pendingSubsModRspInfo[MAX_PENDING_SUBSCRIPTION_RSP];
 }RanFunction;
 
 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.26-9.2.27 */
 typedef struct
 {
-   InterfaceType        interfaceType;
-   uint64_t             componentId; 
-   ComponentActionType  componentActionType;
-   uint8_t              reqBufSize;
-   uint8_t              *componentRequestPart;
-   uint8_t              rspBufSize;
-   uint8_t              *componentResponsePart;
+   uint8_t    reqBufSize;
+   uint8_t    *componentRequestPart;
+   uint8_t    rspBufSize;
+   uint8_t    *componentResponsePart;
+}E2NodeConfig;
+
+typedef struct
+{
+   InterfaceType interfaceType;
+   uint64_t      componentId; 
+   E2NodeConfig  *addConfiguration;
+   E2NodeConfig  *updateConfiguration;
+   bool          deleteConfiguration;
 }E2NodeComponent;
 
 /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.29 */
@@ -448,9 +501,51 @@ typedef struct
    E2TimersInfo     e2TimersInfo;
 }E2apDb;
 
+typedef struct e2ConnectionItem
+{
+   uint32_t    ipV4Addr;
+   AssocUsage  usage;
+}E2ConnectionItem;
+
+typedef struct e2ConnectionList
+{
+   uint8_t numOfE2ConnectionSetup;
+   E2ConnectionItem setupE2Connection[MAX_TNL_ASSOCIATION];
+   uint8_t numOfE2ConnectionFailedToSetup;
+   E2ConnectionItem failedToSetupE2Connection[MAX_TNL_ASSOCIATION];
+}E2ConnectionList;
+
 uint8_t assignTransactionId();
+ActionInfo *fetchActionInfoFromActionId(uint8_t actionId, RicSubscription *ricSubscriptionInfo, CmLList ** actionNode, ConfigType configType);
+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);
+void fetchRicSubsToBeDeleted(CmLListCp *ricSubsToBeDelList);
+
+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, uint64_t componentId, CmLList **e2ComponentNode);
+uint8_t fillE2NodeComponentReqInfo(InterfaceType interfaceType, uint64_t componentId, uint8_t action, uint8_t bufSize, char *bufString);
+uint8_t fillE2NodeComponentRspInfo(InterfaceType interfaceType, uint64_t componentId, uint8_t action, uint8_t bufSize, char *bufString);
+void deleteRicSubscriptionList(CmLListCp *subscriptionList);
+void deleteRicSubscriptionNode(CmLList *ricSubscriptionInfo);
+void deleteMeasurementInfoList(CmLListCp *measInfoList);
+void deleteActionSequence(CmLList *action);
+void deleteMeasuredValueList(CmLListCp *measuredValueList);
+void removeE2NodeInformation();
+void encodeSubscriptionId(uint64_t *subscriptionId, uint16_t ranFuncId, RicRequestId ricReqId);
+uint8_t e2ProcStatsDeleteRsp(MacStatsDeleteRsp *statsDeleteRsp);
+uint8_t fillRicSubsInMacStatsModificationReq(MacStatsModificationReq *macStatsModReq, RicSubscription* ricSubscriptionInfo);
+uint8_t e2ProcActionDeleteRsp(MacStatsDeleteRsp *statsDeleteRsp);
+uint8_t e2ProcStatsModificationRsp(MacStatsModificationRsp *statsModificationRsp);
+uint8_t duProcPendingSubsModRsp(RicSubscription *ricSubscriptionInfo, PendingSubsModRspInfo *pendingSubsModRsp);
+
 /**********************************************************************
   End of file
  **********************************************************************/