[Epic-ID: ODUHIGH-516][Task-ID: ODUHIGH-534] Implementation of Reset request(RIC...
[o-du/l2.git] / src / ric_stub / ric_stub.h
index c487758..b4c159e 100644 (file)
 ################################################################################
 *******************************************************************************/
 
-#ifndef __CU_MGR_MAIN_H__
-#define __CU_MGR_MAIN_H__
-
-
-#include "stdio.h"
-#include "stdlib.h"
-#include "string.h"
-#include "stdbool.h"
-#include "ctype.h"
-#include "envopt.h"        /* Environment options */
-#include "envdep.h"        /* Environment dependent */
-#include "envind.h"        /* Environment independent */
-
-#include "gen.h"           /* General */
-#include "ssi.h"           /* System services */
-#include "ss_queue.h"
-#include "ss_task.h"
-#include "ss_msg.h"
-#include "cm_inet.h"
-#include "cm_llist.h"      /* Common link list  defines  */
-#include "cm_hash.h"       /* Common hashlist  defines */
-
-#include "gen.x"           /* General */
-#include "ssi.x"   /* System services */
-#include "ss_queue.x"
-#include "ss_task.x"
-#include "ss_msg.x"
-#include "cm_lib.x"
-#include "cm_inet.x"
-#include "cm_llist.x"      /* Common link list  defines  */
-#include "cm_hash.x"       /* Common hashlist  defines */
-
-#include "du_log.h"
-#define MAX_IPV6_LEN 16
+#ifndef __RIC_MGR_MAIN_H__
+#define __RIC_MGR_MAIN_H__
+
+#define RIC_ID 1
+#define RIC_NAME "ORAN_OAM_RIC"
+
+#define DU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0001"
+#define RIC_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0011"
+
+#ifndef O1_ENABLE
+#define LOCAL_IP_RIC "192.168.130.80"
+
+#define E2_SCTP_PORT 36421
+#define NUM_E2_ASSOC 1 
+#define REMOTE_IP_DU (char*[]){"192.168.130.81", "192.168.130.83"}
+#endif
+
+#define RRC_VER 0
+#define EXT_RRC_VER 5
+#define PLMN_MCC0 3
+#define PLMN_MCC1 1
+#define PLMN_MCC2 1
+#define PLMN_MNC0 4
+#define PLMN_MNC1 8
+#define PLMN_MNC2 0
+
 #define RIC_DU_NAME_LEN_MAX 30      /* Max length of RIC/DU name string */
 
 #define RIC_APP_MEM_REG 1
 #define RIC_POOL 1
+#define MAX_RAN_FUNCTION 256        /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.2.2 : maxofRANfunctionID */
+#define MAX_NUM_TRANSACTION 256     /* As per, O-RAN WG3 E2AP v3.0, section 9.2.33 */
+
+#define MAX_RIC_ACTION  16          /* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.1.1.1 : maxofRICActionID */
+#define MAX_RIC_REQUEST 5           /* As per O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.7, max request is 65535. \
+                                     * But for our internal testing purpose, keeping it to 5 for now */
 
 /* allocate and zero out a static buffer */
 #define RIC_ALLOC(_datPtr, _size)                                \
@@ -62,7 +60,7 @@
    _ret = SGetSBuf(RIC_APP_MEM_REG, RIC_POOL,                  \
                      (Data **)&_datPtr, _size);                  \
    if(_ret == ROK)                                              \
-      cmMemset((U8*)_datPtr, 0, _size);                         \
+      memset(_datPtr, 0, _size);                         \
    else                                                         \
       _datPtr = NULLP;                                          \
 }
    SPutSBuf(RIC_APP_MEM_REG, RIC_POOL,                         \
          (Data *)_datPtr, _size);
 
-typedef struct ipAddr
+#define SEARCH_DU_DB(_duIdx, _duId, _duDb){\
+   _duDb = NULLP; \
+   for(_duIdx=0; _duIdx < ricCb.numDu; _duIdx++)\
+   {\
+      if(ricCb.duInfo[_duIdx].duId == _duId)\
+      {\
+         _duDb =  (&ricCb.duInfo[_duIdx]);\
+         break; \
+     }\
+   }\
+}
+
+/* O-RAN.WG3.E2AP-R003-v03.00 : Section 9.2.26 */
+typedef enum
+{
+   NG,
+   XN,
+   E1,
+   F1,
+   W1,
+   S1,
+   X2
+}InterfaceType;
+
+typedef struct
 {
- Bool ipV4Pres;
- U32  ipV4Addr;
- Bool ipV6Pres;
- U8   ipV6Addr[MAX_IPV6_LEN];
-}SctpIpAddr;
+   uint16_t requestorId;
+   uint16_t instanceId;
+}RicRequestId;
 
-typedef struct RrcVersion
+typedef struct
 {
-  U8    rrcVer;     /* Latest RRC Version */
-  U32   extRrcVer;  /* Latest RRC version extended */
-}RrcVersion;
+   int16_t         actionId;
+}ActionInfo;
 
-typedef struct sctpParamsRic
+typedef struct ricSubscription
 {
-   SctpIpAddr  duIpAddr;
-   U16         duPort;
-   SctpIpAddr  ricIpAddr;
-   U16         ricPort;
-}SctpParamsRic;
+   RicRequestId    requestId;
+   uint8_t         numOfActions;
+   ActionInfo      actionSequence[MAX_RIC_ACTION];
+}RicSubscription;
 
-typedef struct fPLMN
+typedef struct
 {
-   U8 mcc[3];
-   U8 mnc[3];
-}Plmn;
+   uint16_t  id;
+   uint16_t  revisionCounter;
+   uint8_t   numOfSubscription;
+   RicSubscription subscriptionList[MAX_RIC_REQUEST];
+}RanFunction;
 
+typedef struct
+{
+   InterfaceType   interfaceType;
+   uint64_t        componentId;
+}E2NodeComponent;
 
-typedef struct cuCfgParams
+typedef struct duDb
 {
-   U32             cuId;
-   char            cuName[RIC_DU_NAME_LEN_MAX];
-   SctpParamsRic   sctpParams;
+   uint32_t        duId;
+   uint8_t         ricTransIdCounter;
+   uint16_t        numOfRanFunction;
+   RanFunction     ranFunction[MAX_RAN_FUNCTION];
+   E2NodeComponent e2NodeComponent;
+}DuDb;
+
+typedef struct ricCfgParams
+{
+   uint32_t        ricId;
+   char            ricName[RIC_DU_NAME_LEN_MAX];
+   RicSctpParams   sctpParams;
    Plmn            plmn;
-   RrcVersion      rrcVersion;
-}CuCfgParams;
-CuCfgParams cuCfgParams; //global variable to hold all configs
+}RicCfgParams;
+
+typedef struct cuGlobalCb
+{
+   RicCfgParams ricCfgParams;
+   uint8_t      numDu;
+   DuDb         duInfo[MAX_DU_SUPPORTED];
+}RicGlobalCb;
+
+RicGlobalCb ricCb;
+
+typedef struct
+{
+   uint8_t numOfRanFunAccepted;
+   RanFunction ranFunAcceptedList[MAX_RAN_FUNCTION];
+   uint8_t numOfRanFuneRejected;
+   RanFunction ranFunRejectedList[MAX_RAN_FUNCTION];
+}RicTmpRanFunList;
 
 void readRicCfg();
 void cuAppInmsgHdlr(Buffer *mBuf);