[Epic-ID: ODUHIGH-406][Task-ID: ODUHIGH-449] Fixes releate to Cell Id
[o-du/l2.git] / src / du_app / du_cfg.h
index 8e11684..ff91158 100644 (file)
 #ifndef __DU_CONFIG_H_
 #define __DU_CONFIG_H__
 
+#ifdef O1_ENABLE
+#include "CmInterface.h"
+#endif
+
 /* MACROS */
 #define DU_INST 0
 #define DU_ID 1
+
+#ifndef O1_ENABLE
 #define DU_IP_V4_ADDR "192.168.130.81"
 #define CU_IP_V4_ADDR "192.168.130.82"
 #define RIC_IP_V4_ADDR "192.168.130.80"
 #define DU_PORT 38472
 #define CU_PORT 38472
-#define RIC_PORT 36422         /* using X2 port since E2 port not defined  */
+#define RIC_PORT 36421
+#endif
+
 #define DU_EGTP_PORT  39001
-#define CU_EGTP_PORT  39002
+#define CU_EGTP_PORT  39003
 #define NR_PCI 1
 #define NR_CELL_ID 1
+
 #define DU_NAME "ORAN_OAM_DU"
 #define CELL_TYPE SMALL
+
+//TODO: while testing for TDD, Mu1 and 100 MHz, this flag must be enabled
+#ifdef NR_TDD
+#define DUPLEX_MODE DUP_MODE_TDD
+#define NR_NUMEROLOGY 1
+#define NR_DL_ARFCN 623400
+#define NR_UL_ARFCN 623400
+#define NR_FREQ_BAND 78
+#define NR_SCS SCS_30KHZ
+#define NR_BANDWIDTH BANDWIDTH_100MHZ
+#else
 #define DUPLEX_MODE DUP_MODE_FDD
+#define NR_NUMEROLOGY 0
+#define NR_DL_ARFCN 428000
+#define NR_UL_ARFCN 390000
+#define NR_FREQ_BAND 1
+#define NR_SCS SCS_15KHZ
+#define NR_BANDWIDTH BANDWIDTH_20MHZ
+#endif
+
+#define TRANS_ID 1
 #define DU_TAC 1
 #define PLMN_MCC0 3
 #define PLMN_MCC1 1
 #define PLMN_MNC1 8
 #define PLMN_MNC2 0
 #define PLMN_SIZE 3
-#define NR_DL_ARFCN 385627
-#define NR_UL_ARFCN 386687
+
+/* Spec 38.104 Table 5.4.2.3-1:Applicable NR-ARFCN per operating band in FR1 */
 #define SUL_ARFCN 100
-#define NR_FREQ_BAND 257
-#define NR_FREQ_BAND_IND 78
 #define SUL_BAND 2
+
 #define TIME_CFG 0
 #define CARRIER_IDX 1
 #define NUM_TX_ANT 2
 #define NUM_RX_ANT 2
 #define FREQ_SHIFT_7P5KHZ FALSE
-#define SSB_PBCH_PWR -5
-#define BCH_PAYLOAD MAC_GEN_FULL_PBCH_PAYLD
-#define TOTAL_PRB_BW 106
-#define SUBCARRIER_SPACING 0
+#define SSB_PBCH_PWR 0
+#define BCH_PAYLOAD PHY_GEN_TIMING_PBCH_BIT
 #define NORMAL_CYCLIC_PREFIX 0
-#define SCS_CARRIER_BANDWIDTH 273         /* Subcarrier spacing- carrier bandwidth */
 #define OFFSET_TO_POINT_A 24                     /* PRB Offset to Point A */
 #define BETA_PSS BETA_PSS_0DB  
-#define SSB_PERIODICITY_5MS   5
-#define SSB_PERIODICITY_10MS  10
-#define SSB_PERIODICITY_20MS  20
-#define SSB_PERIODICITY_40MS  40
-#define SSB_PERIODICITY_80MS  80
-#define SSB_PERIODICITY_160MS 160
+#define SSB_PERIODICITY 20
 #define SSB_SUBCARRIER_OFFSET 0               
 #define SSB_MULT_CARRIER_BAND FALSE
 #define MULT_CELL_CARRIER FALSE
-#define FREQ_LOC_BW  1099              /* DL frequency location and bandwidth */
+#define FREQ_LOC_BW  28875             /* DL frequency location and bandwidth. Spec 38.508 Table 4.3.1.0B-1*/
 #define UL_P_MAX  23
-#define BANDWIDTH 20
 #define DMRS_TYPE_A_POS 2
 #define NUM_SYMBOLS_PER_SLOT 14       /* Number of symbols within a slot */
 #define CORESET0_END_PRB   48
 
 /* MACRO defines for PRACH Configuration */
 #define PRACH_CONFIG_IDX   88
-#define PRACH_FREQ_START   0
+#define PRACH_MAX_PRB  24  /* As per (spec 38.211-Table 6.3.3.2-1), max allocated PRBs can go upto 24 */
+#define PRACH_FREQ_START  (MAX_NUM_RB - PRACH_MAX_PRB) /* In order to allocate PRACH from end of the resource grid */
 #define PRACH_SEQ_LEN SHORT_SEQUENCE
-#define PRACH_SUBCARRIER_SPACING 1
+#define PRACH_SUBCARRIER_SPACING NR_SCS
 #define PRACH_RESTRICTED_SET_CFG 0
 #define NUM_PRACH_FDM 1
-#define ROOT_SEQ_IDX 24
+#define ROOT_SEQ_IDX 0
 #define NUM_ROOT_SEQ 1
-#define ZERO_CORRELATION_ZONE_CFG 6
+#define ZERO_CORRELATION_ZONE_CFG 4
 #define NUM_UNUSED_ROOT_SEQ 0
 #define UNUSED_ROOT_SEQ 1
 #define SSB_PER_RACH 1
+#define CB_PREAMBLE_PER_SSB 8
 #define PRACH_MULT_CARRIER_BAND FALSE
 #define PRACH_PREAMBLE_RCVD_TGT_PWR  -74   
 #define NUM_RA_PREAMBLE  63
 #define RSRP_THRESHOLD_SSB   31
-#define TDD_PERIODICITY TX_PRDCTY_MS_2P5
+
+#ifdef NR_TDD
+#define TDD_PERIODICITY TX_PRDCTY_MS_5 
+#endif
+
 #define RSS_MEASUREMENT_UNIT DONT_REPORT_RSSI
 #define RA_CONT_RES_TIMER 64
-#define RA_RSP_WINDOW 180
+#define RA_RSP_WINDOW 10
 #define PRACH_RESTRICTED_SET 0 /* Unrestricted */
 #define ROOT_SEQ_LEN 139
 
 /* MACRCO Ddefine for PDCCH Configuration */
-#define PDCCH_CTRL_RSRC_SET_ZERO   13   /* Control resouce set zero */
-#define PDCCH_SEARCH_SPACE_ZERO    0    /* Search space zero */
 #define PDCCH_SEARCH_SPACE_ID      1    /* Common search space id */
 #define PDCCH_CTRL_RSRC_SET_ID     0    /* Control resource set id */
-#define PDCCH_SEARCH_SPACE_ID_SIB1 0    /* Search space id for sib1 */
+#define PDCCH_SEARCH_SPACE_ID_SIB1 1    /* Search space id for sib1 */
 #define PDCCH_SEARCH_SPACE_ID_PAGING 1  /* Search space id for paging */
 #define PDCCH_SEARCH_SPACE_ID_RA   1    /* Search spaced id for random access */
 #define PDCCH_SERACH_SPACE_DCI_FORMAT 0
 #define SIB1_VALUE_TAG 10
 
 /* MACRO Ddefine for PDSCH Configuration */
-#define PDSCH_K0  0
-#define PDSCH_START_SYMBOL  2
-#define PDSCH_LENGTH_SYMBOL 12
+#define NUM_TIME_DOM_RSRC_ALLOC 2
+#define PDSCH_K0_CFG1  0
+#define PDSCH_K0_CFG2  1
+#define PDSCH_START_SYMBOL  3
+#define PDSCH_LENGTH_SYMBOL 11
 #define PDSCH_RES_ALLOC_TYPE       1          /* Resource allocation type */
 #define PDSCH_MAX_CODEWORD_SCH_BY_DCI 0       /* Max num of codewords scheduled by DCI */
 #define PDSCH_RBG_SIZE   0                    /* 0: config1 */
 #define PDSCH_NUM_HARQ_PROC 5
 
 /* MACRO Define for PUSCH Configuration */
-#define PUSCH_K2  3
-#define PUSCH_START_SYMBOL  0
-#define PUSCH_LENGTH_SYMBOL 14
+#define MAX_UL_ALLOC 16
+#define PUSCH_K2_CFG1  4
+#define PUSCH_K2_CFG2  5
+#define PUSCH_START_SYMBOL  3
+#define PUSCH_LENGTH_SYMBOL 11
 
 #define PUSCH_MSG3_DELTA_PREAMBLE 0
 #define PUSCH_P0_NOMINAL_WITH_GRANT -70
 
 /* Macro define for PUCCH Configuration */
 #define PUCCH_RSRC_COMMON  0
-#define PUCCH_GROUP_HOPPING 2 /* disable */
+#define PUCCH_GROUP_HOPPING 0 /* Neither sequence hopping nor group hopping */
 #define PUCCH_P0_NOMINAL   -74
 
 /* MACRO defines for TDD DL-UL Configuration */
-#define NUM_DL_SLOTS 3
-#define NUM_DL_SYMBOLS 12
-#define NUM_UL_SLOTS 1
-#define NUM_UL_SYMBOLS 0
+#define NUM_DL_SLOTS 7
+#define NUM_DL_SYMBOLS 12 
+#define NUM_UL_SLOTS 2
+#define NUM_UL_SYMBOLS 1
+#define GUARD_SLOT_IDX 7
 
 /* MACRO defines for SRC config */
 #define SRS_RSRC_ID  1
 /* Events */
 #define EVTCFG 0
 
-#ifdef EGTP_TEST
-/* Macro definitions for EGTP procedures */
-#define EGTP_LCL_TEID 1     /* EGTP local tunnel id */
-#define EGTP_REM_TEID 10    /* EGTP remote tinnel id */
-#endif
-
-
 /* Macro definitions for F1 procedures */
 #define CU_DU_NAME_LEN_MAX 30      /* Max length of CU/DU name string */
 #define MAX_F1_CONNECTIONS 65536    /* Max num of F1 connections */
-#define MAX_PLMN           6        /* Max num of broadcast PLMN ids */
+#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 IE_EXTENSION_LIST_COUNT 1
 
 /* Macro definitions for MIB/SIB1 */
 #define SYS_FRAME_NUM 0
 #define SPARE 0
-#define SSB_SC_OFFSET 8
-#define CORESET_ZERO 1
-#define SEARCH_SPACE_ZERO 8
+#define SSB_SC_OFFSET 0
 #define DU_RANAC 1
-#define CELL_IDENTITY 32
+#define CELL_IDENTITY 1
 
 /* Macro definitions for DUtoCuRrcContainer */
-#define CELL_GRP_ID 1
+#define CELL_GRP_ID 0
 #define SCH_REQ_ID  0
 #define SR_PROHIBIT_TMR 5
 #define SR_TRANS_MAX 2
 #define PHR_PROHIBHIT_TMR 0
 #define PHR_PWR_FACTOR_CHANGE 3
 #define PHR_MODE_OTHER_CG 0
-#define RLC_LCID 1 
-#define SRB_ID_1 1
-#define SN_FIELD_LEN 0
-#define T_POLL_RETRANSMIT 8 
-#define POLL_PDU 0
-#define POLL_BYTE 43
-#define MAX_RETX_THRESHOLD 5
-#define T_REASSEMBLY 8
-#define T_STATUS_PROHIBHIT 7
+#define SN_FIELD_LEN 1
+#define T_POLL_RETRANSMIT 8       /* Enum for 45ms */ 
+#define T_POLL_RETRANSMIT_VAL 45  /* Value in ms */
+#define POLL_PDU 0                /* Enum for 4 pdus */
+#define POLL_PDU_VAL 4            /* Value of poll pdu */
+#define POLL_BYTE 43              /* Enum for infinite poll bytes */
+#define POLL_BYTE_VAL -1          /* Value for infinite poll byte */
+#define MAX_RETX_THRESHOLD 5      /* Enum for 8 retransmissions */
+#define MAX_RETX_THRESHOLD_VAL 8  /* Value for 8 retransmissions */
+#define T_REASSEMBLY 8 /* enum for RE_ASM_40MS  */
+#define T_REASSEMBLY_VAL 40 /* default re assembly timer */
+#define T_STATUS_PROHIBHIT 7 /* enum for PROH_35MS */
+#define T_STATUS_PROHIBHIT_VAL 35 /* default status prohibit timer */
 #define MAC_LC_PRIORITY 1
 #define PRIORTISIED_BIT_RATE 15
 #define BUCKET_SIZE_DURATION 5
 #define DMRS_ADDITIONAL_POS  0          /* DMRS Additional poistion */
 #define RES_ALLOC_TYPE       1          /* Resource allocation type */
 
-#ifdef EGTP_TEST
-#define UE_ID 1
-#define RB_ID 1
-#define LC_ID 1
-#endif
+/* MACRO definitions for modulcation order */
+#define MOD_ORDER_QPSK  2
+#define MOD_ORDER_QAM16 4
+#define MOD_ORDER_QAM64 6
+#define MOD_ORDER_QAM256 8
+#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 MAX_NUM_DRB * MAX_NUM_UE  /*[Spec 29.281]: Max limit is not mentioned but as per GTP-U Header Format, TEID occupies 4 octets */
+
+/* Slice Ratio */
+#define MAX_RATIO        30
+#define MIN_RATIO        20
+#define DEDICATED_RATIO  10
+#define NUM_OF_SUPPORTED_SLICE  2
 
 typedef enum
 {
@@ -267,6 +302,12 @@ typedef enum
    GNBCU 
 }F1Entity;
 
+typedef enum
+{
+   SERV_CELL_TO_MODIFY,
+   SERV_CELL_TO_DELETE
+}ServCellAction;
+
 typedef enum
 {
    UNSPECIFIED,
@@ -451,7 +492,6 @@ typedef enum
    PUSCH_MAPPING_TYPE_B,
 }puschMappingType;
 
-
 typedef struct f1RrcVersion
 {
    char    rrcVer[30];     /* Latest RRC Version */
@@ -555,14 +595,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
@@ -608,12 +648,6 @@ typedef struct f1EutraModeInfo
    }mode;
 }F1EutraModeInfo;
 
-typedef struct f1Snsaai
-{
-   uint8_t   sst;
-   uint32_t  sd;
-}F1Snsaai;
-
 typedef struct epIpAddr
 {
    char transportAddr[20]; /* Transport Layer Address */
@@ -627,14 +661,15 @@ typedef struct epIpAddrPort
 
 typedef struct f1TaiSliceSuppLst
 {
-   bool       pres;
-   F1Snsaai   snssai[MAX_NUM_OF_SLICE_ITEMS];   
+   uint8_t    numSupportedSlices;
+   Snssai    **snssai;   
 }F1TaiSliceSuppLst;
 
 typedef struct f1SrvdPlmn
 {
-   Plmn              plmn;
-   F1TaiSliceSuppLst   taiSliceSuppLst;
+   Plmn   plmn;
+   Plmn   extPlmn;    /* Extended available PLMN list */
+   F1TaiSliceSuppLst taiSliceSuppLst;
 }F1SrvdPlmn;
 
 typedef struct f1BrdcstPlmnInfo
@@ -650,8 +685,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
@@ -663,7 +697,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
@@ -801,7 +835,7 @@ typedef struct f1UacAssistInfo
 }F1UacAssistInfo;
 
 /* F1 setup related structures */
-
+#if 0
 typedef struct f1SetupReq
 {
    uint32_t                transId;                       /* Uniquely identify transaction */
@@ -966,6 +1000,7 @@ typedef struct f1NwkAccessRateRed
    uint32_t          transId;        /* Uniquely identifies transaction */
    F1UacAssistInfo   uacAssistInfo;  /* UAC Assistance Information */
 }F1NwkAccessRateRed;
+#endif
 
 typedef struct f1Ipaddr
 {
@@ -1048,12 +1083,18 @@ typedef struct pdcchCfgCommon
    long     raSearchSpc;           /* Id of search space for Random Access proc */
 }PdcchCfgCommon;
 
-typedef struct pdschCfgCommon
+typedef struct pdschTimeDomainRsrcAlloc
 {
-   uint8_t  present;
    long     k0;
    long     mapType;              /* Mapping Type */
    uint16_t sliv;  
+}PdschTimeDomainRsrcAlloc;
+
+typedef struct pdschCfgCommon
+{
+   uint8_t  present;
+   uint8_t  numTimeDomRsrcAlloc;
+   PdschTimeDomainRsrcAlloc timeDomAlloc[MAX_NUM_DL_ALLOC];
 }PdschCfgCommon;
 
 typedef struct bcchCfg
@@ -1063,10 +1104,12 @@ typedef struct bcchCfg
 
 typedef struct pcchCfg
 {
-   long   dfltPagingCycle;      /* Default paging cycle */
-   long   nAndPagingFrmOffPresent;
-   long   nAndPagingFrmOff;     /* n and Paging Frame offset */
-   long   numPagingOcc;         /* Number of paging occassions in paging frame */
+   uint16_t  dfltPagingCycle;                       /* Default paging cycle */
+   uint8_t  nAndPagingFrmOffsetType;                /*Number of PagingFrames in PagingCycle defined in terms of T.*/
+   uint8_t  pageFrameOffset;                        /* Paging Frame offset */
+   uint8_t  ns;                                     /* Number of paging occassions in paging frame */
+   uint8_t  firstPDCCHMontioringType;               /* First PDCCH Monitoring Paging Occasion Presence Type*/
+   uint16_t firstPDCCHMontioringInfo[MAX_PO_PER_PF];/*Indicates the first PDCCH monitoring occasion of each PO of the PF*/
 }PcchCfg;
 
 typedef struct scsSpecCarrier
@@ -1101,8 +1144,8 @@ typedef struct rachCfgCommon
    long   pwrRampingStep;    /* Power ramping steps for PRACH */
    long   raRspWindow;       /* RA response window */
    long   numRaPreamble;     /* Total num of preamble used in random access */
-   uint8_t ssbPerRachOccPresent;
    long   numSsbPerRachOcc;  /* Numer of SSBs per RACH Occassion */
+   long   numCbPreamblePerSsb; /* Number of Contention-Based preamble per SSB */
    long   contResTimer;      /* Contention resolution timer */
    long   rsrpThreshSsb;
    uint8_t rootSeqIdxPresent;
@@ -1111,12 +1154,18 @@ typedef struct rachCfgCommon
    long   restrictedSetCfg;  /* Restricted set configuration */
 }RachCfgCommon;
 
-typedef struct  puschCfgCommon
+typedef struct puschCfgCmnTimeDomAlloc
 {
-   uint8_t  present;
    long     k2;
    long     mapType;
    uint16_t sliv;
+}PuschCfgCmnTimeDomAlloc;
+
+typedef struct  puschCfgCommon
+{
+   uint8_t  puschCfgPresent;
+   uint8_t  numTimeDomRsrcAlloc;
+   PuschCfgCmnTimeDomAlloc timeDomAllocList[MAX_UL_ALLOC];
    long     msg3DeltaPreamble;
    long     p0NominalWithGrant;
 }PuschCfgCommon;
@@ -1131,6 +1180,7 @@ typedef struct pucchCfgCommon
 
 typedef struct ulCfgCommon
 {
+   long   freqBandInd;  /* Uplink frequency band indicator */
    long   pMax;         /* Max UL transmission power that UE applies */
    long   locAndBw;     /* Frequency location and bandwidth */
    ScsSpecCarrier   ulScsCarrier; /* SCS Specific carrier */
@@ -1152,6 +1202,7 @@ typedef struct tddUlDlCfgCommon
 
 typedef struct srvCellCfgCommSib
 { 
+   long               scs;
    DlCfgCommon        dlCfg;
    UlCfgCommon        ulCfg;
    uint8_t            ssbPosInBurst;
@@ -1173,6 +1224,29 @@ typedef struct sib1Params
    SrvCellCfgCommSib     srvCellCfgCommSib;
 }Sib1Params;
 
+typedef struct policyMemberList
+{
+   Plmn plmn;
+   Snssai  snssai;
+}PolicyMemberList;
+
+typedef struct rrmPolicy
+{
+   ResourceType     rsrcType;
+   uint8_t          numMemberList;
+   PolicyMemberList **memberList;
+   uint8_t          policyMaxRatio;
+   uint8_t          policyMinRatio;
+   uint8_t          policyDedicatedRatio;
+}RrmPolicy;
+
+typedef struct copyOfRecvdSliceCfg
+{
+   RrmPolicy          **rrmPolicy;
+   uint8_t            totalRrmPolicy;
+   uint8_t            totalSliceCount;
+}CopyOfRecvdSliceCfg;
+
 typedef struct duCfgParams
 {
    SctpParams         sctpParams;                  /* SCTP Params */
@@ -1186,14 +1260,59 @@ typedef struct duCfgParams
    MacCellCfg         macCellCfg;                    /* MAC cell configuration */
    MibParams          mibParams;                  /* MIB Params */
    Sib1Params         sib1Params;                 /* SIB1 Params */
+   CopyOfRecvdSliceCfg tempSliceCfg;
 }DuCfgParams;
 
+typedef struct f1SetupMsg
+{
+   uint8_t f1MsgReqBufSize;
+   char    *f1MsgReqBuf; 
+   uint8_t f1MsgRspBufSize;
+   char    *f1MsgRspBuf;
+}F1SetupMsg;
+
+
+#ifndef O1_ENABLE
+//RRM POLICY STRUCT
+
+typedef struct rRMPolicyMemberList
+{
+   uint8_t mcc[3];
+   uint8_t mnc[3];
+   uint8_t sd[3];
+   uint8_t sst;
+}RRMPolicyMemberList;
+
+typedef enum
+{
+  PRB,
+  PRB_UL,
+  PRB_DL,
+  RRC,
+  DRB
+}RrmResourceType;
+
+typedef struct rrmPolicyList
+{
+   char id[1];
+   RrmResourceType resourceType;
+   uint8_t rRMMemberNum;
+   RRMPolicyMemberList rRMPolicyMemberList[2];
+   uint8_t rRMPolicyMaxRatio;
+   uint8_t rRMPolicyMinRatio;
+   uint8_t rRMPolicyDedicatedRatio;
+}RrmPolicyList;
+#endif
+
+DuCfgParams duCfgParam;
+
 /*function declarations */
 void FillSlotConfig();
 uint8_t readClCfg();
 uint8_t readCfg();
 uint8_t duReadCfg(); 
 uint16_t calcSliv(uint8_t startSymbol, uint8_t lengthSymbol);
+uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, CopyOfRecvdSliceCfg *tempSliceCfg);
 
 #endif /* __DU_CONFIG_H__ */