#define SEARCHSPACE_4_INDEX 4
#define SS_MONITORING_SLOT_SL1 0 /* all slots */
#define SS_MONITORING_SYMBOL 0x2000; /* symbol-0, set 14th bit */
-#define SIB1_MCS 4
/* Macro for Ue Context */
#define MAX_NUM_SR_CFG_PER_CELL_GRP 8 /* Max number of scheduling request config per cell group */
#define EVENT_MAC_UE_DELETE_RSP 213
#define EVENT_MAC_CELL_DELETE_REQ 214
#define EVENT_MAC_CELL_DELETE_RSP 215
+#define EVENT_MAC_SLICE_CFG_REQ 216
+#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 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
{
MAC_DU_APP_RSP_NOK,
MAC_DU_APP_RSP_OK
}MacRsp;
+typedef enum
+{
+ SLICE_PRESENT,
+ SLICE_NOT_PRESENT
+}RspReason;
+
typedef enum
{
SUCCESS,
CELLID_INVALID,
- UEIDX_INVALID
+ UEID_INVALID
}UeDeleteStatus;
typedef enum
RSRC_RRC_CONNECTED_USERS
}ResourceType;
+typedef enum
+{
+ TRANSMISSION_ALLOWED,
+ STOP_TRANSMISSION,
+ RESTART_TRANSMISSION
+}DataTransmissionAction;
+
typedef struct failureCause
{
CauseGrp type;
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;
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
PuschConfigCommon puschCommon;
}BwpUlConfig;
-/* Single Network Slice Selection assistance Info */
-
-typedef struct policyMemberList
-{
- Plmn plmn;
- Snssai snssai;
-}PolicyMemberList;
-
-typedef struct rrmPolicy
+typedef struct plmnInfoList
{
- ResourceType rsrcType;
- PolicyMemberList memberList;
- uint8_t policyMaxRatio;
- uint8_t policyMinRatio;
- uint8_t policyDedicatedRatio;
-}RrmPolicy;
+ Plmn plmn;
+ uint8_t numSupportedSlice; /* Total slice supporting */
+ Snssai **snssai; /* List of supporting snssai*/
+}PlmnInfoList;
typedef struct macCellCfg
{
BwpDlConfig initialDlBwp; /* Initial DL BWP */
BwpUlConfig initialUlBwp; /* Initial UL BWP */
uint8_t dmrsTypeAPos; /* DMRS Type A position */
- uint8_t numSupportedSlice; /* Total slice supporting */
- Snssai **snssai; /* List of supporting snssai*/
- RrmPolicy *rrmPolicy; /* RRM policy details */
+ PlmnInfoList plmnInfoList; /* Consits of PlmnId and Snssai list */
+ //RrmPolicy *rrmPolicy; /* RRM policy details */
}MacCellCfg;
typedef struct macCellCfgCfm
typedef struct pucchFormatCfg
{
- uint8_t interSlotFreqHop;
- uint8_t addDmrs;
+ bool interSlotFreqHop;
+ bool addDmrs;
uint8_t maxCodeRate;
uint8_t numSlots;
bool pi2BPSK;
typedef struct macUeCfg
{
uint16_t cellId;
- uint8_t ueIdx;
+ uint8_t ueId;
uint16_t crnti;
bool macCellGrpCfgPres;
MacCellGrpCfg macCellGrpCfg;
uint8_t numLcs;
LcCfg lcCfgList[MAX_NUM_LC];
UeCfgState macUeCfgState; /* InActive / Completed */
+ DataTransmissionAction transmissionAction;
}MacUeCfg;
typedef struct nrcgi
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;
CellDeleteStatus result;
}MacCellDeleteRsp;
+typedef struct macSliceRsp
+{
+ Snssai snssai;
+ MacRsp rsp;
+ RspReason cause;
+}MacSliceRsp;
+
+typedef struct rrmPolicyRatio
+{
+ uint8_t policyMaxRatio;
+ uint8_t policyMinRatio;
+ uint8_t policyDedicatedRatio;
+}RrmPolicyRatio;
+
+typedef struct macSliceRrmPolicy
+{
+ Snssai snssai;
+ RrmPolicyRatio *rrmPolicyRatio;
+}MacSliceRrmPolicy;
+
+typedef struct macSliceCfgReq
+{
+ uint8_t numOfConfiguredSlice;
+ MacSliceRrmPolicy **listOfSliceCfg;
+}MacSliceCfgReq;
+
+typedef struct macSliceCfgRsp
+{
+ uint8_t numSliceCfgRsp;
+ MacSliceRsp **listOfSliceCfgRsp;
+}MacSliceCfgRsp;
+
/* Functions for slot 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,
Pst *pst,
MacCellDeleteRsp *cellDeleteRsp));
+/* Slice Cfg Request from DU APP to MAC*/
+typedef uint8_t (*DuMacSliceCfgReq) ARGS((
+ Pst *pst,
+ MacSliceCfgReq *CfgReq));
+
+/* Slice Cfg Response from MAC to DU APP */
+typedef uint8_t (*MacDuSliceCfgRspFunc) ARGS((
+ Pst *pst,
+ MacSliceCfgRsp *cfgRsp));
+
+/* Slice ReReCfg Request from DU APP to MAC*/
+typedef uint8_t (*DuMacSliceRecfgReq) ARGS((
+ Pst *pst,
+ MacSliceCfgReq *CfgReq));
+
+/* Slice ReReCfg Response from MAC to DU APP */
+typedef uint8_t (*MacDuSliceReCfgRspFunc) ARGS((
+ Pst *pst,
+ MacSliceCfgRsp *cfgRsp));
+
+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 packDuMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
uint8_t DuProcMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
uint8_t unpackDuMacCellDeleteRsp(MacDuCellDeleteRspFunc func, Pst *pst, Buffer *mBuf);
-
+uint8_t packDuMacSliceCfgReq(Pst *pst, MacSliceCfgReq *sliceCfgReq);
+uint8_t MacProcSliceCfgReq(Pst *pst, MacSliceCfgReq *sliceCfgReq);
+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 duHandleSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
+uint8_t packMacSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
+uint8_t unpackDuMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf);
+int8_t getFreeBitFromUeBitMap(uint16_t cellId);
+void unsetBitInUeBitMap(uint16_t cellId, uint8_t bitPos);
#endif