Optional parameters filling in Du to CU RRC Container
[o-du/l2.git] / src / du_app / du_cfg.h
index 395c1ce..53f8352 100644 (file)
 /* MACROS */
 #define DU_INST 0
 #define DU_ID 1
-#define DU_IP_V4_ADDR "10.0.2.20"
+#define DU_IP_V4_ADDR "192.168.130.81"
 #define CU_IP_V4_ADDR "10.0.2.25"
-#define RIC_IP_V4_ADDR "10.0.2.30"
+#define RIC_IP_V4_ADDR "192.168.130.80"
 #define DU_PORT 38472
 #define CU_PORT 38472
-#define RIC_PORT 38482
+#define RIC_PORT 36422
 #define DU_EGTP_PORT  39001
 #define CU_EGTP_PORT  39002
 #define NR_PCI 1
 #define NR_CELL_ID 1
 #define DU_NAME "ORAN_OAM_DU"
 #define CELL_TYPE SMALL
-#define DUPLEX_MODE DUP_MODE_TDD
+#define DUPLEX_MODE DUP_MODE_FDD
 #define DU_TAC 1
 #define PLMN_MCC0 3
 #define PLMN_MCC1 1
 #define NR_ARFCN  2079427
 #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 0
+#define SSB_PBCH_PWR -5
 #define BCH_PAYLOAD MAC_GEN_FULL_PBCH_PAYLD
-#define SUBCARRIER_SPACING 3
-#define PRB_OFFSET 0
-#define BETA_PSS BETA_PSS_0DB
-#define SSB_PERIODICITTY SSB_PRDCTY_MS_20
-#define SSB_SUBCARRIER_OFFSET 0
+#define TOTAL_PRB_BW 106
+#define SUBCARRIER_SPACING 0
+#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 5
+#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 UL_P_MAX  23
+#define BANDWIDTH 20
 
+/* MACRO defines for PRACH Configuration */
+#define PRACH_CONFIG_IDX   105
+#define PRACH_FREQ_START   0
 #define PRACH_SEQ_LEN SHORT_SEQUENCE
-#define PRACH_SUBCARRIER_SPACING 3
-#define PRACH_RESTRICTED_SET_CFG UNRESTRICTED
+#define PRACH_SUBCARRIER_SPACING 1
+#define PRACH_RESTRICTED_SET_CFG 0
 #define NUM_PRACH_FDM 1
-#define ROOT_SEQ_IDX 0
+#define ROOT_SEQ_IDX 24
 #define NUM_ROOT_SEQ 1
-#define ZERO_CORRELATION_ZONE_CFG 2
-#define NUM_UNUSED_ROOT_SEQ 1
+#define ZERO_CORRELATION_ZONE_CFG 6
+#define NUM_UNUSED_ROOT_SEQ 0
 #define UNUSED_ROOT_SEQ 1
-#define SSB_PER_RACH 3
+#define SSB_PER_RACH 1
 #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
 #define RSS_MEASUREMENT_UNIT DONT_REPORT_RSSI
+#define RA_CONT_RES_TIMER 64
+#define RA_RSP_WINDOW 180
+#define PRACH_RESTRICTED_SET 0 /* Unrestricted */
+
+
+/* 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_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 PDCCH_CTRL_RSRC_SET_ONE_ID  1
+#define PDCCH_CTRL_RSRC_SET_ONE_DURATION 2  /* Duration for control resource set id i */
+#define PDCCH_CTRL_RSRC_SET_ONE_PRECOD_GRANULARITY 1   /* Precoded granularity */
+#define PDCCH_SRCH_SPC_TWO_ID 2
+#define PDCCH_SRCH_SPC_TWO_AGG_LVL1_CANDIDATE 7   /* Num of candidate at aggregation level 1 */
+#define PDCCH_SRCH_SPC_TWO_AGG_LVL2_CANDIDATE 7   /* Num of candidate at aggregation level 2 */
+#define PDCCH_SRCH_SPC_TWO_AGG_LVL4_CANDIDATE 4   /* Num of candidate at aggregation level 4 */
+#define PDCCH_SRCH_SPC_TWO_AGG_LVL8_CANDIDATE 2   /* Num of candidate at aggregation level 8 */
+#define PDCCH_SRCH_SPC_TWO_AGG_LVL16_CANDIDATE 1  /* Num of candidate at aggregation level 16 */
+#define PDCCH_SRCH_SPC_TWO_UE_SPEC_DCI_FORMAT  0  /* format 0-0 and 1-0 */
+
+
+#define SIB1_VALUE_TAG 10
+
+/* MACRCO Ddefine for PDSCH Configuration */
+#define PDSCH_K0  0
+#define PDSCH_START_SYMBOL  2
+#define PDSCH_LENGTH_SYMBOL 12
+#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 PUSCH_MSG3_DELTA_PREAMBLE 0
+#define PUSCH_P0_NOMINAL_WITH_GRANT -70
+#define PUSCH_TRANSFORM_PRECODER    1      /* 1: Disabled */
+#define PUSCH_MAX_MIMO_LAYERS       1
+#define PUSCH_PROCESS_TYPE2_ENABLED false
+
+/* Macro define for PUCCH Configuration */
+#define PUCCH_RSRC_COMMON  0
+#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 DU_PROC  0
 #define DU_INST 0
 #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 DU_MAX_CELLS       1      /* Max num of cells served by gNB-DU */
+#define DU_MAX_UE          1      /* Maximum number of UE Ids */
 #define MAX_PLMN           6        /* Max num of broadcast PLMN ids */
 #define MAXNRARFCN         3279165  /* Maximum values of NRAFCN */
 #define MAXNRCELLBANDS     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 MAXNUMOFSIBTYPES   32       /* Maximum number of SIB types */
-#define MAX_UEID           512      /* Maximum number of UE Ids */
 #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 MAX_NUM_OF_UE_ID       65536    /* Max num of UEs served by DU */
 #define DU_RANAC 1
 #define CELL_IDENTITY 32
 
+/* Macro definitions for DUtoCuRrcContainer */
+#define CELL_GRP_ID 1
+#define SCH_REQ_ID  0
+#define SR_PROHIBIT_TMR 5
+#define SR_TRANS_MAX 2
+#define PERIODIC_BSR_TMR 2
+#define RETX_BSR_TMR     5
+#define TAG_ID 0
+#define TIME_ALIGNMENT_TMR 7
+#define PHR_PERIODIC_TMR 7
+#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 MAC_LC_PRIORITY 1
+#define PRIORTISIED_BIT_RATE 15
+#define BUCKET_SIZE_DURATION 5
+#define LC_GRP 0
+#define P_NR_FR1 0
+#define PDSCH_HARQ_ACK_CODEBOOK 1
+#define SERV_CELL_IDX 0
+#define RLM_SYNC_OUT_SYNC_THRESHOLD 0
+#define ACTIVE_DL_BWP_ID 0
+#define ACTIVE_UL_BWP_ID 0
+#define SCRAMBLING_ID  NR_PCI
+#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
@@ -319,6 +425,19 @@ typedef enum
    PERMIT_HIGH_PRIOR_SESSION_AND_MOBILE_TERM_SERVICE
 }F1UacStandardAction;
 
+typedef enum
+{
+   PDSCH_MAPPING_TYPE_A,
+   PDSCH_MAPPING_TYPE_B,
+}pdschMappingType;
+
+typedef enum
+{
+   PUSCH_MAPPING_TYPE_A,
+   PUSCH_MAPPING_TYPE_B,
+}puschMappingType;
+
+
 typedef struct f1RrcVersion
 {
    char    rrcVer[30];     /* Latest RRC Version */
@@ -516,7 +635,7 @@ typedef struct f1BrdcstPlmnInfo
 typedef struct f1CellInfo
 {
    NrEcgi   nrCgi;                   /* Cell global Identity */
-   uint32_t      nrPci;                   /* Physical Cell Identity */
+   uint32_t nrPci;                   /* Physical Cell Identity */
    Plmn   plmn[MAX_PLMN];     /* Available PLMN list */
    Plmn   extPlmn[MAX_PLMN];  /* Extended available PLMN list */
 }F1CellInfo;
@@ -524,10 +643,10 @@ typedef struct f1CellInfo
 typedef struct f1DuCellInfo
 {
    F1CellInfo         cellInfo;     /* cell info */
-   uint16_t                tac;          /* tracking area code */
-   uint16_t                epsTac;       /* Configured EPS TAC */
+   uint16_t           tac;          /* tracking area code */
+   uint16_t           epsTac;       /* Configured EPS TAC */
    NrModeInfo         f1Mode;       /* NR mode info : FDD/TDD */
-   uint8_t                 measTimeCfg;  /* Measurement timing configuration */
+   uint8_t            measTimeCfg;  /* Measurement timing configuration */
    F1CellDir          cellDir;      /* Cell Direction */
    F1CellType         cellType;     /* Cell Type */
    F1BrdcstPlmnInfo   brdcstPlmnInfo[MAXBPLMNNRMINUS1]; /* Broadcast PLMN Identity Info List */
@@ -536,7 +655,9 @@ typedef struct f1DuCellInfo
 typedef struct f1DuSysInfo
 {
    uint8_t   *mibMsg;   /* MIB message */
+   uint16_t  mibLen;
    uint8_t   *sib1Msg;  /* SIB1 message */
+   uint16_t  sib1Len;
 }F1DuSysInfo;
 
 typedef struct f1CuSysInfo
@@ -727,7 +848,7 @@ typedef struct f1GnbDuCfgUpd
   F1DuSrvdCellToDel   srvdCellLstMod[DU_MAX_CELLS];      /* Served cell list to be modified */
   NrEcgi              srvdCellLstDel[DU_MAX_CELLS];      /* Served cell list to be deleted */
   F1CellStatus        cellStatus[DU_MAX_CELLS];          /* Cell status */
-  F1DedSIDelUE        ueLst[MAX_UEID];                     /* Ue list that requires dedicated SI delivery */
+  F1DedSIDelUE        ueLst[DU_MAX_UE];                     /* Ue list that requires dedicated SI delivery */
   uint32_t            gnbDuId;
   F1TnlAssocToRmv     gnbDuTnlAssocRmv[MAX_TNL_ASSOC];  /* TNL Assoc list to remove */ 
 }F1GnbDuCfgUpd;
@@ -860,14 +981,14 @@ typedef struct f1EgtpParams
 
 typedef struct schedulerCfg
 {
-   uint8_t         numTxAntPorts;    /*!< Number of Tx antenna ports */
-   uint8_t         ulSchdType;     /*!< Indicates which UL scheduler to use, range
-                               * is 0..(number of schedulers - 1) */
-   uint8_t         dlSchdType;     /*!< Indicates which DL scheduler to use, range
-                               * is 0..(number of schedulers - 1) */
-   uint8_t         numCells;       /*!< Max number of cells */
-   uint8_t         maxUlUePerTti;  /*!< Max number of UE in UL per TTI */
-   uint8_t         maxDlUePerTti;  /*!< Max number of UE in DL per TTI */
+   uint8_t   numTxAntPorts;    /*!< Number of Tx antenna ports */
+   uint8_t   ulSchdType;     /*!< Indicates which UL scheduler to use, range
+                         * is 0..(number of schedulers - 1) */
+   uint8_t   dlSchdType;     /*!< Indicates which DL scheduler to use, range
+                         * is 0..(number of schedulers - 1) */
+   uint8_t   numCells;       /*!< Max number of cells */
+   uint8_t   maxUlUePerTti;  /*!< Max number of UE in UL per TTI */
+   uint8_t   maxDlUePerTti;  /*!< Max number of UE in DL per TTI */
 }SchedulerCfg;
 
 typedef struct mibParams
@@ -882,6 +1003,149 @@ typedef struct mibParams
        long    intraFreqReselection;
 }MibParams;
 
+typedef struct siSchedInfo
+{
+   long     winLen;         /* SI Window Length */
+   long     broadcastSta;   /* Broadcast status */
+   long     preiodicity;    /* si periodicity */
+   long     sibType;
+   long     sibValTag;      /* Value tag */
+}SiSchedInfo;
+
+typedef struct pdcchCfgCommon
+{
+   uint8_t  present;
+   long     ctrlRsrcSetZero;  /* Control resource set zero */
+   long     searchSpcZero;    /* Search space zero */
+   long     searchSpcId;      /* Search space id */
+   long     ctrlRsrcSetId;    /* Control resource set id */
+   uint8_t  monitorSlotPrdAndOffPresent;
+   long     monitorSlotPrdAndOff;     /* Monitoring slot periodicity and offset */
+   uint8_t  monitorSymbolsInSlot[2];  /* Monitoring symbols within slot */
+   long     numCandAggLvl1;        /* Number of candiates at aggregation level 1 */
+   long     numCandAggLvl2;        /* Number of candiates at aggregation level 2 */
+   long     numCandAggLvl4;        /* Number of candiates at aggregation level 4 */
+   long     numCandAggLvl8;        /* Number of candiates at aggregation level 8 */
+   long     numCandAggLvl16;       /* Number of candiates at aggregation level 16 */
+   uint8_t  searchSpcType;        /*  Search Space type */
+   uint8_t  commSrchSpcDciFrmt;    /* DCI format of common search space type */
+   long     searchSpcSib1;         /* Id of serch space for SIB1 */
+   long     pagingSearchSpc;       /* Id of search space for paging */
+   long     raSearchSpc;           /* Id of search space for Random Access proc */
+}PdcchCfgCommon;
+
+typedef struct pdschCfgCommon
+{
+   uint8_t  present;
+   long     k0;
+   long     mapType;              /* Mapping Type */
+       uint16_t sliv;  
+}PdschCfgCommon;
+
+typedef struct bcchCfg
+{
+   long   modPrdCoeff;          /* Modification period co-efficient */
+}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 */
+}PcchCfg;
+
+typedef struct scsSpecCarrier
+{
+    long   scsOffset;    /* Offset to point A considering subcarrier spacing */
+    long   scs;          /* subcarrier spacing */
+    long   scsBw;        /* Carrier bandwidth considering subcarrier spacing */
+
+}ScsSpecCarrier;
+
+typedef struct dlCfgCommon
+{
+   long   freqBandInd;  /* Downlink frequency band indicator */
+   long   offsetToPointA;       /* DL ofset to point A */
+   long   locAndBw;     /* Frequency location and bandwidth */
+   ScsSpecCarrier   dlScsCarrier;  /* SCS Specific carrier */
+   PdcchCfgCommon   pdcchCfg;
+   PdschCfgCommon   pdschCfg;
+   BcchCfg          bcchCfg;
+   PcchCfg          pcchCfg;
+}DlCfgCommon;
+
+typedef struct rachCfgCommon
+{
+   uint8_t present;
+   long   prachCfgIdx;       /* PRACH configuration index */
+   long   msg1Fdm;           /* Num of PRACH transmission occassions */
+   long   msg1FreqStart;     /* Offset of lowest msg1 transmission occassion */
+   long   zeroCorrZoneCfg;   /* Zero correlation zone configuration */
+   long   preambleRcvdTgtPwr; /* Traget power level */
+   long   preambleTransMax;  /* Max num of preamble transmission */
+   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   contResTimer;      /* Contention resolution timer */
+   long   rsrpThreshSsb;
+   uint8_t rootSeqIdxPresent;
+   long   rootSeqIdx;        /* PRACH root sequence index */
+   long   msg1Scs;           /* Msg1 subcarrier spacing */
+   long   restrictedSetCfg;  /* Restricted set configuration */
+}RachCfgCommon;
+
+typedef struct  puschCfgCommon
+{
+   uint8_t  present;
+   long     k2;
+   long     mapType;
+       uint16_t sliv;
+   long     msg3DeltaPreamble;
+   long     p0NominalWithGrant;
+}PuschCfgCommon;
+
+typedef struct pucchCfgCommon
+{
+   uint8_t present;
+   long   rsrcComm;
+   long   grpHop;
+   long   p0Nominal;
+}PucchCfgCommon;
+
+typedef struct ulCfgCommon
+{
+   long   pMax;         /* Max UL transmission power that UE applies */
+   long   locAndBw;     /* Frequency location and bandwidth */
+   ScsSpecCarrier   ulScsCarrier; /* SCS Specific carrier */
+   RachCfgCommon    rachCfg;
+   PuschCfgCommon   puschCfg;
+   PucchCfgCommon   pucchCfg;
+   long   timeAlignTimerComm;
+}UlCfgCommon;
+
+typedef struct tddUlDlCfgCommon
+{
+   long   refScs;     /* Reference subcarrier spacing */
+   long   txPrd;      /* Transmission periodicity */
+   long   numDlSlots;
+   long   numDlSymbols;
+   long   numUlSlots;
+   long   numUlSymbols;
+}TddUlDlCfgCommon;
+
+typedef struct srvCellCfgCommSib
+{ 
+   DlCfgCommon        dlCfg;
+   UlCfgCommon        ulCfg;
+   uint8_t            ssbPosInBurst;
+   long               ssbPrdServingCell;
+   TddUlDlCfgCommon   tddCfg;
+   long               ssPbchBlockPwr;
+}SrvCellCfgCommSib;
+
 typedef struct sib1Params
 {
        Plmn    plmn;
@@ -889,6 +1153,10 @@ typedef struct sib1Params
        long      ranac;
        uint8_t   cellIdentity;
        long      cellResvdForOpUse;
+   long      connEstFailCnt;
+   long      connEstFailOffValidity;
+   SiSchedInfo           siSchedInfo;
+   SrvCellCfgCommSib     srvCellCfgCommSib;
 }Sib1Params;
 
 typedef struct duCfgParams
@@ -912,6 +1180,7 @@ S16 readClCfg();
 S16 readCfg();
 S16 duReadCfg(); 
 S16 bitStringToInt(BIT_STRING_t *bitString, uint16_t *val);
+uint16_t calcSliv(uint8_t startSymbol, uint8_t lengthSymbol);
 
 #endif /* __DU_CONFIG_H__ */