[JIRA ID: ODUHIGH-242] RB configuration for Ue Context Setup for RLC
[o-du/l2.git] / src / cm / du_app_mac_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 MAC */
20 #ifndef __MACINT_H__
21 #define __MACINT_H__
22
23 #define NUM_NUMEROLOGY 5  /* Number of numerology */
24 #define MAXIMUM_TDD_PERIODICITY 5
25 #define MAX_SYMB_PER_SLOT 14 
26
27 #define NUM_SSB         1       /* max value is 64 */
28 #define SSB_MASK_SIZE   1       /* SSB mask size is 32bit for sub6 */
29 #define SIB1_NEW_TX_PERIOD      160
30 #define SIB1_REPETITION_PERIOD   20
31 #define CORESET_0_INDEX      0
32 #define CORESET_1_INDEX      1
33 #define CORESET_2_INDEX      2
34 #define CORESET_3_INDEX      3
35 #define CORESET_4_INDEX      4
36 #define SEARCHSPACE_0_INDEX   0
37 #define SEARCHSPACE_1_INDEX   1
38 #define SEARCHSPACE_2_INDEX   2
39 #define SEARCHSPACE_3_INDEX   3
40 #define SEARCHSPACE_4_INDEX   4
41 #define SS_MONITORING_SLOT_SL1   0 /* all slots */
42 #define SS_MONITORING_SYMBOL     0x2000; /* symbol-0, set 14th bit */
43 #define SIB1_MCS  4
44
45 /* Macro for Ue Context */
46 #define MAX_NUM_SR_CFG_PER_CELL_GRP 8   /* Max number of scheduling request config per cell group */
47 #define MAC_NUM_TAGS 4                  /* Max number of timing advance groups */
48 #define MAX_NUM_BWP  4                  /* Max number of BWP per serving cell */
49 #define MAX_NUM_CRSET  3                /* Max number of control resource set in add/modify/release list */
50 #define MAX_NUM_SEARCH_SPC  10          /* Max number of search space in add/modify/release list */
51 #define MONITORING_SYMB_WITHIN_SLOT_SIZE 2  /* i.e. 2 bytes because size of monitoring symbols within slot is 14 bits */
52 #define MAX_NUM_DL_ALLOC 16             /* Max number of pdsch time domain downlink allocation */
53 #define MAX_NUM_UL_ALLOC 16             /* Max number of pusch time domain uplink allocation */
54 #define SD_SIZE   3                     /* Max size of Slice Differentiator in S-NSSAI */
55
56 #define MAX_NUM_SRB    8
57 #define MAX_NUM_DRB    64
58 #define MAX_NUM_SCELL  32
59
60 /* Event IDs */
61 #define EVENT_MAC_CELL_CONFIG_REQ    200
62 #define EVENT_MAC_CELL_CONFIG_CFM    201
63 #define EVENT_MAC_CELL_START_REQ     202
64 #define EVENT_MAC_CELL_STOP_REQ      203
65 #define EVENT_MAC_SLOT_IND           204
66 #define EVENT_MAC_STOP_IND           205
67 #define EVENT_MAC_UL_CCCH_IND        206
68 #define EVENT_MAC_DL_CCCH_IND        207
69 #define EVENT_MAC_UE_CONFIG_REQ      208
70 #define EVENT_MAC_UE_CONFIG_RSP      209
71 #define EVENT_MAC_UE_RECONFIG_REQ    210
72 #define EVENT_MAC_UE_RECONFIG_RSP    211
73
74 typedef enum
75 {
76    MAC_DU_APP_RSP_NOK,
77    MAC_DU_APP_RSP_OK
78 }MacRsp;
79
80 typedef enum
81 {
82    DUP_MODE_FDD,
83    DUP_MODE_TDD
84 }DuplexMode;
85
86 typedef enum
87 {
88    MAC_GEN_FULL_PBCH_PAYLD,   /* MAC generated the full PBCH Payload */
89    PHY_GEN_TIMING_PBCH_BIT,   /* PHY generates the timing PBCH bits */
90    PHY_GEN_FULL_PBCH_PAYLD    /* PHY generates full PBCH payload */
91 }BchPduOpt;
92
93 typedef enum
94 {
95    LONG_SEQUENCE,
96    SHORT_SEQUENCE
97 }PrachSeqLen;
98
99 typedef enum
100 {
101    UNRESTRICTED,
102    RESTRICTED_SET_TYPE_A,
103    RESTRICTED_SET_TYPE_B
104 }RstSetCfg;
105
106 typedef enum
107 {
108    DONT_REPORT_RSSI,
109    RSSI_UNIT_DBM,
110    RSSI_UNIT_DBFS
111 }RSSIMeasUnit;
112
113 typedef enum
114 {
115    DL_SLOT,
116    UL_SLOT,
117    GUARD_SLOT
118 }SlotConfig;
119
120 typedef enum
121 {
122    TX_PRDCTY_MS_0P5,
123    TX_PRDCTY_MS_0P625,
124    TX_PRDCTY_MS_1,
125    TX_PRDCTY_MS_1P25,
126    TX_PRDCTY_MS_2,
127    TX_PRDCTY_MS_2P5,
128    TX_PRDCTY_MS_5,
129    TX_PRDCTY_MS_10
130 }DlUlTxPeriodicity;
131
132 typedef enum
133 {
134    BETA_PSS_0DB,
135    BETA_PSS_1DB
136 }BetaPss;
137
138 typedef enum 
139 {
140    SSB_PRDCTY_MS_5,
141    SSB_PRDCTY_MS_10,
142    SSB_PRDCTY_MS_20,
143    SSB_PRDCTY_MS_40,
144    SSB_PRDCTY_MS_80,
145    SSB_PRDCTY_MS_160
146 }SSBPeriod;
147
148 typedef enum
149 {
150    RRC_REJECT,
151    RRC_SETUP
152 }DlCcchMsgType;
153
154 /* Enums for Ue Create Request */
155
156 /* SR PROHIBIT TIMER */
157 typedef enum
158 {
159    SR_PROHIBIT_MS_1,
160    SR_PROHIBIT_MS_2,
161    SR_PROHIBIT_MS_4,
162    SR_PROHIBIT_MS_8,
163    SR_PROHIBIT_MS_16,
164    SR_PROHIBIT_MS_32,
165    SR_PROHIBIT_MS_64,
166    SR_PROHIBIT_MS_128
167 }SrProhibitTimer;
168
169 typedef enum
170 {
171    SR_TRANS_MAX_N_4,
172    SR_TRANS_MAX_N_8,
173    SR_TRANS_MAX_N_16,
174    SR_TRANS_MAX_N_32,
175    SR_TRANS_MAX_N_64,
176    SR_TRANS_MAX_spare3,
177    SR_TRANS_MAX_spare2,
178    SR_TRANS_MAX_spare1
179 }SrTransMax;
180
181 typedef enum
182 {
183    TIME_ALIGNMENT_TIMER_MS_500,
184    TIME_ALIGNMENT_TIMER_MS_750,
185    TIME_ALIGNMENT_TIMER_MS_1280,
186    TIME_ALIGNMENT_TIMER_MS_1920,
187    TIME_ALIGNMENT_TIMER_MS_2560,
188    TIME_ALIGNMENT_TIMER_MS_5120,
189    TIME_ALIGNMENT_TIMER_MS_10240,
190    TIME_ALIGNMENT_TIMER_INFINITY
191 }TimeAlignmentTimer;
192
193 typedef enum
194 {
195    BSR_PERIODIC_TIMER_SF_1,
196    BSR_PERIODIC_TIMER_SF_5,
197    BSR_PERIODIC_TIMER_SF_10,
198    BSR_PERIODIC_TIMER_SF_16,
199    BSR_PERIODIC_TIMER_SF_20,
200    BSR_PERIODIC_TIMER_SF_32,
201    BSR_PERIODIC_TIMER_SF_40,
202    BSR_PERIODIC_TIMER_SF_64,
203    BSR_PERIODIC_TIMER_SF_80,
204    BSR_PERIODIC_TIMER_SF_128,
205    BSR_PERIODIC_TIMER_SF_160,
206    BSR_PERIODIC_TIMER_SF_320,
207    BSR_PERIODIC_TIMER_SF_640,
208    BSR_PERIODIC_TIMER_SF_1280,
209    BSR_PERIODIC_TIMER_SF_2560,
210    BSR_PERIODIC_TIMER_INFINITY
211 }BsrPeriodicTimer;
212
213 typedef enum
214 {
215    BSR_RETX_TIMER_SF_10,
216    BSR_RETX_TIMER_SF_20,
217    BSR_RETX_TIMER_SF_40,
218    BSR_RETX_TIMER_SF_80,
219    BSR_RETX_TIMER_SF_160,
220    BSR_RETX_TIMER_SF_320,
221    BSR_RETX_TIMER_SF_640,
222    BSR_RETX_TIMER_SF_1280,
223    BSR_RETX_TIMER_SF_2560,
224    BSR_RETX_TIMER_SF_5120,
225    BSR_RETX_TIMER_SF_10240,
226    BSR_RETX_TIMER_SPARE_5,
227    BSR_RETX_TIMER_SPARE_4,
228    BSR_RETX_TIMER_SPARE_3,
229    BSR_RETX_TIMER_SPARE_2,
230    BSR_RETX_TIMER_SPARE_1
231 }BsrReTxTimer;
232
233 typedef enum
234 {
235    BSR_SR_DELAY_TMR_20,
236    BSR_SR_DELAY_TMR_40,
237    BSR_SR_DELAY_TMR_64,
238    BSR_SR_DELAY_TMR_128,
239    BSR_SR_DELAY_TMR_512,
240    BSR_SR_DELAY_TMR_1024,
241    BSR_SR_DELAY_TMR_2560,
242    BSR_SR_DELAY_TMR_SPARE_1
243 }BsrSrDelayTimer;
244 typedef enum
245 {
246    PHR_PERIODIC_TIMER_SF_10,
247    PHR_PERIODIC_TIMER_SF_20,
248    PHR_PERIODIC_TIMER_SF_50,
249    PHR_PERIODIC_TIMER_SF_100,
250    PHR_PERIODIC_TIMER_SF_200,
251    PHR_PERIODIC_TIMER_SF_500,
252    PHR_PERIODIC_TIMER_SF_1000,
253    PHR_PERIODIC_TIMER_INFINITY
254 }PhrPeriodicTimer;
255
256 typedef enum
257 {
258    PHR_PROHIBIT_TIMER_SF_0,
259    PHR_PROHIBIT_TIMER_SF_10,
260    PHR_PROHIBIT_TIMER_SF_20,
261    PHR_PROHIBIT_TIMER_SF_50,
262    PHR_PROHIBIT_TIMER_SF_100,
263    PHR_PROHIBIT_TIMER_SF_200,
264    PHR_PROHIBIT_TIMER_SF_500,
265    PHR_PROHIBIT_TIMER_SF_1000
266 }PhrProhibitTimer;
267
268 typedef enum
269 {
270    PHR_TX_PWR_FACTOR_CHANGE_DB_1,
271    PHR_TX_PWR_FACTOR_CHANGE_DB_3,
272    PHR_TX_PWR_FACTOR_CHANGE_DB_6,
273    PHR_TX_PWR_FACTOR_CHANGE_INFINITY
274 }PhrTxPwrFactorChange;
275
276 typedef enum
277 {
278    PHR_MODE_OTHER_CG_REAL,
279    PHR_MODE_OTHER_CG_VIRTUAL
280 }PhrModeOtherCG;
281
282 typedef enum
283 {
284    PDSCH_HARQ_ACK_CODEBOOK_SEMISTATIC,
285    PDSCH_HARQ_ACK_CODEBOOK_DYNAMIC
286 }PdschHarqAckCodebook;
287
288 typedef enum
289 {
290    NUM_HARQ_PROC_FOR_PDSCH_N_2,
291    NUM_HARQ_PROC_FOR_PDSCH_N_4,
292    NUM_HARQ_PROC_FOR_PDSCH_N_6,
293    NUM_HARQ_PROC_FOR_PDSCH_N_10,
294    NUM_HARQ_PROC_FOR_PDSCH_N_16
295 }NumHarqProcForPdsch;
296
297 typedef enum
298 {
299    MAX_CODE_BLOCK_GROUP_PER_TB_N_2,
300    MAX_CODE_BLOCK_GROUP_PER_TB_N_4,
301    MAX_CODE_BLOCK_GROUP_PER_TB_N_6,
302    MAX_CODE_BLOCK_GROUP_PER_TB_N_8
303 }MaxCodeBlkGrpPerTB;
304
305 typedef enum
306 {
307    PDSCH_X_OVERHEAD_6,
308    PDSCH_X_OVERHEAD_12,
309    PDSCH_X_OVERHEAD_18
310 }PdschXOverhead;
311
312 typedef enum
313 {
314    TRANSFORM_PRECODER_ENABLED,
315    TRANSFORM_PRECODER_DISABLED
316 }TransformPrecoder;
317
318 typedef enum 
319 {
320    CCE_REG_MAPPINGTYPE_PR_INTERLEAVED = 1,
321    CCE_REG_MAPPINGTYPE_PR_NONINTERLEAVED
322 }REGMappingType;
323
324 typedef enum
325 {
326    SLOTPERIODICITYANDOFFSET_PR_SL1 = 1,
327    SLOTPERIODICITYANDOFFSET_PR_SL2,
328    SLOTPERIODICITYANDOFFSET_PR_SL4,
329    SLOTPERIODICITYANDOFFSET_PR_SL5,
330    SLOTPERIODICITYANDOFFSET_PR_SL8,
331    SLOTPERIODICITYANDOFFSET_PR_SL10,
332    SLOTPERIODICITYANDOFFSET_PR_SL16,
333    SLOTPERIODICITYANDOFFSET_PR_SL20,
334    SLOTPERIODICITYANDOFFSET_PR_SL40,
335    SLOTPERIODICITYANDOFFSET_PR_SL80,
336    SLOTPERIODICITYANDOFFSET_PR_SL160,
337    SLOTPERIODICITYANDOFFSET_PR_SL320,
338    SLOTPERIODICITYANDOFFSET_PR_SL640,
339    SLOTPERIODICITYANDOFFSET_PR_SL1280,
340    SLOTPERIODICITYANDOFFSET_PR_SL2560
341 }MSlotPeriodAndOffset;
342
343 typedef enum
344 {
345    SAMEASREG_BUNDLE,
346    ALL_CONTIGUOUS_RBS
347 }PrecoderGranul;
348
349 typedef enum
350 {
351    SEARCHSPACETYPE_PR_COMMON = 1,
352    SEARCHSPACETYPE_PR_UE_SPECIFIC
353 }SearchSpaceType;
354
355 typedef enum
356 {
357    QOS_NON_DYNAMIC = 1,
358    QOS_DYNAMIC
359 }QosType;
360
361 typedef enum
362 {
363    AGGREGATIONLEVEL_N0  = 0,  
364    AGGREGATIONLEVEL_N1  = 1,
365    AGGREGATIONLEVEL_N2  = 2,
366    AGGREGATIONLEVEL_N3  = 3,
367    AGGREGATIONLEVEL_N4  = 4,
368    AGGREGATIONLEVEL_N5  = 5,
369    AGGREGATIONLEVEL_N6  = 6,
370    AGGREGATIONLEVEL_N8  = 7
371 }AggrLevel;
372
373 typedef enum
374 {
375    ADDITIONALPOSITION_POS0,
376    ADDITIONALPOSITION_POS1,
377    ADDITIONALPOSITION_POS3
378 }AddPosType;
379
380 typedef enum
381 {
382    MAPPING_TYPEA,
383    MAPPING_TYPEB
384 }CommonMappingType;
385
386 typedef enum
387 {
388    RESOURCEALLOCATION_TYPE0,
389    RESOURCEALLOCATION_TYPE1,
390    RESOURCEALLOCATION_DYNAMICSWITCH
391 }ResAllocType;
392
393 typedef enum
394 {
395    RBG_SIZE_CONFIG1,
396    RBG_SIZE_CONFIG2
397 }RBGSize;
398
399 typedef enum
400 {
401    CODEWORDS_SCHED_BY_DCI_N1,
402    CODEWORDS_SCHED_BY_DCI_N2
403 }CodeWordsSchedDci;
404
405 typedef enum
406 {
407    TYPE_STATIC_BUNDLING = 1,
408    TYPE_DYNAMIC_BUNDLING
409 }BundlingType;
410
411 typedef enum
412 {
413    SET2_SIZE_N4,
414    SET2_SIZE_WIDEBAND
415 }BundlingSizeSet2;
416
417 typedef enum
418 {
419    SET1_SIZE_N4,
420    SET1_SIZE_WIDEBAND,
421    SET1_SIZE_N2_WIDEBAND,
422    SET1_SIZE_N4_WIDEBAND
423 }BundlingSizeSet1;
424
425 typedef enum
426 {
427    LC_PRIORITY_1 = 1,
428    LC_PRIORITY_2,
429    LC_PRIORITY_3
430 }LcPriority;
431
432 typedef enum
433 {
434   PBR_KBPS_0,
435   PBR_KBPS_8,
436   PBR_KBPS_16,
437   PBR_KBPS_32,
438   PBR_KBPS_64,
439   PBR_KBPS_128,
440   PBR_KBPS_256,
441   PBR_KBPS_512,
442   PBR_KBPS_1024,
443   PBR_KBPS_2048,
444   PBR_KBPS_4096,
445   PBR_KBPS_8192,
446   PBR_KBPS_16384,
447   PBR_KBPS_32768,
448   PBR_KBPS_65536,
449   PBR_KBPS_INFINITY
450 }PBitRate;
451
452 typedef enum
453 {
454    BSD_MS_5,
455    BSD_MS_10,
456    BSD_MS_20,
457    BSD_MS_50,
458    BSD_MS_100,
459    BSD_MS_150,
460    BSD_MS_300,
461    BSD_MS_500,
462    BSD_MS_1000,
463    BSD_SPARE_7,
464    BSD_SPARE_6,
465    BSD_SPARE_5,
466    BSD_SPARE_4,
467    BSD_SPARE_3,
468    BSD_SPARE_2,
469    BSD_SPARE_1
470
471 }BucketSizeDur;
472
473 typedef enum
474 {
475    RADIO_NW_LAYER_FAIL,
476    TRANSPORT_LAYER_FAIL,
477    PROTOCOL_FAIL,
478    MISCELLANEOUS
479 }CauseGrp;
480
481 typedef enum
482 {
483    UNSPECIFIED_RADIO_NW_CAUSE,
484    RL_FAIL_RLC,
485    UNKNOWN_GNB_CU_UE_F1AP_ID,
486    ALREADY_ALLOCATED_GNB_CU_UE_F1AP_ID,
487    UNKNOWN_GNB_DU_UE_F1AP_ID,
488    ALREADY_ALLOCATED_GNB_DU_UE_F1AP_ID,
489    UNKNOWN_UE_F1AP_ID_PAIR,
490    INCONSISTENT_UE_F1AP_ID_PAIR,
491    INTERACTION_WITH_OTHER_PROCEDURE,
492    UNSUPPORTED_QCI,
493    ACTION_REQUIRED_FOR_RADIO_REASONS,
494    RADIO_RESOURCES_UNAVAILABLE,
495    CANCELLED_PROCEDURE,
496    RELEASE_NORMAL,
497    CELL_UNAVAILABLE,
498    OTHER_RL_FAILURE,
499    UE_REJECTION,
500    RESOURCES_UNAVAILABLE_FOR_SLICE
501 }RadioNwLyrCause;
502
503 typedef enum
504 {
505    UNSPECIFIED_TRANSPORT_LAYER_CAUSE,
506    TRANSPORT_RESOURCE_UNAVAILABLE
507 }TransLyrCause;
508
509 typedef enum
510 {
511    TRANSFER_SYNTAX_ERROR,
512    ABSTRACT_SYNTAX_ERROR_REJECT,
513    ABSTRACT_SYNTAX_ERROR_IGNORE_AND_REJECT,
514    INCOMPATIBLE_MESSAGE_FOR_RECEIVER_STATE,
515    SEMANTIC_ERR,
516    ABSTRAXCT_SYNTAX_ERROR_FALSELY_CONSTRUCTED_MSG,
517    UNSPECIFIED_PROTOCOL_CAUSE
518 }ProtCause;
519
520 typedef enum
521 {
522    CONTROL_PROCESSING_OVERLOAD,
523    NOT_ENOUGH_USER,
524    PLANE_PROCESSING_RESOURCES,
525    HARDWARE_FAIL,
526    INTERVENTION_BY_O_AND_M,
527    UNSPECIFIED_MISC_CAUSE
528 }MiscFailCause;
529
530 typedef struct failureCause
531 {
532    CauseGrp   type;
533    union
534    {
535       RadioNwLyrCause   radioNwCause;
536       TransLyrCause     transportCause;
537       ProtCause         protcolCause;
538       MiscFailCause     miscCause;
539    }u;
540 }FailureCause;
541
542 typedef struct carrierCfg
543 {
544    bool  pres;
545    uint16_t   bw;             /* DL/UL bandwidth */
546    uint32_t   freq;           /* Absolute frequency of DL/UL point A in KHz */
547    uint16_t   k0[NUM_NUMEROLOGY];          /* K0 for DL/UL */
548    uint16_t   gridSize[NUM_NUMEROLOGY];    /* DL/UL Grid size for each numerologies */
549    uint16_t   numAnt;         /* Number of Tx/Rx antennas */
550 }CarrierCfg;
551
552 typedef struct ssbCfg
553 {
554    uint32_t    ssbPbchPwr;       /* SSB block power */
555    BchPduOpt   bchPayloadFlag;   /* Options for generation of payload */
556    uint8_t     scsCmn;           /* subcarrier spacing for common */
557    uint16_t    ssbOffsetPointA;  /* SSB subcarrier offset from point A */
558    BetaPss     betaPss;
559    SSBPeriod   ssbPeriod;        /* SSB Periodicity in msec */
560    uint8_t     ssbScOffset;       /* Subcarrier Offset */
561    uint8_t     mibPdu[3];           /* MIB payload */
562    uint32_t    ssbMask[SSB_MASK_SIZE];      /* Bitmap for actually transmitted SSB. */
563    uint8_t     beamId[NUM_SSB];
564    bool        multCarrBand;     /* Multiple carriers in a band */
565    bool        multCellCarr;     /* Multiple cells in single carrier */
566 }SsbCfg;
567
568 typedef struct fdmInfo
569 {
570    uint16_t   rootSeqIdx;        /* Root sequence index */
571    uint8_t    numRootSeq;        /* Number of root sequences required for FD */
572    uint16_t   k1;                /* Frequency Offset for each FD */
573    uint8_t    zeroCorrZoneCfg;   /* Zero correlation zone cofig */
574    uint8_t    numUnusedRootSeq;  /* Number of unused root sequence */
575    uint8_t    *unsuedRootSeq;     /* Unused root sequence per FD */
576 }PrachFdmInfo;
577
578 typedef struct prachCfg
579 {
580    bool          pres;
581    uint8_t       prachCfgIdx;         /* PRACH Cfg Index */
582    PrachSeqLen   prachSeqLen;         /* RACH Sequence length: Long/short */
583    uint8_t       prachSubcSpacing;    /* Subcarrier spacing of RACH */
584    RstSetCfg     prachRstSetCfg;      /* PRACH restricted set config */
585    uint16_t      msg1FreqStart;       /* Msg1-FrequencyStart */
586    uint8_t       msg1Fdm;             /* PRACH FDM (1,2,4,8) */
587    uint8_t       rootSeqLen;          /* Root sequence length */
588    PrachFdmInfo  fdm[8];              /* FDM info */
589    uint8_t       ssbPerRach;          /* SSB per RACH occassion */
590    bool          prachMultCarrBand;   /* Multiple carriers in Band */
591    uint8_t       prachRestrictedSet; /* Support for PRACH restricted set */
592    uint8_t       raContResTmr;        /* RA Contention Resoultion Timer */
593    uint8_t       rsrpThreshSsb;       /* RSRP Threshold SSB */
594    uint8_t       raRspWindow;         /* RA Response Window */
595 }PrachCfg;
596
597 typedef struct tddCfg
598 {
599    bool               pres;
600    DlUlTxPeriodicity  tddPeriod;      /* DL UL Transmission periodicity */
601    SlotConfig         slotCfg[MAXIMUM_TDD_PERIODICITY][MAX_SYMB_PER_SLOT]; 
602 }TDDCfg;
603
604 typedef struct sib1CellCfg
605 {
606    uint8_t  *sib1Pdu;
607    uint16_t sib1PduLen;
608    uint16_t sib1NewTxPeriod;
609    uint16_t sib1RepetitionPeriod;
610    uint8_t coresetZeroIndex;     /* derived from 4 LSB of pdcchSib1 present in MIB */
611    uint8_t searchSpaceZeroIndex; /* derived from 4 MSB of pdcchSib1 present in MIB */
612    uint16_t sib1Mcs;
613 } Sib1CellCfg; 
614
615 typedef struct bwpParams
616 {
617    uint16_t firstPrb;
618    uint16_t numPrb;
619    uint8_t  scs;
620    uint8_t  cyclicPrefix;
621 }BwpParams;
622
623 typedef struct candidatesInfo
624 {
625    uint8_t aggLevel1;
626    uint8_t aggLevel2;
627    uint8_t aggLevel4;
628    uint8_t aggLevel8;
629    uint8_t aggLevel16;
630 }CandidatesInfo;
631
632 typedef struct searchSpaceCfg
633 {
634    uint8_t searchSpaceId;
635    uint8_t coresetId;
636    uint16_t monitoringSlot;
637    uint16_t duration;
638    uint16_t monitoringSymbol;
639    CandidatesInfo candidate;
640 }SearchSpaceCfg;
641
642 typedef struct pdcchConfigCommon
643 {
644    /* only one search space is configured during SIB1 */
645    SearchSpaceCfg commonSearchSpace;
646    uint8_t raSearchSpaceId;
647 }PdcchConfigCommon;
648
649 typedef struct pdschConfigCommon
650 {
651    uint8_t k0;
652    uint8_t mappingType;
653    uint8_t startSymbol;
654    uint8_t lengthSymbol;
655 }PdschConfigCommon;
656
657 typedef struct pucchConfigCommon
658 {
659    uint8_t pucchResourceCommon;
660    uint8_t pucchGroupHopping;
661 }PucchConfigCommon;
662
663 typedef struct puschConfigCommon
664 {
665    /* PUSCH-TimeDomainResourceAllocation info */
666    uint8_t k2;
667    uint8_t mappingType;
668    uint8_t startSymbol;
669    uint8_t lengthSymbol;
670 }PuschConfigCommon;
671
672 typedef struct bwpDlConfig
673 {
674    BwpParams      bwp;
675    PdcchConfigCommon pdcchCommon;
676    PdschConfigCommon pdschCommon;
677 }BwpDlConfig;
678
679 typedef struct bwpUlConfig
680 {
681    BwpParams      bwp;
682    // rach config common sent in PrachCfg
683    PucchConfigCommon pucchCommon;
684    PuschConfigCommon puschCommon;
685 }BwpUlConfig;
686
687 typedef struct macCellCfg
688 {
689    uint16_t            cellId;           /* Cell Id */
690    uint8_t             numTlv;           /* Number of configuration TLVs */
691    uint8_t             carrierId;        /* Carrired Index */
692    uint16_t            phyCellId;        /* Physical cell id */
693    DuplexMode     dupType;          /* Duplex type: TDD/FDD */
694    CarrierCfg     dlCarrCfg;        /* DL Carrier configuration */
695    CarrierCfg     ulCarrCfg;        /* UL Carrier configuration */
696    bool           freqShft;         /* Indicates presence of 7.5kHz frequency shift */
697    SsbCfg         ssbCfg;           /* SSB configuration */          
698    PrachCfg       prachCfg;         /* PRACH Configuration */
699    TDDCfg         tddCfg;           /* TDD periodicity and slot configuration */
700    RSSIMeasUnit   rssiUnit;         /* RSSI measurement unit */
701    Sib1CellCfg    sib1Cfg;          /* SIB1 config */
702    BwpDlConfig    initialDlBwp;     /* Initial DL BWP */
703    BwpUlConfig    initialUlBwp;     /* Initial UL BWP */
704    uint8_t        dmrsTypeAPos;     /* DMRS Type A position */
705 }MacCellCfg;
706
707 typedef struct macCellCfgCfm
708 {
709    uint16_t            cellId;
710    uint8_t        rsp; 
711 }MacCellCfgCfm;
712
713 typedef struct macCellStartInfo
714 {
715    uint16_t cellId;
716 }MacCellStartInfo;
717
718 typedef struct macCellStopInfo
719 {
720    uint16_t cellId;
721 }MacCellStopInfo;
722
723 typedef struct ulCcchInd
724 {
725    uint16_t cellId;
726    uint16_t crnti;
727    uint16_t ulCcchMsgLen;
728    uint8_t  *ulCcchMsg;
729 }UlCcchIndInfo;
730
731 typedef struct dlCcchInd
732 {
733    uint16_t      cellId;
734    uint16_t      crnti;
735    DlCcchMsgType msgType;
736    uint16_t      dlCcchMsgLen;
737    uint8_t       *dlCcchMsg;
738 }DlCcchIndInfo;
739
740 typedef struct bsrTmrCfg
741 {
742    BsrPeriodicTimer periodicTimer;
743    BsrReTxTimer retxTimer;
744    BsrSrDelayTimer srDelayTimer;
745 }BsrTmrCfg;
746
747
748 /* Info of Scheduling Request to Add/Modify */
749 typedef struct schedReqInfo
750 {
751    uint8_t         schedReqId;
752    SrProhibitTimer srProhibitTmr;
753    SrTransMax      srTransMax;
754 }SchedReqInfo;
755
756 /* Scheduling Request Configuration */
757 typedef struct schedReqCfg
758 {
759    uint8_t       addModListCount;
760    SchedReqInfo  addModList[MAX_NUM_SR_CFG_PER_CELL_GRP];   /* List of Scheduling req to be added/modified */
761    uint8_t       relListCount;
762    uint8_t       relList[MAX_NUM_SR_CFG_PER_CELL_GRP];      /* list of scheduling request Id to be deleted */
763 }SchedReqCfg;
764
765 typedef struct tagInfo
766 {
767    uint8_t tagId;
768    TimeAlignmentTimer timeAlignTimer;
769 }TagInfo;
770
771 typedef struct tagCfg
772 {
773    uint8_t      addModListCount;
774    TagInfo      addModList[MAC_NUM_TAGS];  /* List of Tag to Add/Modify */
775    uint8_t      relListCount;
776    uint8_t      relList[MAC_NUM_TAGS];     /* list of Tag Id to release */
777 }TagCfg;
778
779 typedef struct phrCfg
780 {
781    PhrPeriodicTimer periodicTimer;
782    PhrProhibitTimer prohibitTimer; 
783    PhrTxPwrFactorChange txPowerFactor;
784    bool     multiplePHR;       
785    bool     dummy;
786    bool     phrType2OtherCell;
787    PhrModeOtherCG phrOtherCG;
788 }PhrCfg;
789
790 typedef struct macCellGrpCfg
791 {
792    SchedReqCfg schReqCfg;
793    TagCfg      tagCfg;
794    BsrTmrCfg   bsrTmrCfg;
795    bool        phrCfgSetupPres;   /* true/false: phrCfgSetup/phrCfgRelease */
796    PhrCfg      phrCfg;
797 }MacCellGrpCfg;
798
799 typedef struct phyCellGrpCfg
800 {
801    PdschHarqAckCodebook  pdschHarqAckCodebook;
802    uint8_t    pNrFr1;
803 }PhyCellGrpCfg;
804
805 /* Control resource set info */
806 typedef struct controlRsrcSet
807 {
808    uint8_t     cRSetId;                /* Control resource set id */
809    uint8_t     freqDomainRsrc[FREQ_DOM_RSRC_SIZE];  /* Frequency domain resource */
810    uint8_t     duration;
811    REGMappingType cceRegMappingType;
812    PrecoderGranul precoderGranularity;
813    uint16_t    dmrsScramblingId;
814 }ControlRsrcSet;
815
816 /* Search Space info */
817 typedef struct searchSpace
818 {
819    uint8_t     searchSpaceId;
820    uint8_t     cRSetId;
821    MSlotPeriodAndOffset  mSlotPeriodicityAndOffset;
822    uint8_t     mSymbolsWithinSlot[MONITORING_SYMB_WITHIN_SLOT_SIZE];
823    AggrLevel   numCandidatesAggLevel1;      /* Number of candidates for aggregation level 1 */
824    AggrLevel   numCandidatesAggLevel2;      /* Number of candidates for aggregation level 2 */
825    AggrLevel   numCandidatesAggLevel4;      /* Number of candidates for aggregation level 4 */
826    AggrLevel   numCandidatesAggLevel8;      /* Number of candidates for aggregation level 8 */
827    AggrLevel   numCandidatesAggLevel16;     /* Number of candidates for aggregation level 16 */
828    SearchSpaceType searchSpaceType;
829    uint8_t     ueSpecificDciFormat;
830 }SearchSpace;
831
832 /* PDCCH cofniguration */
833 typedef struct pdcchConfig
834 {
835    uint8_t           numCRsetToAddMod;
836    ControlRsrcSet    cRSetToAddModList[MAX_NUM_CRSET];           /* List of control resource set to add/modify */
837    uint8_t           numCRsetToRel;
838    uint8_t           cRSetToRelList[MAX_NUM_CRSET];              /* List of control resource set to release */
839    uint8_t           numSearchSpcToAddMod;
840    SearchSpace       searchSpcToAddModList[MAX_NUM_SEARCH_SPC];  /* List of search space to add/modify */
841    uint8_t           numSearchSpcToRel;
842    uint8_t           searchSpcToRelList[MAX_NUM_SEARCH_SPC];     /* List of search space to release */
843 }PdcchConfig;
844
845 /* PDSCH time domain resource allocation */
846 typedef struct pdschTimeDomRsrcAlloc
847 {
848    CommonMappingType mappingType;
849    uint8_t           startSymbol;
850    uint8_t           symbolLength;
851    uint8_t           startSymbolAndLength;
852 }PdschTimeDomRsrcAlloc;
853
854
855 typedef struct pdschBundling
856 {
857    struct staticBundling
858    {
859      BundlingSizeSet2 size;
860    }StaticBundling;
861    struct dynamicBundling
862    {
863      BundlingSizeSet1 sizeSet1;
864      BundlingSizeSet2 sizeSet2;
865    }DynamicBundling;
866 }PdschBundling;
867
868 /* DMRS downlink configuration */
869 typedef struct dmrsDlCfg
870 {
871    AddPosType  addPos;       /* DMRS additional position */
872 }DmrsDlCfg;
873
874 /* PDSCH Configuration */
875 typedef struct pdschConfig
876 {
877    DmrsDlCfg               dmrsDlCfgForPdschMapTypeA;
878    ResAllocType            resourceAllocType;
879    uint8_t                 numTimeDomRsrcAlloc;
880    PdschTimeDomRsrcAlloc   timeDomRsrcAllociList[MAX_NUM_DL_ALLOC]; /* PDSCH time domain DL resource allocation list */
881    RBGSize                 rbgSize;
882    CodeWordsSchedDci       numCodeWordsSchByDci;                    /* Number of code words scheduled by DCI */
883    BundlingType            bundlingType;
884    PdschBundling           bundlingInfo;
885 }PdschConfig;
886
887 /* Initial Downlink BWP */
888 typedef struct initialDlBwp
889 {
890    bool          pdcchPresent;
891    PdcchConfig   pdcchCfg;
892    bool          pdschPresent;
893    PdschConfig   pdschCfg;
894 }InitialDlBwp;
895
896 /* BWP Downlink common */
897 typedef struct bwpDlCommon
898 {
899 }BwpDlCommon;
900
901 /* Downlink BWP information */
902 typedef struct dlBwpInfo
903 {
904    uint8_t          bwpId;
905 }DlBwpInfo;
906
907 /* PDCCH Serving Cell configuration */
908 typedef struct pdschServCellCfg
909 {
910    uint8_t              *maxMimoLayers;           
911    NumHarqProcForPdsch  numHarqProcForPdsch;
912    MaxCodeBlkGrpPerTB   *maxCodeBlkGrpPerTb;
913    bool                 *codeBlkGrpFlushInd;
914    PdschXOverhead       *xOverhead;
915 }PdschServCellCfg;
916
917 /* PUCCH Configuration */
918 typedef struct pucchCfg
919 {
920    /* TODO : Not used currently */ 
921 }PucchCfg;
922
923 /* Transform precoding disabled */
924 typedef struct transPrecodDisabled
925 {
926    uint16_t   scramblingId0;
927 }TransPrecodDisabled;
928
929 /* DMRS Uplink configuration */
930 typedef struct dmrsUlCfg
931 {
932    AddPosType            addPos;               /* DMRS additional position */
933    TransPrecodDisabled   transPrecodDisabled;  /* Transform precoding disabled */
934 }DmrsUlCfg;
935
936 /* PUSCH Time Domain Resource Allocation */
937 typedef struct puschTimeDomRsrcAlloc
938 {
939    uint8_t   k2;
940    CommonMappingType   mappingType;
941    uint8_t           startSymbol;
942    uint8_t           symbolLength;
943    uint8_t   startSymbolAndLength;
944 }PuschTimeDomRsrcAlloc;
945
946 /* PUSCH Configuration */
947 typedef struct puschCfg
948 {
949    uint8_t                 dataScramblingId;
950    DmrsUlCfg               dmrsUlCfgForPuschMapTypeA;
951    ResAllocType            resourceAllocType;
952    uint8_t                 numTimeDomRsrcAlloc;
953    PuschTimeDomRsrcAlloc   timeDomRsrcAllocList[MAX_NUM_UL_ALLOC]; /* PUSCH time domain UL resource allocation list */
954    TransformPrecoder       transformPrecoder;
955 }PuschCfg;
956
957 /* Initial Uplink BWP */
958 typedef struct initialUlBwp
959 {
960    bool       pucchPresent;
961    PucchCfg   pucchCfg; 
962    bool       puschPresent;
963    PuschCfg   puschCfg;
964 }InitialUlBwp;
965
966 /* Uplink BWP information */
967 typedef struct ulBwpInfo
968 {
969    uint8_t        bwpId;
970 }UlBwpInfo;
971
972 /* Serving cell configuration */
973 typedef struct servCellCfgInfo
974 {
975    InitialDlBwp       initDlBwp;
976    uint8_t            numDlBwpToAdd;
977    DlBwpInfo          DlBwpToAddList[MAX_NUM_BWP];
978    uint8_t            firstActvDlBwpId;
979    uint8_t            defaultDlBwpId;
980    uint8_t            *bwpInactivityTmr;
981    PdschServCellCfg   pdschServCellCfg;
982    InitialUlBwp       initUlBwp;
983    uint8_t            numUlBwpToAdd;
984    UlBwpInfo          UlBwpToAddList[MAX_NUM_BWP];
985    uint8_t            firstActvUlBwpId;
986 }ServCellCfgInfo;
987
988 /* Special cell configuration */
989 typedef struct spCellCfg
990 {
991    uint8_t           servCellIdx;
992    ServCellCfgInfo   servCellCfg;
993 }SpCellCfg;
994
995 typedef struct maxAggrBitRate
996 {
997    uint32_t ulBits;
998    uint32_t dlBits;
999 }MaxAggrBitRate;
1000
1001 /* Single Network Slice Selection assistance Info */
1002 typedef struct snssai
1003 {
1004    uint8_t sst;                /* Slice Type */
1005    uint8_t sd[SD_SIZE];        /* Slice Differentiator */
1006 }Snssai;
1007
1008 typedef struct nonDynFiveQi
1009 {
1010    uint16_t   fiveQi;
1011    uint8_t    priorLevel;
1012    uint16_t   avgWindow;
1013    uint16_t   maxDataBurstVol;
1014 }NonDynFiveQi;
1015
1016 typedef struct dynFiveQi
1017 {
1018    uint8_t    priorLevel;
1019    uint16_t   packetDelayBudget;
1020    uint8_t    packetErrRateScalar;
1021    uint8_t    packetErrRateExp;
1022    uint16_t   fiveQi;
1023    uint8_t    delayCritical;
1024    uint16_t   avgWindow;
1025    uint16_t   maxDataBurstVol;
1026 }DynFiveQi;
1027
1028 typedef struct ngRanAllocAndRetPri
1029 {
1030    uint8_t priorityLevel;
1031    uint8_t preEmptionCap;
1032    uint8_t preEmptionVul;
1033 }NgRanAllocAndRetPri;
1034
1035 typedef struct grbQosInfo
1036 {
1037    uint32_t maxFlowBitRateDl;
1038    uint32_t maxFlowBitRateUl;
1039    uint32_t guarFlowBitRateDl;
1040    uint32_t guarFlowBitRateUl;
1041 }GrbQosInfo;
1042
1043 typedef struct drbQos
1044 {
1045    QosType  fiveQiType;   /* Dynamic or non-dynamic */ 
1046    union
1047    {
1048       NonDynFiveQi   nonDyn5Qi;
1049       DynFiveQi      dyn5Qi;
1050    }u;
1051    NgRanAllocAndRetPri ngRanRetPri;
1052    GrbQosInfo grbQosInfo;
1053    uint16_t             pduSessionId;
1054    uint32_t             ulPduSessAggMaxBitRate;
1055 }DrbQosInfo;
1056
1057 typedef struct ulLcCfg
1058 {
1059    uint8_t priority;
1060    uint8_t lcGroup;
1061    uint8_t schReqId;
1062    PBitRate pbr;        // prioritisedBitRate
1063    BucketSizeDur bsd;        // bucketSizeDuration
1064 }UlLcCfg;
1065
1066 typedef struct duLcCfg
1067 {
1068    LcPriority lcp;      // logical Channel Prioritization
1069 }DlLcCfg;
1070
1071 typedef struct lcCfg
1072 {
1073    ConfigType configType;
1074    uint8_t lcId;
1075    DrbQosInfo *drbQos; 
1076    Snssai  *snssai;
1077    bool ulLcCfgPres;
1078    UlLcCfg ulLcCfg;
1079    DlLcCfg dlLcCfg;
1080 }LcCfg;
1081
1082 typedef struct macUeCfg
1083 {
1084    uint16_t cellId;
1085    uint8_t  ueIdx;
1086    uint16_t crnti;
1087    MacCellGrpCfg macCellGrpCfg;
1088    PhyCellGrpCfg phyCellGrpCfg;
1089    SpCellCfg spCellCfg;
1090    MaxAggrBitRate *maxAggrBitRate;
1091    uint8_t numLcs;
1092    LcCfg lcCfgList[MAX_NUM_LC];
1093    UeCfgState macUeCfgState; /* InActive / Completed */
1094 }MacUeCfg;
1095
1096 typedef struct nrcgi
1097 {
1098    Plmn      plmn;
1099    uint16_t  cellId;
1100 }Nrcgi;
1101
1102 typedef struct srbFailInfo
1103 {
1104    uint8_t       srbId;
1105    FailureCause  cause;
1106 }SRBFailInfo;
1107
1108 typedef struct drbFailInfo
1109 {
1110    uint8_t       drbId;
1111    FailureCause  cause;
1112 }DRBFailInfo;
1113
1114 typedef struct sCellFailInfo
1115 {
1116    Nrcgi         nrcgi;
1117    FailureCause  cause;
1118 }SCellFailInfo;
1119
1120 typedef struct ueCfgRsp
1121 {
1122    uint16_t       cellId;
1123    uint16_t       ueIdx;
1124    MacRsp         result;
1125    uint8_t        numSRBFailed;   /* valid values : 0 to MAX_NUM_SRB */ 
1126    SRBFailInfo    *failedSRBlisti;
1127    uint8_t        numDRBFailed;   /* valid values : 0 to MAX_NUM_DRB */
1128    DRBFailInfo    *failedDRBlist;
1129    uint8_t        numSCellFailed; /* valid values : 0 to MAX_NUM_SCELL */
1130    SCellFailInfo  *failedSCellList;
1131 }MacUeCfgRsp;
1132
1133 /* Functions for slot Ind from MAC to DU APP*/
1134 typedef uint8_t (*DuMacSlotInd) ARGS((
1135          Pst       *pst,
1136          SlotIndInfo  *slotInfo ));
1137
1138 /* Functions for stop Ind from MAC to DU APP*/
1139 typedef uint8_t (*DuMacStopInd) ARGS((
1140          Pst       *pst,
1141          MacCellStopInfo  *cellId ));
1142
1143 /* Functions for mac cell start req */
1144 typedef uint8_t (*DuMacCellStartReq) ARGS((
1145          Pst               *pst, 
1146          MacCellStartInfo  *cellStartInfo ));
1147
1148 /* Functions for mac cell stop request */
1149 typedef uint8_t (*DuMacCellStopReq) ARGS((
1150          Pst               *pst,
1151          MacCellStopInfo  *cellStopInfo ));
1152
1153 /* Function pointers for packing macCellCfg Request and Confirm */
1154 typedef uint8_t (*packMacCellCfgReq) ARGS((
1155          Pst           *pst,
1156          MacCellCfg    *macCellCfg ));
1157
1158 typedef uint8_t (*packMacCellCfgConfirm) ARGS((
1159          Pst              *pst,
1160          MacCellCfgCfm    *macCellCfgCfm ));
1161
1162 typedef uint8_t (*DuMacCellCfgReq) ARGS((
1163          Pst        *pst,        
1164          MacCellCfg *macCellCfg));
1165
1166 typedef uint8_t (*DuMacCellCfgCfm) ARGS((
1167          Pst        *pst,        
1168          MacCellCfgCfm *macCellCfgCfm ));
1169
1170 /* Functions for UL CCCH Ind from MAC to DU APP*/
1171 typedef uint8_t (*DuMacUlCcchInd) ARGS((
1172          Pst           *pst,
1173          UlCcchIndInfo *ulCcchIndInfo ));
1174
1175 /* Functions for DL CCCH Ind from DU APP to MAC*/
1176 typedef uint8_t (*DuMacDlCcchInd) ARGS((
1177          Pst           *pst,
1178          DlCcchIndInfo *dlCcchIndInfo ));
1179
1180 /* UE create Request from DU APP to MAC*/
1181 typedef uint8_t (*DuMacUeCreateReq) ARGS((
1182          Pst           *pst,
1183          MacUeCfg      *ueCfg ));
1184
1185 /* UE create Response from MAC to DU APP */
1186 typedef uint8_t (*MacDuUeCfgRspFunc) ARGS((
1187          Pst           *pst, 
1188          MacUeCfgRsp   *cfgRsp));
1189
1190 /* UE Reconfig Request from DU APP to MAC*/
1191 typedef uint8_t (*DuMacUeReconfigReq) ARGS((
1192          Pst           *pst,
1193          MacUeCfg      *ueCfg ));
1194
1195 uint8_t packMacSlotInd(Pst *pst, SlotIndInfo *slotInfo );
1196 uint8_t unpackMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf);
1197 uint8_t duHandleSlotInd(Pst *pst, SlotIndInfo *slotInfo);
1198 uint8_t packMacCellStartReq(Pst *pst, MacCellStartInfo *cellStartInfo);
1199 uint8_t unpackMacCellStartReq(DuMacCellStartReq func, Pst *pst, Buffer *mBuf);
1200 uint8_t MacProcCellStartReq(Pst *pst, MacCellStartInfo  *cellStartInfo);
1201 uint8_t packMacCellStopReq(Pst *pst, MacCellStopInfo  *cellStopInfo);
1202 uint8_t unpackMacCellStopReq(DuMacCellStopReq func, Pst *pst, Buffer *mBuf);
1203 uint8_t MacProcCellStopReq(Pst *pst, MacCellStopInfo  *cellStopInfo);
1204 uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
1205 uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func,  Pst *pst,  Buffer *mBuf);
1206 uint8_t MacProcCellCfgReq(Pst *pst, MacCellCfg *macCellCfg);
1207 uint8_t packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm);
1208 uint8_t unpackMacCellCfgCfm(DuMacCellCfgCfm func, Pst *pst, Buffer *mBuf);
1209 uint8_t duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm);
1210 uint8_t packMacStopInd(Pst *pst, MacCellStopInfo *cellId);
1211 uint8_t unpackMacStopInd(DuMacStopInd func, Pst *pst, Buffer *mBuf);
1212 uint8_t duHandleStopInd(Pst *pst, MacCellStopInfo *cellId);
1213 uint8_t packMacUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo);
1214 uint8_t unpackMacUlCcchInd(DuMacUlCcchInd func, Pst *pst, Buffer *mBuf);
1215 uint8_t duHandleUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo);
1216 uint8_t packMacDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo);
1217 uint8_t unpackMacDlCcchInd(DuMacDlCcchInd func, Pst *pst, Buffer *mBuf);
1218 uint8_t MacProcDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo);
1219 uint8_t packDuMacUeCreateReq(Pst *pst, MacUeCfg *ueCfg);
1220 uint8_t unpackMacUeCreateReq(DuMacUeCreateReq func, Pst *pst, Buffer *mBuf);
1221 uint8_t MacProcUeCreateReq(Pst *pst, MacUeCfg *ueCfg);
1222 uint8_t sendStopIndMacToDuApp(uint16_t cellId);
1223 uint8_t packDuMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp);
1224 uint8_t unpackDuMacUeCfgRsp(MacDuUeCfgRspFunc func, Pst *pst, Buffer *mBuf);
1225 uint8_t DuProcMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp);
1226 uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
1227 uint8_t unpackMacUeReconfigReq(DuMacUeReconfigReq func, Pst *pst, Buffer *mBuf);
1228 uint8_t MacProcUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
1229
1230 #endif
1231
1232 /**********************************************************************
1233   End of file
1234  **********************************************************************/