#define GNB_ID 1 /* As per 38.423,Sec 9.2.2.1, gnbId range b/w 0 to 4294967295 */
#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 F1_SCTP_PORT 38472 /* As per the spec 38.472, the registered port number for F1AP is 38472 */
-#define E2_SCTP_PORT 36421
-#endif
-
-#define F1_EGTP_PORT 2152 /* As per the spec 29.281, the registered port number for GTP-U is 2152 */
#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_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_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_MCC2 1
-#define PLMN_MNC0 4
-#define PLMN_MNC1 8
-#define PLMN_MNC2 0
#define PLMN_SIZE 3
-/* Spec 38.104 Table 5.4.2.3-1:Applicable NR-ARFCN per operating band in FR1 */
-#define SUL_ARFCN 100
-#define SUL_BAND 2
-
-#define TIME_CFG 4
#define MEAS_TIMING_ARFCN 630432
#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 BCH_PAYLOAD PHY_GEN_TIMING_PBCH_BIT
-#define NORMAL_CYCLIC_PREFIX 0
-#define OFFSET_TO_POINT_A 24 /* PRB Offset to Point A */
-#define BETA_PSS BETA_PSS_0DB
-#define SSB_PERIODICITY 20
-#define SSB_SUBCARRIER_OFFSET 0
-#define SSB_FREQUENCY 3000000 /*ssbFrequency in kHz*/
#define SSB_MULT_CARRIER_BAND FALSE
#define MULT_CELL_CARRIER FALSE
-#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 DMRS_TYPE_A_POS 2
#define NUM_SYMBOLS_PER_SLOT 14 /* Number of symbols within a slot */
#define CORESET0_END_PRB 48
#define CORESET1_NUM_PRB 24
/* MACRO defines for PRACH Configuration */
-#ifndef NR_TDD
-#define PRACH_CONFIG_IDX 16
-#else
-#define PRACH_CONFIG_IDX 88
-#endif
#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 NR_SCS
-#define PRACH_RESTRICTED_SET_CFG 0
-#define NUM_PRACH_FDM 1
-#define ROOT_SEQ_IDX 0
-#define NUM_ROOT_SEQ 1
-#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
-
-#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 10
/* MACRCO Ddefine for PDCCH Configuration */
-#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 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 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_UE_SPEC_DCI_FORMAT 0 /* format 0-0 and 1-0 */
#define PDCCH_SYMBOL_WITHIN_SLOT 128 /* Symbol within Slot Value */
-
-#define SIB1_VALUE_TAG 10
-
/* MACRO Ddefine for PDSCH Configuration */
#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 PUSCH_START_SYMBOL 3
#define PUSCH_LENGTH_SYMBOL 11
-#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_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 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
#define SRS_RSET_ID 1
#define MAX_NUM_OF_UE_ID 65536 /* Max num of UEs served by DU */
#define MAXNUMOFUACPLMN 12 /* Maximum number of PLMN ids*/
#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 0
-#define DU_RANAC 1
#define CELL_IDENTITY 1
/* Macro definitions for DUtoCuRrcContainer */
#define MAX_RATIO 30
#define MIN_RATIO 20
#define DEDICATED_RATIO 10
-#define NUM_OF_SUPPORTED_SLICE 2
#ifdef NR_DRX
/* Macros for Drx configuration */
char port[2];
}EpIpAddrPort;
-typedef struct f1TaiSliceSuppLst
-{
- uint8_t numSupportedSlices;
- Snssai **snssai;
-}F1TaiSliceSuppLst;
-
typedef struct f1SrvdPlmn
{
Plmn plmn;
Plmn extPlmn; /* Extended available PLMN list */
- F1TaiSliceSuppLst taiSliceSuppLst;
+ SupportedSliceList taiSliceSuppLst;
}F1SrvdPlmn;
typedef struct f1BrdcstPlmnInfo
SrvCellCfgCommSib srvCellCfgCommSib;
}Sib1Params;
+typedef struct threadInfo
+{
+ SSTskId duAppSTskId;
+ uint8_t duAppCoreId;
+ SSTskId egtpSTskId;
+ uint8_t egtpCoreId;
+ SSTskId sctpSTskId;
+ uint8_t sctpCoreId;
+ SSTskId rlcUlSTskId;
+ uint8_t rlcUlCoreId;
+ SSTskId rlcMacSTskId;
+ uint8_t rlcMacCoreId;
+ SSTskId schSTskId;
+ uint8_t schCoreId;
+ SSTskId lwrMacSTskId;
+ uint8_t lwrMacCoreId;
+}ThreadInfo;
+
typedef struct duCfgParams
-{
- SctpParams sctpParams; /* SCTP Params */
- F1EgtpParams egtpParams; /* EGTP Params */
- uint32_t maxUe;
+{
uint32_t duId;
char *duName;
- SchedulerCfg schedCfg;
+ uint16_t maxNumDrb;
+ ThreadInfo threadInfo;
+ SctpParams sctpParams; /* SCTP Params */
+ F1EgtpParams egtpParams; /* EGTP Params */
F1DuSrvdCellInfo srvdCellLst[MAX_NUM_CELL]; /* Serving cell list *///TODO: this must be removed eventually
- F1RrcVersion rrcVersion; /* RRC version */
MacCellCfg macCellCfg; /* MAC cell configuration */
MibParams mibParams; /* MIB Params */
Sib1Params sib1Params; /* SIB1 Params */
}RrmPolicyList;
#endif
-DuCfgParams duCfgParam;
+extern DuCfgParams duCfgParam;
/*function declarations */
uint8_t readClCfg();
uint8_t readCfg();
uint8_t duReadCfg();
+void printDuConfig();
+
+uint8_t fillDuSrvdCellSysInfo(F1DuSysInfo *sysInfo);
+
uint16_t calcSliv(uint8_t startSymbol, uint8_t lengthSymbol);
uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, MacSliceCfgReq *tempSliceCfg);