X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fdu_app_mac_inf.h;h=06515e639fca45ca2ce98a4594cc9aaecfc7aa85;hb=d677deafcfd8b9984be18a25398502a84684d44c;hp=098becfb3249cf0c9c3edf357761e4660b457095;hpb=5bca27d3d33c085718de6e894b875c845d7456d2;p=o-du%2Fl2.git diff --git a/src/cm/du_app_mac_inf.h b/src/cm/du_app_mac_inf.h index 098becfb3..06515e639 100644 --- a/src/cm/du_app_mac_inf.h +++ b/src/cm/du_app_mac_inf.h @@ -80,26 +80,15 @@ #define EVENT_MAC_SLICE_RECFG_REQ 218 #define EVENT_MAC_SLICE_RECFG_RSP 219 #define EVENT_MAC_SLOT_IND 220 +#define EVENT_MAC_RACH_RESOURCE_REQ 221 +#define EVENT_MAC_RACH_RESOURCE_RSP 222 +#define EVENT_MAC_RACH_RESOURCE_REL 223 +#define EVENT_MAC_DL_PCCH_IND 224 #define BSR_PERIODIC_TIMER_SF_10 10 #define BSR_RETX_TIMER_SF_320 320 #define BSR_SR_DELAY_TMR_2560 2560 -#define GET_PAGING_CYCLE(enmValue, T) { \ - if (enmValue == 0) T = 32; \ - else if (enmValue == 1) T = 64; \ - else if (enmValue == 2) T = 128; \ - else if (enmValue == 3) T = 256; \ - else T = 0; \ -} - -#define GET_NUM_PAGING_OCC(enmValue, PO) { \ - if (enmValue == 0) PO = 4; \ - else if (enmValue == 1) PO = 2; \ - else if (enmValue == 2) PO = 1; \ - else PO = 0; \ -} - #define PAGING_SCHED_DELTA 4 typedef enum @@ -116,7 +105,7 @@ typedef enum typedef enum { - SUCCESS, + DEL_SUCCESSFUL, CELLID_INVALID, UEID_INVALID }UeDeleteStatus; @@ -521,6 +510,13 @@ typedef enum RSRC_RRC_CONNECTED_USERS }ResourceType; +typedef enum +{ + TRANSMISSION_ALLOWED, + STOP_TRANSMISSION, + RESTART_TRANSMISSION +}DataTransmissionAction; + typedef struct failureCause { CauseGrp type; @@ -580,7 +576,9 @@ typedef struct prachCfg uint8_t msg1Fdm; /* PRACH FDM (1,2,4,8) */ uint8_t rootSeqLen; /* Root sequence length */ PrachFdmInfo fdm[8]; /* FDM info */ + uint8_t totalNumRaPreamble; /* Total number of RA preambles */ uint8_t ssbPerRach; /* SSB per RACH occassion */ + uint8_t numCbPreamblePerSsb; /* Number of CB preamble per SSB */ bool prachMultCarrBand; /* Multiple carriers in Band */ uint8_t prachRestrictedSet; /* Support for PRACH restricted set */ uint8_t raContResTmr; /* RA Contention Resoultion Timer */ @@ -701,6 +699,45 @@ typedef struct plmnInfoList Snssai **snssai; /* List of supporting snssai*/ }PlmnInfoList; +#ifdef NR_DRX +/* The following list of structures is taken from the DRX-Config section of specification 33.331. */ +typedef struct drxOnDurationTimer +{ + bool onDurationTimerValInMs; + union + { + uint8_t subMilliSeconds; + uint16_t milliSeconds; + }onDurationtimerValue; +}DrxOnDurationTimer; + +typedef struct drxLongCycleStartOffset +{ + uint16_t drxLongCycleStartOffsetChoice; + uint16_t drxLongCycleStartOffsetVal; +}DrxLongCycleStartOffset; + +typedef struct shortDrx +{ + uint16_t drxShortCycle; + uint8_t drxShortCycleTimer; +}ShortDrx; + +typedef struct drxCfg +{ + DrxOnDurationTimer drxOnDurationTimer; + uint16_t drxInactivityTimer; + uint8_t drxHarqRttTimerDl; + uint8_t drxHarqRttTimerUl; + uint16_t drxRetransmissionTimerDl; + uint16_t drxRetransmissionTimerUl; + DrxLongCycleStartOffset drxLongCycleStartOffset; + bool shortDrxPres; + ShortDrx shortDrx; + uint8_t drxSlotOffset; +}DrxCfg; +#endif + typedef struct macCellCfg { uint16_t cellId; /* Cell Id */ @@ -805,6 +842,10 @@ typedef struct macCellGrpCfg BsrTmrCfg bsrTmrCfg; bool phrCfgSetupPres; /* true/false: phrCfgSetup/phrCfgRelease */ PhrCfg phrCfg; +#ifdef NR_DRX + bool drxCfgPresent; + DrxCfg drxCfg; +#endif }MacCellGrpCfg; typedef struct phyCellGrpCfg @@ -1259,6 +1300,10 @@ typedef struct macUeCfg uint8_t numLcs; LcCfg lcCfgList[MAX_NUM_LC]; UeCfgState macUeCfgState; /* InActive / Completed */ + DataTransmissionAction transmissionAction; +#ifdef NR_DRX + bool drxConfigIndicatorRelease; +#endif }MacUeCfg; typedef struct nrcgi @@ -1298,6 +1343,42 @@ typedef struct ueCfgRsp SCellFailInfo *failedSCellList; }MacUeCfgRsp; +typedef struct rachRsrcReq +{ + uint16_t cellId; + uint16_t ueId; + uint8_t numSsb; + uint8_t ssbIdx[MAX_NUM_SSB]; +}MacRachRsrcReq; + +typedef struct macCfraSsbResource +{ + uint8_t ssbIdx; + uint8_t raPreambleIdx; +}MacCfraSsbResource; + +typedef struct macCfraResource +{ + uint8_t numSsb; + MacCfraSsbResource ssbResource[MAX_NUM_SSB]; +}MacCfraResource; + +typedef struct macRachRsrcRsp +{ + uint16_t cellId; + uint16_t ueId; + MacRsp result; + uint16_t newCrnti; /* This parameter maps to 3GPP TS 38.331 newUE-Identity */ + MacCfraResource cfraResource; +}MacRachRsrcRsp; + +typedef struct macRachRsrcRel +{ + uint16_t cellId; + uint16_t ueId; + uint16_t crnti; +}MacRachRsrcRel; + typedef struct ueDelete { uint16_t cellId; @@ -1312,10 +1393,10 @@ typedef struct ueDeleteRsp UeDeleteStatus result; }MacUeDeleteRsp; -typedef struct macCellDelete +typedef struct macCellDeleteReq { uint16_t cellId; -}MacCellDelete; +}MacCellDeleteReq; typedef struct macCellDeleteRsp { @@ -1355,7 +1436,29 @@ typedef struct macSliceCfgRsp MacSliceRsp **listOfSliceCfgRsp; }MacSliceCfgRsp; -/* Functions for slot Ind from MAC to DU APP*/ +/*As per ORAN-WG8, Slice Cfg and ReCfg are same structures*/ +typedef struct macSliceCfgReq MacSliceRecfgReq; +typedef struct macSliceCfgRsp MacSliceRecfgRsp; + +typedef struct dlPcchInd +{ + uint16_t cellId; + uint16_t pf; + uint8_t i_s; + uint16_t pduLen; + uint8_t *pcchPdu; +}DlPcchInd; + +typedef struct cellInfo +{ + SlotTimingInfo slotInfo; + uint16_t cellId; +}CellInfo; + +typedef struct cellInfo CellStartInfo; +typedef struct cellInfo CellStopInfo; + +/* Functions for CellUp Ind from MAC to DU APP*/ typedef uint8_t (*DuMacCellUpInd) ARGS(( Pst *pst, OduCellId *cellId )); @@ -1373,12 +1476,12 @@ typedef uint8_t (*DuMacStopInd) ARGS(( /* Functions for mac cell start req */ typedef uint8_t (*DuMacCellStart) ARGS(( Pst *pst, - OduCellId *cellId)); + CellStartInfo *cellId)); /* Functions for mac cell stop request */ typedef uint8_t (*DuMacCellStop) ARGS(( Pst *pst, - OduCellId *cellId )); + CellStopInfo *cellId )); /* Function pointers for packing macCellCfg Request and Confirm */ typedef uint8_t (*packMacCellCfgReq) ARGS(( @@ -1417,11 +1520,26 @@ typedef uint8_t (*MacDuUeCfgRspFunc) ARGS(( Pst *pst, MacUeCfgRsp *cfgRsp)); -/* UE Reconfig Request from DU APP to MAC*/ +/* UE Reconfig Request from DU APP to MAC */ typedef uint8_t (*DuMacUeReconfigReq) ARGS(( Pst *pst, MacUeCfg *ueCfg )); +/* RACH Resource Request from DU APP to MAC */ +typedef uint8_t (*DuMacRachRsrcReq) ARGS(( + Pst *pst, + MacRachRsrcReq *rachRsrcReq)); + +/* RACH Resource Response from MAC to DU APP */ +typedef uint8_t (*MacDuRachRsrcRspFunc) ARGS(( + Pst *pst, + MacRachRsrcRsp *rachRsrcRsp)); + +/* RACH Resource Release from DU APP to MAC */ +typedef uint8_t (*DuMacRachRsrcRel) ARGS(( + Pst *pst, + MacRachRsrcRel *rachRsrcRel)); + /* UE Delete Request from DU APP to MAC*/ typedef uint8_t (*DuMacUeDeleteReq) ARGS(( Pst *pst, @@ -1435,7 +1553,7 @@ typedef uint8_t (*MacDuUeDeleteRspFunc) ARGS(( /* Cell Delete Request from DU APP to MAC*/ typedef uint8_t (*DuMacCellDeleteReq) ARGS(( Pst *pst, - MacCellDelete *cellDelete )); + MacCellDeleteReq *cellDelete )); /* Cell Delete Response from MAC to DU APP*/ typedef uint8_t (*MacDuCellDeleteRspFunc) ARGS(( @@ -1455,23 +1573,29 @@ typedef uint8_t (*MacDuSliceCfgRspFunc) ARGS(( /* Slice ReReCfg Request from DU APP to MAC*/ typedef uint8_t (*DuMacSliceRecfgReq) ARGS(( Pst *pst, - MacSliceCfgReq *CfgReq)); + MacSliceRecfgReq *CfgReq)); /* Slice ReReCfg Response from MAC to DU APP */ -typedef uint8_t (*MacDuSliceReCfgRspFunc) ARGS(( +typedef uint8_t (*MacDuSliceRecfgRspFunc) ARGS(( Pst *pst, - MacSliceCfgRsp *cfgRsp)); + MacSliceRecfgRsp *cfgRsp)); +/* Pcch indication from DU APP to MAC*/ +typedef uint8_t (*DuMacDlPcchInd) ARGS(( + Pst *pst, + DlPcchInd *pcchInd)); + +uint64_t ueBitMapPerCell[MAX_NUM_CELL]; /* Bit Map to store used/free UE-IDX per Cell */ uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId); uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf); uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId); -uint8_t packMacCellStart(Pst *pst, OduCellId *cellId); +uint8_t packMacCellStart(Pst *pst, CellStartInfo *cellStartInfo); uint8_t unpackMacCellStart(DuMacCellStart func, Pst *pst, Buffer *mBuf); -uint8_t MacProcCellStart(Pst *pst, OduCellId *cellId); -uint8_t packMacCellStop(Pst *pst, OduCellId *cellId); +uint8_t MacProcCellStart(Pst *pst, CellStartInfo *cellStartInfo); +uint8_t packMacCellStop(Pst *pst, CellStopInfo *cellStopInfo); uint8_t unpackMacCellStop(DuMacCellStop func, Pst *pst, Buffer *mBuf); -uint8_t MacProcCellStop(Pst *pst, OduCellId *cellId); +uint8_t MacProcCellStop(Pst *pst, CellStopInfo *cellStopInfo); uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg); uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func, Pst *pst, Buffer *mBuf); uint8_t MacProcCellCfgReq(Pst *pst, MacCellCfg *macCellCfg); @@ -1497,14 +1621,23 @@ uint8_t DuProcMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp); uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeCfg *ueCfg); uint8_t unpackMacUeReconfigReq(DuMacUeReconfigReq func, Pst *pst, Buffer *mBuf); uint8_t MacProcUeReconfigReq(Pst *pst, MacUeCfg *ueCfg); +uint8_t packDuMacRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq); +uint8_t unpackMacRachRsrcReq(DuMacRachRsrcReq func, Pst *pst, Buffer *mBuf); +uint8_t MacProcRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq); +uint8_t packDuMacRachRsrcRsp(Pst *pst, MacRachRsrcRsp *rachRsrcRsp); +uint8_t unpackDuMacRachRsrcRsp(MacDuRachRsrcRspFunc func, Pst *pst, Buffer *mBuf); +uint8_t DuProcMacRachRsrcRsp(Pst *pst, MacRachRsrcRsp *rachRsrcRsp); +uint8_t packDuMacRachRsrcRel(Pst *pst, MacRachRsrcRel *rachRsrcRel); +uint8_t unpackMacRachRsrcRel(DuMacRachRsrcRel func, Pst *pst, Buffer *mBuf); +uint8_t MacProcRachRsrcRel(Pst *pst, MacRachRsrcRel *rachRsrcRel); uint8_t packDuMacUeDeleteReq(Pst *pst, MacUeDelete *ueDelete); uint8_t MacProcUeDeleteReq(Pst *pst, MacUeDelete *ueDelete); uint8_t unpackMacUeDeleteReq(DuMacUeDeleteReq func, Pst *pst, Buffer *mBuf); uint8_t packDuMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp); uint8_t DuProcMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp); uint8_t unpackDuMacUeDeleteRsp(MacDuUeDeleteRspFunc func, Pst *pst, Buffer *mBuf); -uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDelete *cellDelete); -uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDelete *cellDelete); +uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete); +uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete); uint8_t unpackMacCellDeleteReq(DuMacCellDeleteReq func, Pst *pst, Buffer *mBuf); uint8_t packDuMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp); uint8_t DuProcMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp); @@ -1515,16 +1648,20 @@ uint8_t unpackMacSliceCfgReq(DuMacSliceCfgReq func, Pst *pst, Buffer *mBuf); uint8_t DuProcMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp); uint8_t packDuMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp); uint8_t unpackDuMacSliceCfgRsp(MacDuSliceCfgRspFunc func, Pst *pst, Buffer *mBuf); -uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq); -uint8_t MacProcSliceReCfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq); -uint8_t unpackMacSliceReCfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf); -uint8_t DuProcMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp); -uint8_t packDuMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp); -uint8_t unpackDuMacSliceReCfgRsp(MacDuSliceReCfgRspFunc func, Pst *pst, Buffer *mBuf); +uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq); +uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq); +uint8_t unpackMacSliceRecfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf); +uint8_t DuProcMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp); +uint8_t packDuMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp); +uint8_t unpackDuMacSliceRecfgRsp(MacDuSliceRecfgRspFunc func, Pst *pst, Buffer *mBuf); uint8_t duHandleSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo); uint8_t packMacSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo); uint8_t unpackDuMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf); - +uint8_t packDuMacDlPcchInd(Pst *pst, DlPcchInd *pcchInd); +uint8_t MacProcDlPcchInd(Pst *pst, DlPcchInd *pcchInd); +uint8_t unpackMacDlPcchInd(DuMacDlPcchInd func, Pst *pst, Buffer *mBuf); +int8_t getFreeBitFromUeBitMap(uint16_t cellId); +void unsetBitInUeBitMap(uint16_t cellId, uint8_t bitPos); #endif