X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fcommon_def.h;h=0ed59eed5c380cf05e820a0ccaf9e14746b94769;hb=d9f7fc765d1fc24949ec5536c2a4e3296b250e5a;hp=60a8ac903785739d72ffe25b3e5e0bf65dd1eae2;hpb=ddcc8cc613851becbb4a0727b7c51db046a3998d;p=o-du%2Fl2.git diff --git a/src/cm/common_def.h b/src/cm/common_def.h index 60a8ac903..0ed59eed5 100644 --- a/src/cm/common_def.h +++ b/src/cm/common_def.h @@ -26,12 +26,12 @@ #include #include "cm_mem.h" -#include "cm_math.h" #include "envopt.h" #include "envdep.h" #include "envind.h" #include "gen.h" #include "ssi.h" +#include "cm_math.h" #include "cm5.h" #include "cm_tkns.h" #include "cm_mblk.h" @@ -43,7 +43,6 @@ #include "cm.h" #include "gen.x" /* general */ #include "ssi.x" /* system services */ -#include "cm_math.x" #include "cm_tpt.x" #include "cm_tkns.x" #include "cm_mblk.x" @@ -54,13 +53,22 @@ #include "cm_lib.x" #include "du_log.h" +#define RADIO_FRAME_DURATION 10 /* Time duration of a radio frame in ms */ /* MAX values */ -#define MAX_NUM_CELL 1 -#define MAX_NUM_UE 1 -#define MAX_NUM_LC 11 +#define MAX_NUM_CELL 2 /* Changed to 2 to support cell Id 2 even if there is only one cell in DU */ +#define MAX_NUM_MU 4 +#define MAX_NUM_UE 3 +#define MAX_NUM_UE_PER_TTI 1 +#define MAX_NUM_LC MAX_DRB_LCID + 1 /*Spec 38.331: Sec 6.4: maxLC-ID Keyword*/ +#define MAX_NUM_SRB 3 /* Max. no of Srbs */ +#define MAX_NUM_DRB 29 /* spec 38.331, maxDRB */ +#define MAX_NUM_SSB 64 /* spec 28.331, maxNrofSSBs */ +#define MAX_NUM_HARQ_PROC 16 /* spec 38.331, nrofHARQ-ProcessesForPDSCH */ +#define MAX_NUM_TB_PER_UE 2 /* spec 38.331, maxNrofCodeWordsScheduledByDCI */ /* 5G ORAN phy delay */ -#define PHY_DELTA 2 +#define PHY_DELTA_DL 1 +#define PHY_DELTA_UL 0 /* SELECTORS */ #define ODU_SELECTOR_LC 0 @@ -79,6 +87,39 @@ #define MAX_DRB_LCID 32 #define FREQ_DOM_RSRC_SIZE 6 /* i.e. 6 bytes because Size of frequency domain resource is 45 bits */ +#define PUCCH_FORMAT_0 0 +#define PUCCH_FORMAT_1 1 +#define PUCCH_FORMAT_2 2 +#define PUCCH_FORMAT_3 3 +#define PUCCH_FORMAT_4 4 + +#define DEFAULT_MCS 4 + +#define BANDWIDTH_20MHZ 20 +#define BANDWIDTH_100MHZ 100 + +/* PRB allocation as per 38.101, Section 5.3.2 */ +#define TOTAL_PRB_20MHZ_MU0 106 +#define TOTAL_PRB_100MHZ_MU1 273 +#ifdef NR_TDD +#define MAX_NUM_RB TOTAL_PRB_100MHZ_MU1 /* value for numerology 1, 100 MHz */ +#else +#define MAX_NUM_RB TOTAL_PRB_20MHZ_MU0 /* value for numerology 0, 20 MHz */ +#endif + +#define ODU_UE_THROUGHPUT_PRINT_TIME_INTERVAL 5 /* in milliseconds */ +#define ODU_SNSSAI_THROUGHPUT_PRINT_TIME_INTERVAL 60000 /* in milliseconds */ + +/*Spec 38.331 Sec 6.4: Maximum number of paging occasion per paging frame*/ +#define MAX_PO_PER_PF 4 + +#ifdef NR_TDD +#define MAX_SLOTS 20 +#else +#define MAX_SLOTS 10 +#endif + +#define MAX_SFN 1024 /* Defining macros for common utility functions */ #define ODU_GET_MSG_BUF SGetMsg @@ -106,14 +147,25 @@ #define ODU_SET_THREAD_AFFINITY SSetAffinity #define ODU_CREATE_TASK SCreateSTsk -#define GET_UE_IDX( _crnti,_ueIdx) \ +#define MAX_SYMB_PER_SLOT 14 + +/* Slice */ +#define SD_SIZE 3 + +#ifdef NR_TDD +/* Maximum slots for max periodicity and highest numerology is 320. + * However, aligning to fapi_interface.h, setting this macro to 160 */ +#define MAX_TDD_PERIODICITY_SLOTS 160 +#endif + +#define GET_UE_ID( _crnti,_ueId) \ { \ - _ueIdx = _crnti - ODU_START_CRNTI + 1; \ + _ueId = _crnti - ODU_START_CRNTI + 1; \ } -#define GET_CRNTI( _crnti,_ueIdx) \ +#define GET_CRNTI( _crnti, _ueId) \ { \ - _crnti = _ueIdx + ODU_START_CRNTI - 1; \ + _crnti = _ueId + ODU_START_CRNTI - 1; \ } /* Calculates cellIdx from cellId */ @@ -152,23 +204,23 @@ _bitPos = __builtin_ctz(_in); \ } -typedef struct slotIndInfo -{ - uint16_t cellId; - uint16_t sfn; - uint16_t slot; -}SlotIndInfo; +/* MACRO for checking CRNTI range*/ +#define CHECK_CRNTI(_crnti, _isCrntiValid) \ +{ \ + _isCrntiValid = ((_crnti >= ODU_START_CRNTI && _crnti <= ODU_END_CRNTI ) ? 1 : 0); \ +} -typedef struct PlmnIdentity -{ - uint8_t mcc[3]; - uint8_t mnc[3]; -}Plmn; +#define CHECK_LCID(_lcId, _isLcidValid) \ +{\ + _isLcidValid = ((_lcId >= SRB0_LCID && _lcId <= MAX_DRB_LCID) ? 1 : 0);\ +} typedef enum { UE_CFG_INACTIVE, + UE_CFG_INPROGRESS, UE_CREATE_COMPLETE, + UE_DELETE_COMPLETE, UE_RECFG_COMPLETE }UeCfgState; @@ -180,9 +232,119 @@ typedef enum CONFIG_DEL }ConfigType; -void freqDomRscAllocType0(uint16_t startPrb, uint16_t prbSize, uint8_t *freqDomain); +#ifdef NR_TDD +typedef enum +{ + DL_SLOT, + UL_SLOT, + FLEXI_SLOT +}SlotConfig; + +typedef enum +{ + TX_PRDCTY_MS_0P5, + TX_PRDCTY_MS_0P625, + TX_PRDCTY_MS_1, + TX_PRDCTY_MS_1P25, + TX_PRDCTY_MS_2, + TX_PRDCTY_MS_2P5, + TX_PRDCTY_MS_5, + TX_PRDCTY_MS_10 +}DlUlTxPeriodicity; +#endif + +typedef enum +{ + SCS_15KHZ, + SCS_30KHZ, + SCS_60KHZ, + SCS_120KHZ, + SCS_240KHZ +}SCS; + +typedef enum +{ + SCS_5MS, + SCS_10MS, + SCS_20MS, + SCS_40MS, + SCS_80MS, + SCS_160MS +}ScsPeriodicity; + +typedef enum +{ + CELL_UP, + CELL_DOWN +}OduCellStatus; + + +typedef enum +{ + DIR_NONE, + DIR_UL, + DIR_DL, + DIR_BOTH +}Direction; + +typedef enum +{ + SEARCH, + CREATE, + DELETE, + PRINT, + TRAVERSE_ALL +}ActionTypeLL; + +typedef struct slotTimingInfo +{ + uint16_t cellId; + uint16_t sfn; + uint16_t slot; +}SlotTimingInfo; + +typedef struct PlmnIdentity +{ + uint8_t mcc[3]; + uint8_t mnc[3]; +}Plmn; + +typedef struct snssai +{ + uint8_t sst; + uint8_t sd[SD_SIZE]; +}Snssai; + +typedef struct oduCellId +{ + uint16_t cellId; +}OduCellId; + +#ifdef NR_TDD +typedef struct tddCfg +{ + bool pres; + DlUlTxPeriodicity tddPeriod; /* DL UL Transmission periodicity */ + SlotConfig slotCfg[MAX_TDD_PERIODICITY_SLOTS][MAX_SYMB_PER_SLOT]; +}TDDCfg; +#endif + +OduCellStatus gCellStatus; +uint64_t gSlotCount; +uint64_t gDlDataRcvdCnt; /* Number of DL data received at EGTP */ + +void fillCoresetFeqDomAllocMap(uint16_t startPrb, uint16_t prbSize, uint8_t *freqDomain); void oduCpyFixBufToMsg(uint8_t *fixBuf, Buffer *mBuf, uint16_t len); uint8_t buildPlmnId(Plmn plmn, uint8_t *buf); +uint16_t convertScsEnumValToScsVal(uint8_t scsEnumValue); + +uint8_t SGetSBufNewForDebug(char *file, char *func, char *line, Region region, Pool pool, Data **ptr, Size size); +uint8_t SPutSBufNewForDebug(char *file, char *func, char *line, Region region, Pool pool, Data *ptr, Size size); +uint8_t SGetStaticBufNewForDebug(char *file, char *func, char *line, \ +Region region, Pool pool, Data **ptr, Size size, uint8_t memType); +uint8_t SPutStaticBufNewForDebug(char *file, char *func, char *line, \ +Region region, Pool pool, Data *ptr, Size size, uint8_t memType); +uint8_t countSetBits(uint32_t num); #endif