+typedef struct e2Transcation
+{
+ uint8_t transIdCounter; /* counting the total number of DU initiated transaction */
+ E2TransInfo e2InitTransaction[MAX_NUM_TRANSACTION]; /* Storing DU-initiated transactions information */
+ E2TransInfo ricInitTransaction[MAX_NUM_TRANSACTION]; /* Storing RIC-initiated transactions information */
+}E2Transaction;
+
+typedef struct e2Timer
+{
+ CmTimer e2SetupTimer;
+ /* More timers can be added to this structure in future */
+}E2Timer;
+
+
+/* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.4 */
+typedef struct
+{
+ Plmn plmnId;
+ uint32_t nearRtRicId;
+}GlobalRicId;
+
+/* O-RAN.WG3.E2SM-R003-v03.00 : Section 6.2.2.1 */
+typedef struct
+{
+ char shortName[STRING_SIZE_150_BYTES];
+ char serviceModelOID[STRING_SIZE_1000_BYTES];
+ char description[STRING_SIZE_150_BYTES];
+}RanFunctionName;
+
+/* O-RAN.WG3.E2SM-R003-v03.00 : Section 6.2.2.2-6.2.2.4 */
+typedef struct
+{
+ uint8_t styleType;
+ char name[STRING_SIZE_150_BYTES];
+ uint8_t formatType;
+}RicStyle;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.2.1 */
+typedef struct
+{
+ char measurementTypeName[STRING_SIZE_150_BYTES];
+ uint16_t measurementTypeId;
+}MeasurementInfoForAction;
+
+typedef struct
+{
+ RicStyle reportStyle;
+ CmLListCp measurementInfoList;
+}RicReportStyle;
+
+/* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.7 */
+typedef struct
+{
+ uint16_t requestorId;
+ uint16_t instanceId;
+}RicRequestId;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.1.1 */
+typedef struct
+{
+ uint32_t reportingPeriod;
+}EventTriggerFormat1;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.1 */
+typedef struct
+{
+ uint8_t formatType;
+ union
+ {
+ EventTriggerFormat1 format1;
+ /* More formats can be added in future */
+ }choice;
+}EventTriggerDefinition;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.3.11 */
+typedef struct
+{
+ /* TODO : To be added in future when subcounters for any
+ * measurment type is required */
+}LabelInfo;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.1 */
+typedef struct
+{
+ union
+ {
+ char measurementTypeName[STRING_SIZE_150_BYTES];
+ uint16_t measurementTypeId;
+ }choice;
+
+ /* As of now Labels are not used, hence it is not implemented completely */
+ //uint32_t numOfLabels;
+ //LabelInfo LabelInfoList[MAX_LABEL_INFO];
+
+ CmLListCp measuredValue; /* To be filled when numOfLabels is 0, else values are calculated per Label */
+}MeasurementInfo;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.1 */
+typedef struct
+{
+ CmLListCp measurementInfoList; /* Each node corresponds to MeasurementInfo */
+ uint32_t granularityPeriod; /* In millisecond */
+}ActionDefFormat1;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.2 */
+typedef struct
+{
+ /* TODO : This format will be defined in future if required */
+}ActionDefFormat2;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.3 */
+typedef struct
+{
+ /* TODO : This format will be defined in future if required */
+}ActionDefFormat3;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.4 */
+typedef struct
+{
+ /* TODO : This format will be defined in future if required */
+}ActionDefFormat4;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2.5 */
+typedef struct
+{
+ /* TODO : This format will be defined in future if required */
+}ActionDefFormat5;
+
+/* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.1.2 */
+typedef struct
+{
+ uint8_t styleType;
+ union
+ {
+ ActionDefFormat1 format1;
+ ActionDefFormat2 format2;
+ ActionDefFormat3 format3;
+ ActionDefFormat4 format4;
+ ActionDefFormat5 format5;
+ }choice;
+}ActionDefinition;
+
+/* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */
+typedef struct
+{
+ uint8_t id;
+ ActionType type;
+ ActionDefinition definition;
+ ConfigType action;
+}ActionInfo;
+
+/* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */
+typedef struct
+{
+ RicRequestId requestId;
+ EventTriggerDefinition eventTriggerDefinition;
+ uint8_t numOfActions;
+ ActionInfo actionSequence[MAX_RIC_ACTION];
+}RicSubscription;
+
+typedef struct
+{
+ /* O-RAN.WG3.E2SM-KPM-R003-v03.00 : Section 8.2.2.1 */
+ uint16_t id;
+ RanFunctionName name;
+ uint16_t revisionCounter;
+ uint8_t numOfEventTriggerStyleSupported;
+ RicStyle eventTriggerStyleList[MAX_RIC_STYLES];
+ uint8_t numOfReportStyleSupported;
+ RicReportStyle reportStyleList[MAX_RIC_STYLES];
+ uint8_t ricIndicationHeaderFormat;
+ uint8_t ricIndicationMessageFormat;
+ /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 */
+ CmLListCp subscriptionList;
+}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;
+}E2NodeComponent;
+
+/* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.29 */
+
+typedef struct e2Ipaddr
+{
+ bool ipV4Pres;
+ uint32_t ipV4Addr;
+}E2IpAddr;
+
+typedef struct
+{
+ E2IpAddr localIpAddress;
+ uint16_t localPort;
+ E2IpAddr destIpAddress;
+ uint16_t destPort;
+ AssocUsage usage;
+}TNLAssociation;
+
+typedef struct e2TimersInfo
+{
+ E2Timer e2Timers;
+ uint8_t e2SetupTimerInterval;
+}E2TimersInfo;
+
+typedef struct
+{
+ uint64_t e2NodeId;
+ GlobalRicId ricId;
+ E2Transaction e2TransInfo;
+ uint16_t numOfRanFunction;
+ RanFunction ranFunction[MAX_RAN_FUNCTION];
+ CmLListCp e2NodeComponentList;
+ uint8_t numOfTNLAssoc;
+ TNLAssociation tnlAssoc[MAX_TNL_ASSOCIATION];
+ E2TimersInfo e2TimersInfo;