#define HQ_NACK 1
#define HQ_DTX 2
+#ifdef NR_DRX
+/* As per 38.331 the largest offset which can be used in of size 10240.
+ * But using this much size of array can cause memory related issue so thats why
+ * taking this size which are a multiple of the larger size */
+#define MAX_DRX_SIZE 512
+#endif
+
typedef struct schDlHqProcCb SchDlHqProcCb;
typedef struct schUlHqEnt SchUlHqEnt;
typedef struct schRaReq SchRaReq;
SCH_UE_HANDIN_IN_PROGRESS
}SchUeState;
+
typedef enum
{
SCH_RA_STATE_MSG2_HANDLE,
uint8_t statsBitmap;
}SchDlHqTbCb;
+#ifdef NR_DRX
+typedef struct schDrxHarqCb
+{
+ uint32_t retxStrtIndex;
+ uint32_t rttIndex;
+ uint32_t retxIndex;
+ int16_t retxExpDistance;
+ uint8_t retxTmrReduction;
+}SchDrxHarqCb;
+#endif
+
typedef struct schUlHqProcCb
{
uint8_t procId; /*!< HARQ Process ID */
uint8_t dmrsMappingType;
uint8_t nrOfDmrsSymbols;
uint8_t dmrsAddPos;
+#ifdef NR_DRX
+ SchDrxHarqCb drxHarqCb;
+#endif
}SchUlHqProcCb;
struct schDlHqProcCb
uint8_t k1;
SchLcPrbEstimate dlLcPrbEst; /*DL PRB Alloc Estimate among different LC*/
CmLList dlHqProcLink;
+#ifdef NR_DRX
+ SchDrxHarqCb drxHarqCb;
+#endif
};
struct schUlHqEnt
{
CmLListCp hqList;
}SchHqUlMap;
+#ifdef NR_DRX
+typedef struct schDrxUeCb
+{
+ bool drxDlUeActiveStatus; /* This variable is used to store the status about downlink active status */
+ bool drxUlUeActiveStatus; /* This variable is used to store the status about uplink active status */
+ uint32_t onDurationLen; /* on duration value recived from ue cfg/recfg */
+ uint32_t inActvTimerLen; /* inActvTimer value recived from ue cfg/recfg */
+ uint8_t harqRttDlTimerLen; /* harqRttDlTimer value recived from ue cfg/recfg */
+ uint8_t harqRttUlTimerLen; /* harqRttUlTimer value recived from ue cfg/recfg */
+ uint32_t retransDlTimerLen; /* retransDlTimer value recived from ue cfg/recfg */
+ uint32_t retransUlTimerLen; /* retransUlTimer value recived from ue cfg/recfg */
+ uint32_t longCycleLen; /* long Cycle value recived from ue cfg/recfg */
+ bool longCycleToBeUsed; /* long cycle should be used once the short cycle gets expires */
+ uint32_t drxStartOffset; /* drxStartOffset value recived from ue cfg/recfg */
+ bool shortCyclePresent; /* shortCyclePresent value recived from ue cfg/recfg */
+ uint32_t shortCycleLen; /* short Cycle value recived from ue cfg/recfg */
+ uint32_t shortCycleTmrLen; /* shortCycleTmr value recived from ue cfg/recfg */
+ uint32_t drxSlotOffset; /* drxSlotOffset value recived from ue cfg/recfg */
+ uint32_t onDurationStartIndex; /* Index at which UE is stored in onDuration starts list */
+ uint32_t onDurationExpiryIndex; /* Index at which UE is stored in onDuration expires in the list */
+ uint32_t inActvExpiryIndex; /* Index at which UE is stored in inActvTimer expires in the list */
+ uint32_t shortCycleExpiryIndex; /* Index at which UE is stored in shortCycle expires in the list */
+ int32_t shortCycleDistance; /* Distance after how many slot short cycle tmr gets expire */
+ int32_t onDurationStartDistance;/* Distance after how many slot on Duration Start tmr gets expire */
+ int32_t onDurationExpiryDistance;/* Distance after how many slot on Duration tmr gets expire */
+ int32_t inActiveTmrExpiryDistance;/* Distance after how many slot inActive tmr gets expire */
+ CmLList *onDurationStartNodeInfo;
+ CmLList *onDurationExpiryNodeInfo;
+ CmLList *inActvTimerExpiryNodeInfo;
+ CmLList *shortCycleTmrExpiryNodeInfo;
+}SchDrxUeCb;
+#endif
/**
* @brief
* UE control block
SchHqUlMap **hqUlmap;
CmLListCp ulRetxHqList;
CmLListCp dlRetxHqList;
+#ifdef NR_DRX
+ bool ueDrxInfoPres;
+ SchDrxUeCb drxUeCb;
+#endif
}SchUeCb;
/**
SchPagingOcc pagMonOcc[MAX_PO_PER_PF]; /*Paging Occasion Slot/FrameOffset are stored*/
}SchPageCb;
+#ifdef NR_DRX
+typedef struct schDrxCb
+{
+ CmLListCp onDurationStartList; /*!< Tracks the start of onDuration Timer. */
+ CmLListCp onDurationExpiryList; /*!< Tracks the Expiry of onDuration Timer. */
+ CmLListCp inActvTmrExpiryList; /*!< Tracks the Expiry of drx-InactivityTimer. */
+ CmLListCp shortCycleExpiryList; /*!< Tracks the Expiry of DRX Short Cycle. */
+ CmLListCp dlHarqRttExpiryList; /*!< Tracks the Expiry of DL HARQ RTT timer. */
+ CmLListCp dlRetransExpiryList; /*!< Tracks the Expiry of DL Re-Transmission timer. */
+ CmLListCp ulHarqRttExpiryList; /*!< Tracks the Expiry of UL HARQ RTT timer. */
+ CmLListCp ulRetransExpiryList; /*!< Tracks the Expiry of UL Re-Transmission timer. */
+ CmLListCp dlRetransTmrStartList; /*!< It has list of DL harq procs for */
+ CmLListCp ulRetransTmrStartList; /*!< It has list of UL harq procs for */
+}SchDrxCb;
+#endif
+
/**
* @brief
* Cell Control block per cell.
uint32_t slotFrmtBitMap; /*!< 2 bits must be read together to determine D/U/S slots. 00-D, 01-U, 10-S */
uint32_t symbFrmtBitMap; /*!< 2 bits must be read together to determine D/U/S symbols. 00-D, 01-U, 10-S */
#endif
+#ifdef NR_DRX
+ SchDrxCb drxCb[MAX_DRX_SIZE]; /*!< Drx cb*/
+#endif
}SchCellCb;