+typedef struct handoverInfo
+{
+ HandoverType HOType;
+ uint32_t srcNodeId; /* If Inter_DU HO, this is Source DU ID. In case of Inter CU HO, this is Source CU ID */
+ uint32_t tgtNodeId; /* If Inter_DU HO, this is Taregt DU ID. In case of Inter CU HO, this is Target CU ID */
+ uint32_t tgtCellId; /* Cell Id in target node to which UE is to be handed over */
+ uint8_t cuUeF1apIdSrc; /* Used for Inter-CU HO. CU UE F1AP ID of UE in source CU */
+ uint8_t cuUeF1apIdTgt; /* Used for Inter-CU HO. CU UE F1AP ID of UE in target CU */
+}HandoverInfo;
+
+typedef struct dlAmCfg
+{
+ uint8_t snLenDl; /* Sequence Number length in bits. Allowed values are 12 and 18 */
+ int8_t reAssemTmr; /* T_reassembling Timer in msec*/
+ int16_t statProhTmr; /* T_status_prohibit Timer in msec*/
+}DlAmCfg;
+
+typedef struct ulAmCfg
+{
+ uint8_t snLenUl; /* Sequence Number length in bits. Allowed values are 12 and 18 */
+ uint16_t pollRetxTmr; /* T_poll_retransmit Timer in msec */
+ int16_t pollPdu; /* Used to trigger a poll for every pollPdu.*/
+ int32_t pollByte; /* Poll_Byte in bytes. */
+ uint8_t maxRetxTh; /* Max_Retx_Threshold */
+}UlAmCfg;
+
+typedef struct amBearerCfg
+{
+ UlAmCfg ulAmCfg;
+ DlAmCfg dlAmCfg;
+}AmBearerCfg;
+
+typedef struct ulUmCfg
+{
+ uint8_t snLenUlUm; /* Sequence Number length in bits. Allowed values are 6 and 12 */
+}UlUmCfg;
+
+typedef struct dlUmCfg
+{
+ uint8_t snLenDlUm; /* Sequence Number length in bits. Allowed values are 6 and 12 */
+ int8_t reAssemTmr; /* T_reassembling Timer in msec*/
+}DlUmCfg;
+
+typedef struct umBiDirBearerCfg
+{
+ UlUmCfg ulUmCfg;
+ DlUmCfg dlUmCfg;
+}UmBiDirBearerCfg;
+
+typedef struct umUniDirUlBearerCfg
+{
+ UlUmCfg ulUmCfg;
+}UmUniDirUlBearerCfg;
+
+typedef struct umUniDirDlBearerCfg
+{
+ DlUmCfg dlUmCfg;
+}UmUniDirDlBearerCfg;
+
+typedef struct rlcLcCfg
+{
+ uint8_t rlcMode;
+ union
+ {
+ AmBearerCfg amCfg;
+ UmBiDirBearerCfg umBiDirCfg;
+ UmUniDirUlBearerCfg umUniDirUlCfg;
+ UmUniDirDlBearerCfg umUniDirDlCfg;
+ }u;
+}RlcLcCfg;
+
+typedef struct macLcCfg
+{
+ uint8_t priority;
+ uint8_t lcGroup;
+ uint8_t schReqId;
+ uint8_t pbr; // prioritisedBitRate
+ uint8_t bsd; // bucketSizeDuration
+}MacLcCfg;
+
+typedef struct srbInfo
+{
+ uint8_t srbId;
+ uint8_t lcId;
+ RlcLcCfg rlcLcCfg;
+ MacLcCfg macLcCfg;
+ bool cfgSentToUe;
+}SrbInfo;
+
+typedef struct qosInfo
+{
+ uint8_t nonDynFiveQI;
+ uint16_t avgWindow;
+ uint16_t maxBurstDataVol;
+ uint8_t priorityLevel;
+ uint8_t preemptionCapability;
+ uint8_t preemptionVulnerability;
+ uint8_t pduSessionId;
+}QosInfo;
+
+typedef struct flowsMapped
+{
+ uint8_t qosFlowId;
+ QosInfo qos;
+}FlowsMapped;
+
+typedef struct TnlInfo
+{
+ uint8_t address[4];
+ uint8_t teId[4];
+}TnlInfo;
+
+typedef struct drbInfo
+{
+ uint8_t drbId;
+ uint8_t lcId;
+ QosInfo qos;
+ Snssai *snssai;
+ uint8_t numFlowMap;
+ FlowsMapped flowMapList[MAX_QOS_FLOWS];
+ TnlInfo ulUpTnlInfo;
+ TnlInfo dlUpTnlInfo;
+ uint8_t rlcMode;
+ RlcLcCfg rlcLcCfg;
+ MacLcCfg macLcCfg;
+ bool cfgSentToUe;
+}DrbInfo;
+