Merge "RAR and MSG3 scheduling in TDD [Issue-ID: ODUHIGH-342]"
[o-du/l2.git] / src / du_app / du_cfg.h
index 419cfe0..168b22d 100644 (file)
 #define MAX_F1_CONNECTIONS 65536    /* Max num of F1 connections */
 #define MAX_PLMN           1        /* Max num of broadcast PLMN ids */
 #define MAXNRARFCN         3279165  /* Maximum values of NRAFCN */
-#define MAXNRCELLBANDS     2       /* Maximum number of frequency bands */
+#define MAX_NRCELL_BANDS   2       /* Maximum number of frequency bands */
 #define MAX_NUM_OF_SLICE_ITEMS 1024     /* Maximum number of signalled slice support items */
-#define MAXBPLMNNRMINUS1   1       /* Maximum number of PLMN Ids broadcast in an NR cell minus 1 */
+#define MAX_BPLMN_NRCELL_MINUS_1   1       /* Maximum number of PLMN Ids broadcast in an NR cell minus 1 */
 #define MAXNUMOFSIBTYPES   32       /* Maximum number of SIB types */
 #define MAX_TNL_ASSOC      32       /* Max num of TNL Assoc between CU and DU */
 #define MAXCELLINENB       256      /* Max num of cells served by eNB */
 #define MAXNUMOFUACPERPLMN 64       /* Maximum number of signalled categories per PLMN */
 #define NR_RANAC           150      /* RANAC */
 #define DEFAULT_CELLS      1        /* Max num of broadcast PLMN ids */
-
+#define NUM_OF_SUPPORTED_SLICE  2
+#define DEDICATED_SLICE_INDEX   1 
+#define IE_EXTENSION_LIST_COUNT 1
 
 /* Macro definitions for MIB/SIB1 */
 #define SYS_FRAME_NUM 0
 #define PDSCH_MCS_INDEX 20  /* For 64QAM, valid mcs index: 17-28 in 38.214  - Table 5.1.3.1-1*/
 #define PUSCH_MCS_INDEX 10  /* For 16QAM, valid mcs index: 10-16 in 38.214  - Table 5.1.3.1-1*/
 
+/*VALID Tunnel ID*/
+#define MIN_TEID 1   /*[Spec 29.281,Sec 5.1]: All Zero TEIDs are never assigned for setting up GTP-U Tunnel*/
+#define MAX_TEID 10 /*[Spec 29.281]: Max limit is not mentioned but as per GTP-U Header Format, TEID occupies 4 octets */
 typedef enum
 {
    GNBDU,
@@ -491,6 +496,12 @@ typedef enum
    PUSCH_MAPPING_TYPE_B,
 }puschMappingType;
 
+typedef enum
+{
+   PRB,
+   DRB,
+   RRC_CONNECTED_USERS
+}ResourceType;
 
 typedef struct f1RrcVersion
 {
@@ -595,14 +606,14 @@ typedef struct f1SulInfo
 typedef struct f1FreqBand
 {
    uint16_t   nrFreqBand;
-   uint16_t   sulBand[MAXNRCELLBANDS];
+   uint16_t   sulBand[MAX_NRCELL_BANDS];
 }F1FreqBand;
 
 typedef struct f1NrFreqInfo
 {
    uint32_t        nrArfcn;
    F1SulInfo  sulInfo;
-   F1FreqBand freqBand[MAXNRCELLBANDS];
+   F1FreqBand freqBand[MAX_NRCELL_BANDS];
 }F1NrFreqInfo;
 
 typedef struct f1NrFddInfo
@@ -651,7 +662,7 @@ typedef struct f1EutraModeInfo
 typedef struct f1Snsaai
 {
    uint8_t   sst;
-   uint32_t  sd;
+   uint8_t   sd[SD_SIZE];
 }F1Snsaai;
 
 typedef struct epIpAddr
@@ -665,16 +676,40 @@ typedef struct epIpAddrPort
    char   port[2];
 }EpIpAddrPort;
 
+typedef struct policyMemberList
+{
+   Plmn   plmn;
+   F1Snsaai snsaai;   
+}PolicyMemberList;
+
+typedef struct rrmPolicyRatio
+{
+   uint8_t policyMaxRatio;
+   uint8_t policyMinRatio;
+   uint8_t policyDedicatedRatio;
+}RrmPolicyRatio;
+
+typedef struct rrmPolicy
+{
+   bool present;
+   ResourceType     rsrcType;
+   PolicyMemberList memberList;
+   RrmPolicyRatio   rrmPolicyRatio;
+}RrmPolicy;
+
 typedef struct f1TaiSliceSuppLst
 {
    bool       pres;
-   F1Snsaai   snssai[MAX_NUM_OF_SLICE_ITEMS];   
+   uint8_t    numSupportedSlices;
+   F1Snsaai   *snssai[MAX_NUM_OF_SLICE_ITEMS];   
 }F1TaiSliceSuppLst;
 
 typedef struct f1SrvdPlmn
 {
-   Plmn              plmn;
-   F1TaiSliceSuppLst   taiSliceSuppLst;
+   Plmn   plmn;
+   Plmn   extPlmn;    /* Extended available PLMN list */
+   F1TaiSliceSuppLst taiSliceSuppLst;
+   RrmPolicy  rrmPolicy;
 }F1SrvdPlmn;
 
 typedef struct f1BrdcstPlmnInfo
@@ -690,8 +725,7 @@ typedef struct f1CellInfo
 {
    NrEcgi   nrCgi;                   /* Cell global Identity */
    uint32_t nrPci;                   /* Physical Cell Identity */
-   Plmn   plmn[MAX_PLMN];     /* Available PLMN list */
-   Plmn   extPlmn[MAX_PLMN];  /* Extended available PLMN list */
+   F1SrvdPlmn srvdPlmn[MAX_PLMN];
 }F1CellInfo;
 
 typedef struct f1DuCellInfo
@@ -703,7 +737,7 @@ typedef struct f1DuCellInfo
    uint8_t            measTimeCfg;  /* Measurement timing configuration */
    F1CellDir          cellDir;      /* Cell Direction */
    F1CellType         cellType;     /* Cell Type */
-   F1BrdcstPlmnInfo   brdcstPlmnInfo[MAXBPLMNNRMINUS1]; /* Broadcast PLMN Identity Info List */
+   F1BrdcstPlmnInfo   brdcstPlmnInfo[MAX_BPLMN_NRCELL_MINUS_1]; /* Broadcast PLMN Identity Info List */
 }F1DuCellInfo;
 
 typedef struct f1DuSysInfo