X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fdu_app_mac_inf.h;h=6221e5b885db20184deeb7c681982b3ceb6757a2;hb=cb811f8127971006aa5c345c71cb737e8be8dc10;hp=a10e2aa854c845966947db56b1585e6795ceafb8;hpb=3364273455756ae289662a274d5bcbf391ecd58e;p=o-du%2Fl2.git diff --git a/src/cm/du_app_mac_inf.h b/src/cm/du_app_mac_inf.h index a10e2aa85..6221e5b88 100644 --- a/src/cm/du_app_mac_inf.h +++ b/src/cm/du_app_mac_inf.h @@ -79,11 +79,18 @@ #define EVENT_MAC_SLICE_CFG_RSP 217 #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 PAGING_SCHED_DELTA 4 + typedef enum { MAC_DU_APP_RSP_NOK, @@ -100,7 +107,7 @@ typedef enum { SUCCESS, CELLID_INVALID, - UEIDX_INVALID + UEID_INVALID }UeDeleteStatus; typedef enum @@ -503,6 +510,13 @@ typedef enum RSRC_RRC_CONNECTED_USERS }ResourceType; +typedef enum +{ + TRANSMISSION_ALLOWED, + STOP_TRANSMISSION, + RESTART_TRANSMISSION +}DataTransmissionAction; + typedef struct failureCause { CauseGrp type; @@ -562,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 */ @@ -570,6 +586,13 @@ typedef struct prachCfg uint8_t raRspWindow; /* RA Response Window */ }PrachCfg; +typedef struct schPageCfg +{ + uint8_t numPO; /*Derived from Ns*/ + bool poPresent; /*Whether FirstPDCCH-MonitoringPO is present or not*/ + uint16_t pagingOcc[MAX_PO_PER_PF]; /*FirstPDCCH-Monitoring Paging Occasion*/ +}SchPageCfg; + typedef struct sib1CellCfg { uint8_t *sib1Pdu; @@ -578,6 +601,7 @@ typedef struct sib1CellCfg uint8_t coresetZeroIndex; /* derived from 4 LSB of pdcchSib1 present in MIB */ uint8_t searchSpaceZeroIndex; /* derived from 4 MSB of pdcchSib1 present in MIB */ uint16_t sib1Mcs; + SchPageCfg pagingCfg; } Sib1CellCfg; typedef struct bwpParams @@ -975,8 +999,8 @@ typedef struct pucchResrcCfg typedef struct pucchFormatCfg { - uint8_t interSlotFreqHop; - uint8_t addDmrs; + bool interSlotFreqHop; + bool addDmrs; uint8_t maxCodeRate; uint8_t numSlots; bool pi2BPSK; @@ -1219,7 +1243,7 @@ typedef struct modulationInfo typedef struct macUeCfg { uint16_t cellId; - uint8_t ueIdx; + uint8_t ueId; uint16_t crnti; bool macCellGrpCfgPres; MacCellGrpCfg macCellGrpCfg; @@ -1233,6 +1257,7 @@ typedef struct macUeCfg uint8_t numLcs; LcCfg lcCfgList[MAX_NUM_LC]; UeCfgState macUeCfgState; /* InActive / Completed */ + DataTransmissionAction transmissionAction; }MacUeCfg; typedef struct nrcgi @@ -1262,7 +1287,7 @@ typedef struct sCellFailInfo typedef struct ueCfgRsp { uint16_t cellId; - uint16_t ueIdx; + uint16_t ueId; MacRsp result; uint8_t numSRBFailed; /* valid values : 0 to MAX_NUM_SRB */ SRBFailInfo *failedSRBlisti; @@ -1272,6 +1297,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; @@ -1329,11 +1390,25 @@ typedef struct macSliceCfgRsp MacSliceRsp **listOfSliceCfgRsp; }MacSliceCfgRsp; -/* Functions for slot Ind from MAC to DU APP*/ +typedef struct macPcchInd +{ + uint16_t cellId; + uint16_t pf; + uint8_t i_s; + uint16_t pduLen; + uint8_t *pcchPdu; +}MacPcchInd; + +/* Functions for CellUp Ind from MAC to DU APP*/ typedef uint8_t (*DuMacCellUpInd) ARGS(( Pst *pst, OduCellId *cellId )); +/* Functions for slot Ind from MAC to DU APP*/ +typedef uint8_t (*DuMacSlotInd) ARGS(( + Pst *pst, + SlotTimingInfo *slotIndInfo)); + /* Functions for stop Ind from MAC to DU APP*/ typedef uint8_t (*DuMacStopInd) ARGS(( Pst *pst, @@ -1386,11 +1461,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, @@ -1431,6 +1521,12 @@ typedef uint8_t (*MacDuSliceReCfgRspFunc) ARGS(( Pst *pst, MacSliceCfgRsp *cfgRsp)); +/* Pcch indication from DU APP to MAC*/ +typedef uint8_t (*DuMacDlPcchInd) ARGS(( + Pst *pst, + MacPcchInd *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); @@ -1466,6 +1562,15 @@ 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); @@ -1490,7 +1595,14 @@ 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 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, MacPcchInd *pcchInd); +uint8_t MacProcDlPcchInd(Pst *pst, MacPcchInd *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