#define EVENT_RLC_UE_RECONFIG_REQ 215
#define EVENT_RLC_UE_RECONFIG_RSP 216
#define EVENT_DL_RRC_MSG_RSP_TO_DU 217
-#define EVENT_DL_USER_DATA_TRANS_TO_DU 218
+#define EVENT_DL_USER_DATA_TRANS_TO_RLC 218
#define EVENT_UL_USER_DATA_TRANS_TO_DU 219
+#define EVENT_RLC_UE_DELETE_REQ 220
+#define EVENT_RLC_UE_DELETE_RSP 221
+#define EVENT_RLC_SLICE_PM_TO_DU 222
#define RB_ID_SRB 0
#define RB_ID_DRB 1
-#define RB_TYPE_SRB 0 /* Signalling Radio Bearer */
-#define RB_TYPE_DRB 1 /* Data Radio Bearer */
-
/* RLC Direction Config */
#define RLC_CFG_DIR_UL 1 /*!< Uplink direction */
#define RLC_CFG_DIR_DL 2 /*!< Downlink direction */
#define LCH_DTCH 4 /*!< DTCH Logical Channel */
#define LCH_DCCH 5 /*!< DCCH Logical Channel */
+typedef enum
+{
+ RB_TYPE_SRB, /* Signalling Radio Bearer */
+ RB_TYPE_DRB /* Data Radio Bearer */
+}RlcRbType;
+
typedef enum
{
TRANSMISSION_IN_PROGRESS,
RLC_CFG_REAS_INVALID_RGUSAP /*!< Invalid RGU SAP ID */
}FailureReason;
+typedef enum
+{
+ SUCCESSFUL , /*!< No Failure */
+ INVALID_CELLID , /*!< CellId not present */
+ INVALID_UEID , /*!< UEId not present */
+}UeDeleteResult;
+
typedef enum
{
RLC_AM, //Acknowledged Mode
typedef enum
{
- RLC_DU_APP_RSP_NOK,
- RLC_DU_APP_RSP_OK
+ RLC_DU_APP_RSP_OK = 1,
+ RLC_DU_APP_RSP_NOK
}RlcRsp;
typedef struct ulAmCfg
int16_t pollPdu; /* Used to trigger a poll for every pollPdu.*/
int32_t pollByte; /* Poll_Byte in bytes. */
uint8_t maxRetxTh; /* Max_Retx_Threshold */
-
+
}DlAmCfg;
typedef struct dlUmCfg
{
ConfigType configType;
uint8_t rbId;
- uint8_t rbType;
+ RlcRbType rbType;
uint8_t lcId;
uint8_t lcType;
+ Snssai *snssai;
RlcMode rlcMode;
union
{
UmUniDirUlBearerCfg *umUniDirUlCfg;
UmUniDirDlBearerCfg *umUniDirDlCfg;
}u;
+ bool isLcAddModRspSent;
}RlcBearerCfg;
typedef struct rlcUeCfg
{
uint16_t cellId;
- uint8_t ueIdx;
+ uint8_t ueId;
uint8_t numLcs;
RlcBearerCfg rlcLcCfg[MAX_NUM_LC];
UeCfgState rlcUeCfgState; /* InActive / Completed */
typedef struct rlcUeCfgRsp
{
uint16_t cellId;
- uint16_t ueIdx;
+ uint16_t ueId;
RlcRsp result;
FailureReason reason;
}RlcUeCfgRsp;
+typedef struct rlcUeDelete
+{
+ uint16_t cellId;
+ uint8_t ueId;
+}RlcUeDelete;
+
+typedef struct rlcUeDeleteRsp
+{
+ uint16_t cellId;
+ uint8_t ueId;
+ UeDeleteResult result;
+}RlcUeDeleteRsp;
+
/* UL RRC Message from RLC to DU APP */
typedef struct ulRrcMsgInfo
{
uint16_t cellId; /* Cell Id */
- uint16_t ueIdx; /* UE Index */
+ uint16_t ueId; /* UE Id */
uint8_t lcId; /* Logical channel Id */
uint16_t msgLen; /* RRC message length (in bytes) */
uint8_t *rrcMsg; /* RRC Message (UL-DCCH Message) */
typedef struct ulUserDatInfo
{
uint16_t cellId; /* Cell Id */
- uint16_t ueIdx; /* UE Index */
+ uint16_t ueId; /* UE Id */
uint8_t rbId;
uint16_t msgLen; /* User data length (in bytes) */
uint8_t *userData; /* User data (UL-DTCH Message) */
typedef struct dlRrcMsgInfo
{
uint16_t cellId; /* Cell Id */
- uint16_t ueIdx; /* UE index */
- uint8_t rbType; /* Radio Bearer Type */
+ uint16_t ueId; /* UE Id */
+ RlcRbType rbType; /* Radio Bearer Type */
uint8_t rbId; /* Radio Bearer Id */
uint8_t lcType; /* Logical channel type */
uint8_t lcId; /* Logical channel Id */
uint16_t triggeringMessage;
}RrcDeliveryStatus;
+typedef struct
+{
+ uint32_t sd:24;
+ uint8_t sst;
+}SliceIdentifier;
+
+/*Pm Metric for NW Slicing from RLC to DUAPP*/
+typedef struct slicePm
+{
+ SliceIdentifier networkSliceIdentifier;
+ double ThpDl;
+ double ThpUl;
+}SlicePm;
+
+typedef struct slicePmList
+{
+ uint8_t numSlice;
+ SlicePm *sliceRecord;
+}SlicePmList;
+
typedef struct rrcDeliveryReportInfo
{
uint16_t cellId;
- uint16_t ueIdx;
+ uint16_t ueId;
uint8_t srbId;
RrcDeliveryStatus rrcDeliveryStatus;
}RrcDeliveryReport;
+/* DL Data Message from DU APP to RLC */
+typedef struct dlDataMsgInfo
+{
+ uint16_t cellId; /* Cell Id */
+ uint16_t ueId; /* UE Id */
+ uint8_t rbId; /* Radio Bearer Id */
+ uint16_t msgLen; /* Message length */
+ Buffer *dlMsg; /* DL Data */
+}RlcDlUserDataInfo;
+
/* Function Pointers */
/* UE create Request from DU APP to RLC*/
typedef uint8_t (*DuRlcUeCreateReq) ARGS((
Pst *pst,
RlcUeCfgRsp *ueCfgRsp));
+/* UE Delete Response from RLC to DU APP*/
+typedef uint8_t (*RlcDuUeDeleteRsp) ARGS((
+ Pst *pst,
+ RlcUeDeleteRsp *ueDelRsp));
+
/* UL RRC Message from RLC to DU APP */
typedef uint8_t (*RlcUlRrcMsgToDuFunc) ARGS((
Pst *pst,
Pst *pst,
RrcDeliveryReport *rrcDeliveryReport));
+/* UE Reconfig Request from DU APP to RLC */
typedef uint8_t (*DuRlcUeReconfigReq) ARGS((
Pst *pst,
RlcUeCfg *ueCfg ));
+/* UE Delete Request from DU APP to RLC */
+typedef uint8_t (*DuRlcUeDeleteReq) ARGS((
+ Pst *pst,
+ RlcUeDelete *ueDelete));
+
/* DL RRC Message from RLC to DU APP */
typedef uint8_t (*RlcDlRrcMsgRspToDuFunc) ARGS((
Pst *pst,
Pst *pst,
RlcUlUserDatInfo *ulUserData));
+/* DL User Data from DU APP to RLC */
+typedef uint8_t (*DuRlcDlUserDataToRlcFunc) ARGS((
+ Pst *pst,
+ RlcDlUserDataInfo *dlDataMsg));
+
+/* Slice Metrics from RLC to DU APP */
+typedef uint8_t (*RlcSlicePmToDuFunc) ARGS((
+ Pst *pst,
+ SlicePmList *sliceStats));
+
/* Pack/Unpack function declarations */
uint8_t packDuRlcUeCreateReq(Pst *pst, RlcUeCfg *ueCfg);
uint8_t unpackRlcUeCreateReq(DuRlcUeCreateReq func, Pst *pst, Buffer *mBuf);
uint8_t unpackRlcDlRrcMsgRspToDu(RlcDlRrcMsgRspToDuFunc func, Pst *pst, Buffer *mBuf);
uint8_t packRlcUlUserDataToDu(Pst *pst, RlcUlUserDatInfo *ulUserData);
uint8_t unpackRlcUlUserDataToDu(RlcUlUserDataToDuFunc func, Pst *pst, Buffer *mBuf);
+uint8_t packRlcDlUserDataToRlc(Pst *pst, RlcDlUserDataInfo *dlDataMsg);
+uint8_t unpackRlcDlUserDataToRlc(DuRlcDlUserDataToRlcFunc func, Pst *pst, Buffer *mBuf);
+uint8_t packDuRlcUeDeleteReq(Pst *pst, RlcUeDelete *ueDelete);
+uint8_t unpackRlcUeDeleteReq(DuRlcUeDeleteReq func, Pst *pst, Buffer *mBuf);
+uint8_t packRlcDuUeDeleteRsp(Pst *pst, RlcUeDeleteRsp *ueDeleteRsp);
+uint8_t unpackRlcUeDeleteRsp(RlcDuUeDeleteRsp func, Pst *pst, Buffer *mBuf);
+uint8_t packRlcDuSlicePm(Pst *pst, SlicePmList *sliceStats);
+uint8_t unpackRlcSlicePm(RlcSlicePmToDuFunc func, Pst *pst, Buffer *mBuf);
/* Event Handler function declarations */
uint8_t RlcProcUeCreateReq(Pst *pst, RlcUeCfg *ueCfg);
uint8_t RlcProcUeReconfigReq(Pst *pst, RlcUeCfg *ueCfg);
uint8_t DuProcRlcDlRrcMsgRsp(Pst *pst, RlcDlRrcMsgRsp *dlRrcMsg);
uint8_t DuProcRlcUlUserDataTrans(Pst *pst, RlcUlUserDatInfo *ulUserData);
-
+uint8_t RlcProcDlUserDataTransfer(Pst *pst, RlcDlUserDataInfo *dlDataMsgInfo);
+uint8_t RlcProcUeDeleteReq(Pst *pst, RlcUeDelete *ueDelete);
+uint8_t DuProcRlcUeDeleteRsp(Pst *pst, RlcUeDeleteRsp *delRsp);
+uint8_t DuProcRlcSliceMetrics(Pst *pst, SlicePmList *sliceStats);
#endif /* RLC_INF_H */
/**********************************************************************