typedef enum
{
SCH_UE_STATE_INACTIVE,
- SCH_UE_STATE_ACTIVE
+ SCH_UE_STATE_ACTIVE,
+ SCH_UE_HANDIN_IN_PROGRESS
}SchUeState;
typedef enum
WINDOW_EXPIRED
}RaRspWindowStatus;
-typedef enum
-{
- SEARCH,
- CREATE,
- DELETE
-}ActionTypeLcLL;
-
/**
* @brief
* Structure holding LTE MAC's General Configuration information.
typedef struct schUeCfgCb
{
uint16_t cellId;
+ uint8_t ueId;
uint16_t crnti;
bool macCellGrpCfgPres;
SchMacCellGrpCfg macCellGrpCfg;
SchAmbrCfg *ambrCfg;
SchModulationInfo dlModInfo;
SchModulationInfo ulModInfo;
+ SchDataTransmission dataTransmissionAction;
}SchUeCfgCb;
/*Following structures to keep record and estimations of PRB allocated for each
SchUeCfgCb ueCfg;
SchUeState state;
SchCellCb *cellCb;
+ SchCfraResource cfraResource;
bool srRcvd;
bool bsrRcvd;
BsrInfo bsrInfo[MAX_NUM_LOGICAL_CHANNEL_GROUPS];
{
uint32_t raRnti;
RachIndInfo *rachInd;
+ bool isCFRA;
+ SchUeCb *ueCb; /* Filled only if isCFRA = true */
SlotTimingInfo winStartTime;
SlotTimingInfo winEndTime;
}SchRaReq;
typedef struct schPageInfo
{
- uint8_t pf; /*Value of Paging Frame received from DUAPP*/
- uint8_t i_s; /*Value of Paging Occ Index received from DUAPP*/
- SlotTimingInfo TxTime; /*Start Paging window*/
- uint8_t crntSsbIdx; /*Counts the slot till totalSSB is receached*/
- uint8_t mcs;
- uint8_t nPRB;
- uint16_t msgLen;
- uint8_t *pagePdu;
+ uint16_t pf; /*Value of Paging Frame received from DUAPP*/
+ uint8_t i_s; /*Value of Paging Occ Index received from DUAPP*/
+ SlotTimingInfo pageTxTime; /*Start Paging window*/
+ uint8_t mcs; /*MCS index*/
+ uint16_t msgLen; /*Pdu length */
+ uint8_t *pagePdu; /*RRC Page PDU bit string*/
}SchPageInfo;
typedef struct schPagingOcc
typedef struct schPageCb
{
- CmLListCp pageReqInfoRecord[MAX_SFN]; /*List of Page Records received which are stored per sfn*/
- SchPagingOcc pagMonOcc[MAX_PO_PER_PF]; /*Paging Occasion Slot/FrameOffset are stored*/
- SchPageInfo currPageInfo; /*Page Req which is being currently processed */
+ CmLListCp pageIndInfoRecord[MAX_SFN]; /*List of Page Records received which are stored per sfn*/
+ SchPagingOcc pagMonOcc[MAX_PO_PER_PF]; /*Paging Occasion Slot/FrameOffset are stored*/
}SchPageCb;
/**
SchCellCfg cellCfg; /*!< Cell ocnfiguration */
bool firstSsbTransmitted;
bool firstSib1Transmitted;
- uint8_t ssbStartSymbArr[SCH_MAX_SSB_BEAM]; /*!<start symbol per SSB beam */
+ uint8_t ssbStartSymbArr[SCH_MAX_SSB_BEAM]; /*!< start symbol per SSB beam */
+ uint64_t dedPreambleBitMap; /*!< Bit map to find used/free preambles index */
SchRaReq *raReq[MAX_NUM_UE]; /*!< Pending RA request */
SchRaCb raCb[MAX_NUM_UE]; /*!< RA Cb */
- uint16_t numActvUe; /*!<Number of active UEs */
- uint32_t actvUeBitMap; /*!<Bit map to find active UEs */
- uint32_t boIndBitMap; /*!<Bit map to indicate UEs that have recevied BO */
- SchUeCb ueCb[MAX_NUM_UE]; /*!<Pointer to UE contexts of this cell */
- CmLListCp ueToBeScheduled; /*!<Linked list to store UEs pending to be scheduled, */
- SchPageCb pageCb; /*!<Page Record at Schedular*/
+ uint16_t numActvUe; /*!< Number of active UEs */
+ uint32_t actvUeBitMap; /*!< Bit map to find active UEs */
+ uint32_t boIndBitMap; /*!< Bit map to indicate UEs that have recevied BO */
+ SchUeCb ueCb[MAX_NUM_UE]; /*!< Pointer to UE contexts of this cell */
+ CmLListCp ueToBeScheduled; /*!< Linked list to store UEs pending to be scheduled, */
+ SchPageCb pageCb; /*!< Page Record at Schedular*/
#ifdef NR_TDD
uint8_t numSlotsInPeriodicity; /*!< number of slots in configured periodicity and SCS */
uint32_t slotFrmtBitMap; /*!< 2 bits must be read together to determine D/U/S slots. 00-D, 01-U, 10-S */
/*Generic Functions*/
void updateGrantSizeForBoRpt(CmLListCp *lcLL, DlMsgAlloc *dlMsgAlloc, BsrInfo *bsrInfo, uint32_t *accumalatedBOSize);
uint16_t searchLargestFreeBlock(SchCellCb *cell, SlotTimingInfo slotTime,uint16_t *startPrb, Direction dir);
-LcInfo* handleLcLList(CmLListCp *lcLL, uint8_t lcId, ActionTypeLcLL action);
+LcInfo* handleLcLList(CmLListCp *lcLL, uint8_t lcId, ActionTypeLL action);
void prbAllocUsingRRMPolicy(CmLListCp *lcLL, bool dedicatedPRB, uint16_t mcsIdx,uint8_t numSymbols,\
uint16_t *sharedPRB, uint16_t *reservedPRB, bool *isTxPayloadLenAdded, bool *srRcvd);
void updateBsrAndLcList(CmLListCp *lcLL, BsrInfo *bsrInfo, uint8_t status);
void schProcPagingCfg(SchCellCb *cell);
void schCfgPdcchMonOccOfPO(SchCellCb *cell);
void schIncrSlot(SlotTimingInfo *timingInfo, uint8_t incr, uint16_t numSlotsPerRF);
+uint8_t schFillPagePdschCfg(SchCellCb *cell, PdschCfg *pagePdschCfg, SlotTimingInfo slotTime, \
+ uint16_t tbSize, uint8_t mcs, uint16_t startPrb);
/**********************************************************************
End of file