UL data path changes at Phy stub, RLC UL UM and DU APP [Issue-ID: ODUHIGH-262]
[o-du/l2.git] / src / cm / du_app_rlc_inf.h
1 /*******************************************************************************
2 ################################################################################
3 #   Copyright (c) [2017-2019] [Radisys]                                        #
4 #                                                                              #
5 #   Licensed under the Apache License, Version 2.0 (the "License");            #
6 #   you may not use this file except in compliance with the License.           #
7 #   You may obtain a copy of the License at                                    #
8 #                                                                              #
9 #       http://www.apache.org/licenses/LICENSE-2.0                             #
10 #                                                                              #
11 #   Unless required by applicable law or agreed to in writing, software        #
12 #   distributed under the License is distributed on an "AS IS" BASIS,          #
13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
14 #   See the License for the specific language governing permissions and        #
15 #   limitations under the License.                                             #
16 ################################################################################
17 *******************************************************************************/
18
19 /* Defines APIs exchanged between du_app and cl module of RLC */
20 #ifndef __RLC_INF_H__
21 #define __RLC_INF_H__
22
23 /* Events */
24 #define EVENT_RLC_UE_CREATE_REQ  210
25 #define EVENT_RLC_UE_CREATE_RSP 211    /*!< Config Confirm */
26 #define EVENT_UL_RRC_MSG_TRANS_TO_DU  212
27 #define EVENT_DL_RRC_MSG_TRANS_TO_RLC 213
28 #define EVENT_RRC_DELIVERY_MSG_TRANS_TO_DU 214
29 #define EVENT_RLC_UE_RECONFIG_REQ  215
30 #define EVENT_RLC_UE_RECONFIG_RSP  216
31 #define EVENT_DL_RRC_MSG_RSP_TO_DU 217
32 #define EVENT_DL_USER_DATA_TRANS_TO_DU 218
33 #define EVENT_UL_USER_DATA_TRANS_TO_DU 219
34
35 #define RB_ID_SRB 0
36 #define RB_ID_DRB 1
37
38 #define RB_TYPE_SRB 0        /* Signalling Radio Bearer */
39 #define RB_TYPE_DRB 1        /* Data Radio Bearer */
40
41 /* RLC Direction Config */
42 #define RLC_CFG_DIR_UL        1     /*!< Uplink direction */
43 #define RLC_CFG_DIR_DL        2     /*!< Downlink direction */
44 #define RLC_CFG_DIR_BOTH      3     /*!< Both Downlink and Uplink Direction*/
45
46
47 /* Logical Channel Type */
48 #define LCH_BCCH      1      /*!< BCCH Logical Channel */
49 #define LCH_PCCH      2      /*!< PCCH Logical Channel */
50 #define LCH_CCCH      3      /*!< CCCH Logical Channel */
51 #define LCH_DTCH      4      /*!< DTCH Logical Channel */
52 #define LCH_DCCH      5      /*!< DCCH Logical Channel */
53
54 typedef enum
55 {
56    TRANSMISSION_IN_PROGRESS,
57    TRANSMISSION_COMPLETE,
58    TRANSMISSION_FAILED
59 }DlMsgState;
60
61 typedef enum
62 {
63    RLC_CFG_REAS_NONE            ,  /*!< No Failure */
64    RLC_CFG_REAS_RB_CREAT_FAIL   ,  /*!< RB CB creation Failure */
65    RLC_CFG_REAS_UE_CREAT_FAIL   ,  /*!< UE CB creation Failure */
66    RLC_CFG_REAS_CELL_CREAT_FAIL ,  /*!< CELL CB creation Failure */
67    RLC_CFG_REAS_RB_PRSNT        ,  /*!< RB CB already present */
68    RLC_CFG_REAS_LCHTYPE_MIS     ,  /*!< Logical channel type mismatch */
69    RLC_CFG_REAS_RB_UNKWN        ,  /*!< RB Cb unknown */
70    RLC_CFG_REAS_UE_UNKWN        ,  /*!< UE Cb unknown */
71    RLC_CFG_REAS_CELL_UNKWN      ,  /*!< Cell Cb unknown */
72    RLC_CFG_REAS_RB_DEL_FAIL     ,  /*!< RB Cb Deletion Failure */
73    RLC_CFG_REAS_UE_DEL_FAIL     ,  /*!< UE Cb Deletion Failure */
74    RLC_CFG_REAS_RB_REEST_FAIL   ,  /*!< RB Cb Re establish Failure */
75    RLC_CFG_REAS_RB_MODE_MIS     ,  /*!< RB Cb Mode mismatch */
76    RLC_CFG_REAS_REEST_FAIL      ,  /*!< RB Cb Re-establishment Failed */
77    RLC_CFG_REAS_RECFG_FAIL      ,  /*!< RB Cb Re-configuration Failed */
78    RLC_CFG_REAS_INVALID_CFG     ,  /*!< Invalid Configuration Type */
79    RLC_CFG_REAS_SAME_UEID       ,  /*!< UE Ids match in ChngUeId Request */
80    RLC_CFG_REAS_CELL_DEL_FAIL   ,  /*!< Cell Cb Deletion Failure */
81    RLC_CFG_REAS_INVALID_LCHID   ,  /*!< Invalid LChId */
82    RLC_CFG_REAS_INVALID_DIR     ,  /*!< Invalid Direction */
83    RLC_CFG_REAS_UE_EXISTS       ,  /*!< UE ID already exists */
84    RLC_CFG_REAS_INVALID_SNLEN   ,  /*!< Invalid SN Length */
85    RLC_CFG_REAS_SNLEN_MIS       ,  /*!< SN Length mismatch */
86    RLC_CFG_REAS_INVALID_RGUSAP     /*!< Invalid RGU SAP ID */
87 }FailureReason;
88
89 typedef enum
90 {
91    RLC_AM,                    //Acknowledged Mode
92    RLC_UM_BI_DIRECTIONAL,     //UnAcknowledged Mode
93    RLC_UM_UNI_DIRECTIONAL_UL,
94    RLC_UM_UNI_DIRECTIONAL_DL
95 }RlcMode;
96
97 typedef enum
98 {
99    AM_SIZE_12,
100    AM_SIZE_18
101 }SnLenAm;
102
103 typedef enum
104 {
105    UM_SIZE_6,
106    UM_SIZE_12
107 }SnLenUm;
108
109 typedef enum
110 {
111    POLL_RETX_TMR_5MS,
112    POLL_RETX_TMR_10MS,
113    POLL_RETX_TMR_15MS,
114    POLL_RETX_TMR_20MS,
115    POLL_RETX_TMR_25MS,
116    POLL_RETX_TMR_30MS,
117    POLL_RETX_TMR_35MS,
118    POLL_RETX_TMR_40MS,
119    POLL_RETX_TMR_45MS,
120    POLL_RETX_TMR_50MS,
121    POLL_RETX_TMR_55MS,
122    POLL_RETX_TMR_60MS,
123    POLL_RETX_TMR_65MS,
124    POLL_RETX_TMR_70MS,
125    POLL_RETX_TMR_75MS,
126    POLL_RETX_TMR_80MS,
127    POLL_RETX_TMR_85MS,
128    POLL_RETX_TMR_90MS,
129    POLL_RETX_TMR_95MS,
130    POLL_RETX_TMR_100MS,
131    POLL_RETX_TMR_105MS,
132    POLL_RETX_TMR_110MS,
133    POLL_RETX_TMR_115MS,
134    POLL_RETX_TMR_120MS,
135    POLL_RETX_TMR_125MS,
136    POLL_RETX_TMR_130MS,
137    POLL_RETX_TMR_135MS,
138    POLL_RETX_TMR_140MS,
139    POLL_RETX_TMR_145MS,
140    POLL_RETX_TMR_150MS,
141    POLL_RETX_TMR_155MS,
142    POLL_RETX_TMR_160MS,
143    POLL_RETX_TMR_165MS,
144    POLL_RETX_TMR_170MS,
145    POLL_RETX_TMR_175MS,
146    POLL_RETX_TMR_180MS,
147    POLL_RETX_TMR_185MS,
148    POLL_RETX_TMR_190MS,
149    POLL_RETX_TMR_195MS,
150    POLL_RETX_TMR_200MS,
151    POLL_RETX_TMR_205MS,
152    POLL_RETX_TMR_210MS,
153    POLL_RETX_TMR_215MS,
154    POLL_RETX_TMR_220MS,
155    POLL_RETX_TMR_225MS,
156    POLL_RETX_TMR_230MS,
157    POLL_RETX_TMR_235MS,
158    POLL_RETX_TMR_240MS,
159    POLL_RETX_TMR_245MS,
160    POLL_RETX_TMR_250MS,
161    POLL_RETX_TMR_300MS,
162    POLL_RETX_TMR_350MS,
163    POLL_RETX_TMR_400MS,
164    POLL_RETX_TMR_450MS,
165    POLL_RETX_TMR_500MS,
166    POLL_RETX_TMR_800MS,
167    POLL_RETX_TMR_1000MS,
168    POLL_RETX_TMR_2000MS,
169    POLL_RETX_TMR_4000MS,
170    POLL_RETX_TMR_SPARE5,
171    POLL_RETX_TMR_SPARE4,
172    POLL_RETX_TMR_SPARE3,
173    POLL_RETX_TMR_SPARE2,
174    POLL_RETX_TMR_SPARE1
175
176 }TpollReTxTmr;
177
178 typedef enum
179 {
180    POLL_PDU_TMR_4MS,
181    POLL_PDU_TMR_8MS,
182    POLL_PDU_TMR_16MS,
183    POLL_PDU_TMR_32MS,
184    POLL_PDU_TMR_64MS,
185    POLL_PDU_TMR_128MS,
186    POLL_PDU_TMR_256MS,
187    POLL_PDU_TMR_512MS,
188    POLL_PDU_TMR_1024MS,
189    POLL_PDU_TMR_2048MS,
190    POLL_PDU_TMR_4096MS,
191    POLL_PDU_TMR_6144MS,
192    POLL_PDU_TMR_8192MS,
193    POLL_PDU_TMR_12288MS,
194    POLL_PDU_TMR_16384MS,
195    POLL_PDU_TMR_20480MS,
196    POLL_PDU_TMR_24576MS,
197    POLL_PDU_TMR_28672MS,
198    POLL_PDU_TMR_32768MS,
199    POLL_PDU_TMR_40960MS,
200    POLL_PDU_TMR_49152MS,
201    POLL_PDU_TMR_57344MS,
202    POLL_PDU_TMR_65536MS,
203    POLL_PDU_TMR_INFINITY,
204    POLL_PDU_TMR_SPARE_8,
205    POLL_PDU_TMR_SPARE_7,
206    POLL_PDU_TMR_SPARE_6,
207    POLL_PDU_TMR_SPARE_5,
208    POLL_PDU_TMR_SPARE_4,
209    POLL_PDU_TMR_SPARE_3,
210    POLL_PDU_TMR_SPARE_2,
211    POLL_PDU_TMR_SPARE_1
212
213 }PollPdu;
214
215 typedef enum
216 {
217    POLL_BYTES_1KB,
218    POLL_BYTES_2KB,
219    POLL_BYTES_5KB,
220    POLL_BYTES_8KB,
221    POLL_BYTES_10KB,
222    POLL_BYTES_15KB,
223    POLL_BYTES_25KB,
224    POLL_BYTES_50KB,
225    POLL_BYTES_75KB,
226    POLL_BYTES_100KB,
227    POLL_BYTES_125KB,
228    POLL_BYTES_250KB,
229    POLL_BYTES_375KB,
230    POLL_BYTES_500KB,
231    POLL_BYTES_750KB,
232    POLL_BYTES_1000KB,
233    POLL_BYTES_1250KB,
234    POLL_BYTES_1500KB,
235    POLL_BYTES_2000KB,
236    POLL_BYTES_3000KB,
237    POLL_BYTES_4000KB,
238    POLL_BYTES_4500KB,
239    POLL_BYTES_5000KB,
240    POLL_BYTES_5500KB,
241    POLL_BYTES_6000KB,
242    POLL_BYTES_6500KB,
243    POLL_BYTES_7000KB,
244    POLL_BYTES_7500KB,
245    POLL_BYTES_8MB,
246    POLL_BYTES_9MB,
247    POLL_BYTES_10MB,
248    POLL_BYTES_11MB,
249    POLL_BYTES_12MB,
250    POLL_BYTES_13MB,
251    POLL_BYTES_14MB,
252    POLL_BYTES_15MB,
253    POLL_BYTES_16MB,
254    POLL_BYTES_17MB,
255    POLL_BYTES_18MB,
256    POLL_BYTES_20MB,
257    POLL_BYTES_25MB,
258    POLL_BYTES_30MB,
259    POLL_BYTES_40MB,
260    POLL_BYTES_INFINITY,
261    POLL_BYTES_SPARE_20,
262    POLL_BYTES_SPARE_19,
263    POLL_BYTES_SPARE_18,
264    POLL_BYTES_SPARE_17,
265    POLL_BYTES_SPARE_16,
266    POLL_BYTES_SPARE_15,
267    POLL_BYTES_SPARE_14,
268    POLL_BYTES_SPARE_13,
269    POLL_BYTES_SPARE_12,
270    POLL_BYTES_SPARE_11,
271    POLL_BYTES_SPARE_10,
272    POLL_BYTES_SPARE_9,
273    POLL_BYTES_SPARE_8,
274    POLL_BYTES_SPARE_7,
275    POLL_BYTES_SPARE_6,
276    POLL_BYTES_SPARE_5,
277    POLL_BYTES_SPARE_4,
278    POLL_BYTES_SPARE_3,
279    POLL_BYTES_SPARE_2,
280    POLL_BYTES_SPARE_1
281
282 }PollBytes;
283
284 typedef enum
285 {
286    RETX_TH_1,
287    RETX_TH_2,
288    RETX_TH_3,
289    RETX_TH_4,
290    RETX_TH_6,
291    RETX_TH_8,
292    RETX_TH_16,
293    RETX_TH_32
294
295 }MaxRetxTh;
296
297 typedef enum
298 {
299    RE_ASM_0MS,
300    RE_ASM_5MS,
301    RE_ASM_10MS,
302    RE_ASM_15MS,
303    RE_ASM_20MS,
304    RE_ASM_25MS,
305    RE_ASM_30MS,
306    RE_ASM_35MS,
307    RE_ASM_40MS,
308    RE_ASM_45MS,
309    RE_ASM_50MS,
310    RE_ASM_55MS,
311    RE_ASM_60MS,
312    RE_ASM_65MS,
313    RE_ASM_70MS,
314    RE_ASM_75MS,
315    RE_ASM_80MS,
316    RE_ASM_85MS,
317    RE_ASM_90MS,
318    RE_ASM_95MS,
319    RE_ASM_100MS,
320    RE_ASM_105MS,
321    RE_ASM_110MS,
322    RE_ASM_115MS,
323    RE_ASM_120MS,
324    RE_ASM_125MS,
325    RE_ASM_130MS,
326    RE_ASM_135MS,
327    RE_ASM_140MS,
328    RE_ASM_145MS,
329    RE_ASM_150MS,
330    RE_ASM_155MS,
331    RE_ASM_160MS,
332    RE_ASM_165MS,
333    RE_ASM_170MS,
334    RE_ASM_175MS,
335    RE_ASM_180MS,
336    RE_ASM_185MS,
337    RE_ASM_190MS,
338    RE_ASM_195MS,
339    RE_ASM_200MS,
340    RE_ASM_SPARE1
341
342 }TReAssembleTmr;
343
344 typedef enum
345 {
346    PROH_0MS,
347    PROH_5MS,
348    PROH_10MS,
349    PROH_15MS,
350    PROH_20MS,
351    PROH_25MS,
352    PROH_30MS,
353    PROH_35MS,
354    PROH_40MS,
355    PROH_45MS,
356    PROH_50MS,
357    PROH_55MS,
358    PROH_60MS,
359    PROH_65MS,
360    PROH_70MS,
361    PROH_75MS,
362    PROH_80MS,
363    PROH_85MS,
364    PROH_90MS,
365    PROH_95MS,
366    PROH_100MS,
367    PROH_105MS,
368    PROH_110MS,
369    PROH_115MS,
370    PROH_120MS,
371    PROH_125MS,
372    PROH_130MS,
373    PROH_135MS,
374    PROH_140MS,
375    PROH_145MS,
376    PROH_150MS,
377    PROH_155MS,
378    PROH_160MS,
379    PROH_165MS,
380    PROH_170MS,
381    PROH_175MS,
382    PROH_180MS,
383    PROH_185MS,
384    PROH_190MS,
385    PROH_195MS,
386    PROH_200MS,
387    PROH_205MS,
388    PROH_210MS,
389    PROH_215MS,
390    PROH_220MS,
391    PROH_225MS,
392    PROH_230MS,
393    PROH_235MS,
394    PROH_240MS,
395    PROH_245MS,
396    PROH_250MS,
397    PROH_300MS,
398    PROH_350MS,
399    PROH_400MS,
400    PROH_450MS,
401    PROH_500MS,
402    PROH_800MS,
403    PROH_1000MS,
404    PROH_1200MS,
405    PROH_1600MS,
406    PROH_2000MS,
407    PROH_2400MS,
408    PROH_SPARE2,
409    PROH_SPARE1
410
411 }TStatProhTmr;
412
413 typedef enum
414 {
415    RLC_DU_APP_RSP_NOK,
416    RLC_DU_APP_RSP_OK
417 }RlcRsp;
418
419 typedef struct ulAmCfg
420 {
421    SnLenAm        snLenUl;              /* Sequence Number length in bits. Allowed values are 12 and 18 */
422    TReAssembleTmr reAssemTmr;           /* T_reassembling Timer in msec*/
423    TStatProhTmr   statProhTmr;          /* T_status_prohibit Timer in msec*/
424
425 }UlAmCfg;
426
427 typedef struct dlAmCfg
428 {
429    SnLenAm        snLenDl;             /* Sequence Number length in bits. Allowed values are 12 and 18 */
430    TpollReTxTmr   pollRetxTmr;         /* T_poll_retransmit Timer in msec */
431    PollPdu        pollPdu;             /* Used to trigger a poll for every pollPdu.*/
432    PollBytes      pollByte;            /* Poll_Byte in bytes. */
433    MaxRetxTh      maxRetxTh;           /* Max_Retx_Threshold */
434  
435 }DlAmCfg;
436
437 typedef struct dlUmCfg
438 {
439    SnLenUm        snLenDlUm;             /* Sequence Number length in bits. Allowed values are 6 and 12 */
440
441 }DlUmCfg;
442
443 typedef struct ulUmCfg
444 {
445    SnLenUm        snLenUlUm;             /* Sequence Number length in bits. Allowed values are 6 and 12 */
446    TReAssembleTmr reAssemTmr;            /* T_reassembling Timer in msec*/
447
448 }UlUmCfg;
449
450 typedef struct amBearerCfg
451 {
452    UlAmCfg  ulAmCfg;
453    DlAmCfg  dlAmCfg;
454 }AmBearerCfg;
455
456 typedef struct umBiDirBearerCfg
457 {
458    UlUmCfg  ulUmCfg;
459    DlUmCfg  dlUmCfg;
460 }UmBiDirBearerCfg;
461
462 typedef struct umUniDirUlBearerCfg
463 {
464    UlUmCfg  ulUmCfg;
465 }UmUniDirUlBearerCfg;
466
467 typedef struct umUniDirDlBearerCfg
468 {
469    DlUmCfg  dlUmCfg;
470 }UmUniDirDlBearerCfg;
471
472 /* Spec Ref: 38.331, 6.3.2 RLC-BearerConfig */
473 typedef struct rlcBearerCfg
474 {
475    ConfigType   configType;
476    uint8_t      rbId;
477    uint8_t      rbType;
478    uint8_t      lcId;
479    uint8_t      lcType;
480    RlcMode      rlcMode;
481    union
482    {
483       AmBearerCfg         *amCfg;
484       UmBiDirBearerCfg    *umBiDirCfg;
485       UmUniDirUlBearerCfg *umUniDirUlCfg;
486       UmUniDirDlBearerCfg *umUniDirDlCfg;
487    }u;
488 }RlcBearerCfg;
489
490 typedef struct rlcUeCfg
491 {
492    uint16_t     cellId;
493    uint8_t      ueIdx;
494    uint8_t      numLcs;
495    RlcBearerCfg rlcLcCfg[MAX_NUM_LC];
496    UeCfgState rlcUeCfgState; /* InActive / Completed */
497 }RlcUeCfg;
498
499 typedef struct rlcUeCfgRsp
500 {
501    uint16_t       cellId;
502    uint16_t       ueIdx;
503    RlcRsp         result;
504    FailureReason  reason;
505 }RlcUeCfgRsp;
506
507 /* UL RRC Message from RLC to DU APP */
508 typedef struct ulRrcMsgInfo
509 {
510    uint16_t   cellId;       /* Cell Id */
511    uint16_t   ueIdx;        /* UE Index */
512    uint8_t    lcId;         /* Logical channel Id */
513    uint16_t   msgLen;       /* RRC message length (in bytes) */
514    uint8_t    *rrcMsg;      /* RRC Message (UL-DCCH Message) */
515 }RlcUlRrcMsgInfo;
516
517 /* UL User Data from RLC to DU APP */
518 typedef struct ulUserDatInfo
519 {
520    uint16_t   cellId;       /* Cell Id */
521    uint16_t   ueIdx;        /* UE Index */
522    uint8_t    rbId;
523    uint16_t   msgLen;       /* User data length (in bytes) */
524    uint8_t    *userData;    /* User data (UL-DTCH Message) */
525 }RlcUlUserDatInfo;
526
527 /* DL RRC Message from DU APP to RLC */
528 typedef struct dlRrcMsgInfo
529 {
530    uint16_t   cellId;         /* Cell Id */
531    uint16_t   ueIdx;          /* UE index */
532    uint8_t    rbType;         /* Radio Bearer Type */
533    uint8_t    rbId;           /* Radio Bearer Id */
534    uint8_t    lcType;         /* Logical channel type */
535    uint8_t    lcId;           /* Logical channel Id */
536    bool       execDup;        /* Execution duplication enabled */
537    bool       deliveryStaRpt;  /* Reporting of delivery status by RLC to DU-APP enabled */
538    uint16_t   msgLen;         /* RRC Message length */
539    uint8_t    *rrcMsg;        /* RRC Message (DL-DCCH Message) */
540 }RlcDlRrcMsgInfo;
541
542 /* DL RRC Message Rsp From RLC to DU APP */
543 typedef struct dlRrcMsgRsp
544 {
545    uint16_t   cellId;         /* Cell Id */
546    uint16_t   crnti;          /* UE index */
547    DlMsgState state;         /* Dl RRC Msg State */
548 }RlcDlRrcMsgRsp;
549
550 /* RRC delivery message from RLC to DU APP */
551 typedef struct rrcDeliveryStatus
552 {
553    uint16_t  deliveryStatus;
554    uint16_t  triggeringMessage;
555 }RrcDeliveryStatus;
556
557 typedef struct rrcDeliveryReportInfo
558 {
559    uint16_t  cellId;
560    uint16_t  ueIdx;
561    uint8_t   srbId;
562    RrcDeliveryStatus  rrcDeliveryStatus;
563 }RrcDeliveryReport;
564
565 /* Function Pointers */
566 /* UE create Request from DU APP to RLC*/
567 typedef uint8_t (*DuRlcUeCreateReq) ARGS((
568    Pst           *pst,
569    RlcUeCfg      *ueCfg ));
570
571 /* UE Cfg Response from RLC to DU APP*/
572 typedef uint8_t (*RlcDuUeCfgRsp) ARGS((
573    Pst          *pst,
574    RlcUeCfgRsp  *ueCfgRsp));
575
576 /* UL RRC Message from RLC to DU APP */
577 typedef uint8_t (*RlcUlRrcMsgToDuFunc) ARGS((
578    Pst           *pst,
579    RlcUlRrcMsgInfo *ulRrcMsgInfo));
580
581 /* DL RRC Message from DU APP to RLC */
582 typedef uint8_t (*DuDlRrcMsgToRlcFunc) ARGS((
583    Pst           *pst,
584    RlcDlRrcMsgInfo *dlRrcMsgInfo));
585
586 /* RRC delivery message from RLC to DU APP */
587 typedef uint8_t (*RlcRrcDeliveryReportToDuFunc) ARGS((
588    Pst           *pst,
589    RrcDeliveryReport *rrcDeliveryReport));
590
591 typedef uint8_t (*DuRlcUeReconfigReq) ARGS((
592    Pst           *pst,
593    RlcUeCfg      *ueCfg ));
594
595 /* DL RRC Message from RLC to DU APP */
596 typedef uint8_t (*RlcDlRrcMsgRspToDuFunc) ARGS((
597    Pst           *pst,
598    RlcDlRrcMsgRsp *dlRrcMsgRsp));
599
600 /* UL User data from RLC to DU APP */
601 typedef uint8_t (*RlcUlUserDataToDuFunc) ARGS((
602    Pst           *pst,
603    RlcUlUserDatInfo *ulUserData));
604
605 /* Pack/Unpack function declarations */
606 uint8_t packDuRlcUeCreateReq(Pst *pst, RlcUeCfg *ueCfg);
607 uint8_t unpackRlcUeCreateReq(DuRlcUeCreateReq func, Pst *pst, Buffer *mBuf);
608 uint8_t packRlcDuUeCfgRsp(Pst *pst, RlcUeCfgRsp *ueCfgRsp);
609 uint8_t unpackRlcUeCfgRsp(RlcDuUeCfgRsp func, Pst *pst, Buffer *mBuf);
610 uint8_t packRlcUlRrcMsgToDu(Pst *pst, RlcUlRrcMsgInfo *ulRrcMsgInfo);
611 uint8_t unpackRlcUlRrcMsgToDu(RlcUlRrcMsgToDuFunc func, Pst *pst, Buffer *mBuf);
612 uint8_t packDlRrcMsgToRlc(Pst *pst, RlcDlRrcMsgInfo *dlRrcMsgInfo);
613 uint8_t unpackDlRrcMsgToRlc(DuDlRrcMsgToRlcFunc func, Pst *pst, Buffer *mBuf);
614 uint8_t packRrcDeliveryReportToDu(Pst *pst, RrcDeliveryReport *rrcDeliveryReport);
615 uint8_t unpackRrcDeliveryReportToDu(RlcRrcDeliveryReportToDuFunc func,Pst *pst, Buffer *mBuf);
616 uint8_t packDuRlcUeReconfigReq(Pst *pst, RlcUeCfg *ueCfg);
617 uint8_t unpackRlcUeReconfigReq(DuRlcUeReconfigReq func, Pst *pst, Buffer *mBuf);
618 uint8_t packRlcDlRrcMsgRspToDu(Pst *pst, RlcDlRrcMsgRsp *dlRrcMsgRsp);
619 uint8_t unpackRlcDlRrcMsgRspToDu(RlcDlRrcMsgRspToDuFunc func, Pst *pst, Buffer *mBuf);
620 uint8_t packRlcUlUserDataToDu(Pst *pst, RlcUlUserDatInfo *ulUserData);
621 uint8_t unpackRlcUlUserDataToDu(RlcUlUserDataToDuFunc func, Pst *pst, Buffer *mBuf);
622
623 /* Event Handler function declarations */
624 uint8_t RlcProcUeCreateReq(Pst *pst, RlcUeCfg *ueCfg);
625 uint8_t DuProcRlcUeCfgRsp(Pst *pst, RlcUeCfgRsp *cfgRsp);
626 uint8_t DuProcRlcUlRrcMsgTrans(Pst *pst, RlcUlRrcMsgInfo *ulRrcMsgInfo);
627 uint8_t RlcProcDlRrcMsgTransfer(Pst *pst, RlcDlRrcMsgInfo *dlRrcMsgInfo);
628 uint8_t DuProcRlcRrcDeliveryReport(Pst *pst, RrcDeliveryReport *rrcDeliveryReport);
629 uint8_t RlcProcUeReconfigReq(Pst *pst, RlcUeCfg *ueCfg);
630 uint8_t DuProcRlcDlRrcMsgRsp(Pst *pst, RlcDlRrcMsgRsp *dlRrcMsg);
631 uint8_t DuProcRlcUlUserDataTrans(Pst *pst, RlcUlUserDatInfo *ulUserData);
632
633 #endif /* RLC_INF_H */
634
635 /**********************************************************************
636          End of file
637 **********************************************************************/