#define DU_SET_ZERO(_buf, _size) \
memset((_buf), 0, _size);
+/*Refer Spec 38.331 Annexure A: maxNrofPageRec : 32 [Maximum number of page records]*/
#define MAX_PAGING_UE_RECORDS 32
typedef enum
UE_INACTIVE,
UE_ACTIVE,
UE_HANDIN_IN_PROGRESS,
- UE_DELETION_IN_PROGRESS
+ UE_DELETION_IN_PROGRESS,
+ UE_RESET_IN_PROGRESS
}UeState;
typedef enum
GtpTnlCfg *tnlCfg2; /* Tunnel 2 */
}UpTnlCfg;
+#ifdef NR_DRX
+/* This structures is taken from the DRX Cycle section of
+ * specification 33.473. */
+typedef struct drxCycle
+{
+ uint16_t drxLongCycleLength;
+ bool shortDrxCyclePres;
+ ShortDrx shortDrxCycle;
+}DrxCycle;
+#endif
+
+typedef struct duLcCfg
+{
+ ConfigType configType;
+ LcCfg lcConfig;
+}DuLcCfg;
+
+typedef struct duMacUeCfg
+{
+ uint16_t cellId;
+ uint8_t ueId;
+ uint16_t crnti;
+ bool macCellGrpCfgPres;
+ MacCellGrpCfg macCellGrpCfg;
+ bool phyCellGrpCfgPres;
+ PhyCellGrpCfg phyCellGrpCfg;
+ bool spCellCfgPres;
+ SpCellRecfg spCellCfg;
+ AmbrCfg *ambrCfg;
+ ModulationInfo dlModInfo; /* DL modulation info */ //TBD
+ ModulationInfo ulModInfo; /* UL modulation info */ //TBD
+ uint8_t numLcs;
+ DuLcCfg lcCfgList[MAX_NUM_LC];
+ UeCfgState macUeCfgState; /* InActive / Completed */ //TBD
+ DataTransmissionAction transmissionAction; //TBD
+#ifdef NR_DRX
+ bool drxConfigIndicatorRelease;
+#endif
+}DuMacUeCfg;
+
+typedef struct duRlcBearerCfg
+{
+ ConfigType configType;
+ RlcBearerCfg rlcBearerCfg;
+}DuRlcBearerCfg;
+
+typedef struct duRlcUeCfg
+{
+ uint16_t cellId;
+ uint8_t ueId;
+ uint8_t numLcs;
+ DuRlcBearerCfg rlcLcCfg[MAX_NUM_LC];
+ UeCfgState rlcUeCfgState; /* InActive / Completed */
+}DuRlcUeCfg;
+
+
typedef struct duUeCfg
{
void *cellGrpCfg;
void *ueNrCapability;
uint8_t numRlcLcs; /* Rlc Ue Cfg */
- RlcBearerCfg rlcLcCfg[MAX_NUM_LC];
+ DuRlcBearerCfg rlcLcCfg[MAX_NUM_LC];
uint8_t numMacLcs; /* Mac Ue Cfg */
- LcCfg macLcCfg[MAX_NUM_LC];
+ DuLcCfg macLcCfg[MAX_NUM_LC];
AmbrCfg *ambrCfg;
uint8_t numDrb;
UpTnlCfg upTnlInfo[MAX_NUM_DRB]; /* User plane TNL Info*/
uint8_t numDrbSetupMod; /*No. of DRB Added during Modification*/
- MacUeCfg copyOfmacUeCfg;
- DataTransmissionAction dataTransmissionAction;
+ uint8_t numDrbModified; /*No. of DRB Modified during Modification*/
+ DuMacUeCfg copyOfmacUeCfg;
+ DataTransmissionAction dataTransmissionAction;
+#ifdef NR_DRX
+ bool drxCyclePres;
+ DrxCycle drxCycle;
+ bool drxConfigIndicatorRelease;
+#endif
}DuUeCfg;
typedef struct f1UeContextSetup
uint32_t gnbCuUeF1apId; /* GNB CU UE F1AP ID */
uint32_t drbBitMap; /* Drb Bit Map */
UeState ueState; /* UE Active/ Ue Inactive state */
- MacUeCfg macUeCfg; /* Mac Ue Cfg */
- RlcUeCfg rlcUeCfg; /* Rlc Ue Cfg */
+ MacCfraResource cfraResource; /* CF-RA resource assigned by MAC/SCH */
+ DuMacUeCfg duMacUeCfg; /* Mac Ue Cfg */
+ DuRlcUeCfg duRlcUeCfg; /* Rlc Ue Cfg */
}DuUeCb;
typedef struct slotInfo
typedef struct duPagUeRecord
{
- uint16_t pagUeId; /*UEID calculated from 5gsTMSI as per Spec 38.304*/
- uint64_t sTmsi; /*UE Paging Identity: 5GS-TMSI*/
- uint8_t pagPriority; /* Paging priority */
+ uint16_t pagUeId; /*UEID calculated from 5gsTMSI as per Spec 38.304*/
+ uint64_t sTmsi; /* UE Paging Identity: S-TMSI */
}DuPagUeRecord;
typedef struct duPagInfo
void *f1apMsg; /* msg structure */
}ReservedF1apPduInfo;
+typedef struct duTimer
+{
+ CmTqCp tmrTqCp; /*!< Timer Task Queue Cntrl Point */
+ CmTqType tmrTq[DU_TQ_SIZE]; /*!< Timer Task Queue */
+ uint8_t tmrRes; /*!< Timer resolution */
+}DuTimers;
+
/* DU APP DB */
typedef struct duCb
{
Mem mem; /* Memory configs */
TskInit init; /* DU Init */
+ uint8_t gnbId; /* gnb Id number */
bool f1Status; /* Status of F1 connection */
bool e2Status; /* Status of E2 connection */
+ E2apDb e2apDb; /* E2AP database */
uint8_t numCfgCells; /* number of configured cells */
DuCellCb* cfgCellLst[MAX_NUM_CELL]; /* List of cells at DU APP of type DuCellCb */
uint8_t numActvCells; /* Number of active cells */
uint8_t numTeId; /* current number of TEIDs configured in the system*/
UpTnlCfg* upTnlCfg[MAX_TEID]; /* tunnel info for every Drb */
CmLListCp reservedF1apPduList; /*storing F1AP pdu infomation and transId */
- SliceCfgState sliceState;
- F1SetupMsg f1SetupReqAndRspMsg;
+ SliceCfgState sliceState; /* Slice status */
+ DuTimers duTimersInfo; /* Du timers queue */
}DuCb;
-
typedef struct duLSapCfg
{
SuId suId;
TmrCfg connTmr;
}DuLSapCfg;
+/* Statistics Reported */
+typedef struct statistics
+{
+ /* As of now, KPI reporting is not implemented at RLC and DU APP.
+ * Below members are just for future reference*/
+ //DuAppStats duAppStats;
+ //RlcStatsReq rlcStatsReq;
+
+ MacStatsReq macStatsReq;
+}Statistics;
+
/* global variables */
-DuCb duCb;
+extern DuCb duCb;
//DuCfgParams duCfgParam;
/* DU Cell Functions */
uint8_t duHdlSchCfgComplete(Pst *pst, RgMngmt *cfm);
uint8_t duBuildAndSendMacCellStart();
uint8_t duBuildAndSendMacCellStop(uint16_t cellId);
+
#endif
/**********************************************************************