#define MAX_NUM_K0_IDX 16 /* Max number of pdsch time domain downlink allocation */
#define MAX_NUM_K1_IDX 8 /* As per spec 38.213 section 9.2.3 Max number of PDSCH-to-HARQ resource indication */
#define MIN_NUM_K1_IDX 4 /* Min K1 values */
-#define DEFAULT_K0_VALUE 0 /*As per 38.331, PDSCH-TimeDomainResourceAllocation field descriptions*/
+#define MAX_NUM_K2_IDX 16 /* PUSCH time domain UL resource allocation list */
+#define DEFAULT_K0_VALUE 0 /* As per 38.331, PDSCH-TimeDomainResourceAllocation field descriptions */
+/* As per 38.331, PUSCH-TimeDomainResourceAllocationList field descriptions */
+#define DEFAULT_K2_VALUE_FOR_SCS15 1
+#define DEFAULT_K2_VALUE_FOR_SCS30 1
+#define DEFAULT_K2_VALUE_FOR_SCS60 2
+#define DEFAULT_K2_VALUE_FOR_SCS120 3
#define ADD_DELTA_TO_TIME(crntTime, toFill, incr) \
{ \
SchK0K1TimingInfoTbl k0K1InfoTbl;
}SchBwpDlCfg;
+typedef struct schK2TimingInfo
+{
+ uint8_t numK2;
+ uint8_t k2Indexes[MAX_NUM_K2_IDX];
+}SchK2TimingInfo;
+
+typedef struct schK2TimingInfoTbl
+{
+ uint16_t tblSize;
+ SchK2TimingInfo k2TimingInfo[MAX_NUM_CONFIG_SLOTS];
+}SchK2TimingInfoTbl;
+
typedef struct schBwpUlCfg
{
SchBwpParams bwp;
SchPucchCfgCmn pucchCommon;
SchPuschCfgCmn puschCommon;
+ SchK2TimingInfoTbl k2InfoTbl;
}SchBwpUlCfg;
typedef struct schCellCfg
Sib1AllocInfo sib1Alloc;
}DlBrdcstAlloc;
+typedef struct msg3UlGrant
+{
+ uint8_t freqHopFlag;
+ uint16_t bwpSize;
+ FreqDomainAlloc msg3FreqAlloc;
+ uint8_t k2Index;
+ uint8_t mcs;
+ uint8_t tpc;
+ uint8_t csiReq;
+}Msg3UlGrant;
+
typedef struct rarInfo
{
uint16_t raRnti;
uint8_t RAPID;
uint16_t ta;
- FreqDomainAlloc msg3FreqAlloc;
+ Msg3UlGrant ulGrant;
uint16_t tcrnti;
uint8_t rarPdu[RAR_PAYLOAD_SIZE];
uint8_t rarPduLen;
typedef struct schSlotValue
{
- SlotIndInfo currentTime;
- SlotIndInfo broadcastTime;
- SlotIndInfo rarTime;
- SlotIndInfo dlMsgTime;
- SlotIndInfo ulDciTime;
+ SlotTimingInfo currentTime;
+ SlotTimingInfo broadcastTime;
+ SlotTimingInfo rarTime;
+ SlotTimingInfo dlMsgTime;
+ SlotTimingInfo ulDciTime;
}SchSlotValue;
typedef struct format0_0
{
uint16_t cellId;
uint16_t crnti; /* CRNI */
- SlotIndInfo slotIndInfo; /* Slot Info: sfn, slot number */
+ SlotTimingInfo slotIndInfo; /* Slot Info: sfn, slot number */
BwpCfg bwpCfg; /* BWP Cfg */
CoresetCfg coresetCfg; /* Coreset1 Cfg */
FormatType formatType; /* DCI Format */
{
uint16_t cellId; /* Cell Id */
uint16_t crnti; /* CRNI */
- SlotIndInfo slotIndInfo; /* Slot Info: sfn, slot number */
+ SlotTimingInfo slotIndInfo; /* Slot Info: sfn, slot number */
uint8_t dataType; /* Type of info being scheduled */
PrachSchInfo prachSchInfo; /* Prach scheduling info */
SchPuschInfo schPuschInfo; /* Pusch scheduling info */
{
uint16_t cellId;
uint16_t crnti;
- SlotIndInfo timingInfo;
+ SlotTimingInfo timingInfo;
uint8_t slotIdx;
uint8_t symbolIdx;
uint8_t freqIdx;
{
uint16_t cellId;
uint16_t crnti;
- SlotIndInfo timingInfo;
+ SlotTimingInfo timingInfo;
uint16_t numCrcInd;
uint8_t crcInd[MAX_NUMBER_OF_CRC_IND_BITS];
}CrcIndInfo;
SchPucchCfg pucchCfg;
bool puschCfgPres;
SchPuschCfg puschCfg;
+ SchK2TimingInfoTbl k2InfoTbl;
}SchInitialUlBwp;
/* Uplink BWP information */
{
uint16_t cellId;
uint16_t crnti;
- SlotIndInfo slotInd;
+ SlotTimingInfo slotInd;
uint8_t numSrBits;
uint8_t srPayload[MAX_SR_BITS_IN_BYTES];
}SrUciIndInfo;
typedef uint8_t (*MacSchSlotIndFunc) ARGS((
Pst *pst, /* Post structure */
- SlotIndInfo *slotInd)); /* Slot Info */
+ SlotTimingInfo *slotInd)); /* Slot Info */
typedef uint8_t (*MacSchBsrFunc) ARGS((
Pst *pst,
SchCellDeleteRsp *schCellDeleteRsp)); /* Scheduler UE delete response */
/* function declarations */
-uint8_t packMacSchSlotInd(Pst *pst, SlotIndInfo *slotInd);
+uint8_t packMacSchSlotInd(Pst *pst, SlotTimingInfo *slotInd);
uint8_t packSchMacDlAlloc(Pst *pst, DlSchedInfo *dlSchedInfo);
uint8_t packSchMacUlSchInfo(Pst *pst, UlSchedInfo *ulSchedInfo);
uint8_t packSchCellCfg(Pst *pst, SchCellCfg *schCellCfg);
uint8_t MacSchAddUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
uint8_t packSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
uint8_t MacProcSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
-uint8_t MacSchSlotInd ARGS((Pst * pst, SlotIndInfo * slotInd));
-uint8_t packMacSchSlotInd(Pst * pst, SlotIndInfo * slotInd);
+uint8_t MacSchSlotInd ARGS((Pst * pst, SlotTimingInfo * slotInd));
+uint8_t packMacSchSlotInd(Pst * pst, SlotTimingInfo * slotInd);
uint8_t unpackMacSchSlotInd(MacSchSlotIndFunc func, Pst *pst, Buffer *mBuf);
uint8_t packMacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd);
uint8_t MacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd);