a4c6f795ca69553188fba9921218e34d31b9e9d9
[o-du/phy.git] / fhi_lib / lib / api / xran_pkt_cp.h
1 /******************************************************************************\r
2 *\r
3 *   Copyright (c) 2019 Intel.\r
4 *\r
5 *   Licensed under the Apache License, Version 2.0 (the "License");\r
6 *   you may not use this file except in compliance with the License.\r
7 *   You may obtain a copy of the License at\r
8 *\r
9 *       http://www.apache.org/licenses/LICENSE-2.0\r
10 *\r
11 *   Unless required by applicable law or agreed to in writing, software\r
12 *   distributed under the License is distributed on an "AS IS" BASIS,\r
13 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14 *   See the License for the specific language governing permissions and\r
15 *   limitations under the License.\r
16 *\r
17 *******************************************************************************/\r
18 \r
19 /**\r
20  * @brief This file provides the definition of Control Plane Messages\r
21  *      for XRAN Front Haul layer as defined in XRAN-FH.CUS.0-v02.01.\r
22  *\r
23  * @file xran_pkt_cp.h\r
24  * @ingroup group_lte_source_xran\r
25  * @author Intel Corporation\r
26  *\r
27  **/\r
28 \r
29 #ifndef _XRAN_PKT_CP_H_\r
30 #define _XRAN_PKT_CP_H_\r
31 \r
32 #ifdef __cplusplus\r
33 extern "C" {\r
34 #endif\r
35 \r
36 \r
37 /**********************************************************************\r
38  * Common structures for C/U-plane\r
39  **********************************************************************/\r
40 /**\r
41  * @ingroup xran_cp_pkt\r
42  *\r
43  * @description\r
44  *      user data compression header defined in 5.4.4.10 / 6.3.3.13\r
45  */\r
46 struct xran_radioapp_udComp_header {\r
47     uint8_t     udCompMeth:4;           /**< Compression method, XRAN_COMPMETHOD_xxxx */\r
48     uint8_t     udIqWidth:4;            /**< IQ bit width, 1 ~ 16 */\r
49     } __attribute__((__packed__));\r
50 \r
51 \r
52 /**********************************************************************\r
53  * Definition of C-Plane Protocol 5.4\r
54  **********************************************************************/\r
55 /**\r
56  * @ingroup xran_cp_pkt\r
57  *\r
58  * @description\r
59  *      Common Radio Application Header for C-Plane\r
60  */\r
61 struct xran_cp_radioapp_common_header {     /* 6bytes, first 4bytes need the conversion for byte order */\r
62     uint32_t    startSymbolId:6;        /**< 5.4.4.7 start symbol identifier */\r
63     uint32_t    slotId:6;               /**< 5.4.4.6 slot identifier */\r
64     uint32_t    subframeId:4;           /**< 5.4.4.5 subframe identifier */\r
65     uint32_t    frameId:8;              /**< 5.4.4.4 frame identifier */\r
66     uint32_t    filterIndex:4;          /**< 5.4.4.3 filter index, XRAN_FILTERINDEX_xxxx */\r
67     uint32_t    payloadVer:3;           /**< 5.4.4.2 payload version, should be 1 */\r
68     uint32_t    dataDirection:1;        /**< 5.4.4.1 data direction (gNB Tx/Rx) */\r
69     uint8_t     numOfSections;          /**< 5.4.4.8 number of sections */\r
70     uint8_t     sectionType;            /**< 5.4.4.9 section type */\r
71     } __attribute__((__packed__));\r
72 \r
73 /**\r
74  * @ingroup xran_cp_pkt\r
75  *\r
76  * @description\r
77  *      frame structure defined in 5.4.4.13\r
78  */\r
79 struct xran_cp_radioapp_frameStructure {\r
80     uint8_t     uScs:4;                 /**< sub-carrier spacing, XRAN_SCS_xxx */\r
81     uint8_t     fftSize:4;              /**< FFT size,  XRAN_FFTSIZE_xxx */\r
82     } __attribute__((__packed__));\r
83 \r
84 /**\r
85  * @ingroup xran_cp_pkt\r
86  *\r
87  * @description\r
88  *      Section headers definition for C-Plane.\r
89  *      Section type 6 and 7 are not present since those have different fields.\r
90  */\r
91 struct xran_cp_radioapp_section_header {    /* 8bytes, need the conversion for byte order */\r
92     union {\r
93         struct {\r
94             uint32_t    reserved:16;\r
95             uint32_t    numSymbol:4;    /**< 5.4.5.7 number of symbols */\r
96             uint32_t    reMask:12;      /**< 5.4.5.5 resource element mask */\r
97             } s0;\r
98         struct {\r
99             uint32_t     beamId:15;     /**< 5.4.5.9 beam identifier */\r
100             uint32_t     ef:1;          /**< 5.4.5.8 extension flag */\r
101             uint32_t     numSymbol:4;   /**< 5.4.5.7 number of symbols */\r
102             uint32_t     reMask:12;     /**< 5.4.5.5 resource element mask */\r
103             } s1;\r
104         struct {\r
105             uint32_t    beamId:15;      /**< 5.4.5.9 beam identifier */\r
106             uint32_t    ef:1;           /**< 5.4.5.8 extension flag */\r
107             uint32_t    numSymbol:4;    /**< 5.4.5.7 number of symbols */\r
108             uint32_t    reMask:12;      /**< 5.4.5.5 resource element mask */\r
109             } s3;\r
110         struct {\r
111             uint32_t    ueId:15;        /**< 5.4.5.10 UE identifier */\r
112             uint32_t    ef:1;           /**< 5.4.5.8 extension flag */\r
113             uint32_t    numSymbol:4;    /**< 5.4.5.7 number of symbols */\r
114             uint32_t    reMask:12;      /**< 5.4.5.5 resource element mask */\r
115             } s5;\r
116         } u;\r
117 \r
118     uint32_t    numPrbc:8;              /**< 5.4.5.6 number of contiguous PRBs per control section  0000 0000b = all PRBs */\r
119     uint32_t    startPrbc:10;           /**< 5.4.5.4 starting PRB of control section */\r
120     uint32_t    symInc:1;               /**< 5.4.5.3 symbol number increment command XRAN_SYMBOLNUMBER_xxxx */\r
121     uint32_t    rb:1;                   /**< 5.4.5.2 resource block indicator, XRAN_RBIND_xxx */\r
122     uint32_t    sectionId:12;           /**< 5.4.5.1 section identifier */\r
123     } __attribute__((__packed__));\r
124 \r
125 \r
126 struct xran_cp_radioapp_section_ext_hdr {\r
127     /* 12 bytes, need to convert byte order for two parts respectively\r
128      *  - 2 and 8 bytes, reserved1 would be OK if it is zero\r
129      */\r
130     uint16_t     extLen:8;          /**< 5.4.6.3 extension length, in 32bits words */\r
131     uint16_t     extType:7;         /**< 5.4.6.1 extension type */\r
132     uint16_t     ef:1;              /**< 5.4.6.2 extension flag */\r
133     } __attribute__((__packed__));\r
134 \r
135 /**\r
136  * @ingroup xran_cp_pkt\r
137  *\r
138  * @description\r
139  *      Beamforming Weights Extension Type(ExtType 1) defined in 5.4.7.1\r
140  *      The structure is reordered for byte order conversion.\r
141  */\r
142 struct xran_cp_radioapp_section_ext1 {\r
143     /* variable length, need to be careful to convert byte order\r
144      *   - does not need to convert first 3 bytes */\r
145     uint8_t     extType:7;          /**< 5.4.6.1 extension type */\r
146     uint8_t     ef:1;               /**< 5.4.6.2 extension flag */\r
147     uint8_t     extLen;             /**< 5.4.6.3 extension length, in 32bits words */\r
148     /* bfwCompHdr */\r
149     uint8_t     bfwCompMeth:4;      /**< 5.4.7.1.1 Beamforming weight Compression method */\r
150     uint8_t     bfwIqWidth:4;       /**< 5.4.7.1.1 Beamforming weight IQ bit width */\r
151 \r
152     /*\r
153      *\r
154      *\r
155      * bfwCompParam\r
156      * (bfwI,  bfwQ)+\r
157      *    ......\r
158      * zero padding for 4-byte alignment\r
159      */\r
160     } __attribute__((__packed__));\r
161 \r
162 /**\r
163  * @ingroup xran_cp_pkt\r
164  *\r
165  * @description\r
166  *      Beamforming Attributes Extension Type(ExtType 2) defined in 5.4.7.2\r
167  *      The structure is reordered for byte order conversion.\r
168  */\r
169 struct xran_cp_radioapp_section_ext2 {\r
170     /* variable length, need to be careful to convert byte order\r
171      *   - first 4 bytes can be converted at once\r
172      */\r
173     uint32_t    bfZe3ddWidth:3;     /**< 5.4.7.2.1 beamforming zenith beamwidth parameter bitwidth, Table 5-21 */\r
174     uint32_t    bfAz3ddWidth:3;     /**< 5.4.7.2.1 beamforming azimuth beamwidth parameter bitwidth, Table 5-20 */\r
175     uint32_t    bfaCompResv1:2;\r
176     uint32_t    bfZePtWidth:3;      /**< 5.4.7.2.1 beamforming zenith pointing parameter bitwidth, Table 5-19 */\r
177     uint32_t    bfAzPtWidth:3;      /**< 5.4.7.2.1 beamforming azimuth pointing parameter bitwidth, Table 5-18 */\r
178     uint32_t    bfaCompResv0:2;\r
179     uint32_t    extLen:8;           /**< 5.4.6.3 extension length, in 32bits words */\r
180     uint32_t    extType:7;          /**< 5.4.6.1 extension type */\r
181     uint32_t    ef:1;               /**< 5.4.6.2 extension flag */\r
182 \r
183     /*\r
184      * would be better to use bit manipulation directly to add these parameters\r
185      *\r
186      * bfAzPt: var by bfAzPtWidth\r
187      * bfZePt: var by bfZePtWidth\r
188      * bfAz3dd: var by bfAz3ddWidth\r
189      * bfZe3dd: var by bfZe3ddWidth\r
190      * bfAzSI:5 (including zero-padding for unused bits)\r
191      * bfZeSI:3\r
192      * padding for 4-byte alignment\r
193      *\r
194      */\r
195     } __attribute__((__packed__));\r
196 \r
197 /**\r
198  * @ingroup xran_cp_pkt\r
199  *\r
200  * @description\r
201  *      DL Precoding Extension Type(ExtType 3) for first data layer.\r
202  *      Defined in 5.4.7.3 Table 5-22.\r
203  *      Only be used for LTE TM2-4 and not for other LTE TMs nor NR.\r
204  *      The structure is reordered for byte order conversion. Not supported.\r
205  */\r
206 struct xran_cp_radioapp_section_ext3_first {\r
207     /* 16 bytes, need to convert byte order for two parts\r
208      *   - 8 / 8 bytes\r
209      */\r
210     uint32_t    reserved1:8;\r
211     uint32_t    crsSymNum:4;        /**< 5.4.7.3.6 CRS symbol number indication */\r
212     uint32_t    reserved0:3;\r
213     uint32_t    crsShift:1;         /**< 5.4.7.3.7 CRS shift used for DL transmission */\r
214     uint32_t    crsReMask:12;       /**< 5.4.7.3.5 CRS resource element mask */\r
215     uint32_t    txScheme:4;         /**< 5.4.7.3.3 transmission scheme */\r
216     uint32_t    numLayers:4;        /**< 5.4.7.3.4 number of layers used for DL transmission */\r
217     uint32_t    layerId:4;          /**< 5.4.7.3.2 Layer ID for DL transmission */\r
218     uint32_t    codebookIndex:8;    /**< 5.4.7.3.1 precoder codebook used for transmission */\r
219     uint32_t    extLen:8;           /**< 5.4.6.3 extension length, in 32bits words */\r
220     uint32_t    extType:7;          /**< 5.4.6.1 extension type */\r
221     uint32_t    ef:1;               /**< 5.4.6.2 extension flag */\r
222 \r
223     uint16_t    beamIdAP3;          /**< 5.4.7.3.10 beam id to be used for antenna port 3 */\r
224     uint16_t    beamIdAP2;          /**< 5.4.7.3.9 beam id to be used for antenna port 2 */\r
225     uint16_t    beamIdAP1;          /**< 5.4.7.3.8 beam id to be used for antenna port 1 */\r
226     uint16_t    reserved2;\r
227     } __attribute__((__packed__));\r
228 \r
229 /**\r
230  * @ingroup xran_cp_pkt\r
231  *\r
232  * @description\r
233  *      DL Precoding Extension Type(ExtType 3) for non-first data layer.\r
234  *      Defined in 5.4.7.3 Table 5-23.\r
235  *      Only be used for LTE TM2-4 and not for other LTE TMs nor NR.\r
236  *      The structure is reordered for byte order conversion. Not supported.\r
237  */\r
238 struct xran_cp_radioapp_section_ext3_non_first {\r
239     /* 4 bytes, need to convert byte order at once */\r
240     uint32_t    numLayers:4;        /**< 5.4.7.3.4 number of layers used for DL transmission */\r
241     uint32_t    layerId:4;          /**< 5.4.7.3.2 Layer ID for DL transmission */\r
242     uint32_t    codebookIndex:8;    /**< 5.4.7.3.1 precoder codebook used for transmission */\r
243 \r
244     uint32_t    extLen:8;           /**< 5.4.6.3 extension length, in 32bits words */\r
245     uint32_t    extType:7;          /**< 5.4.6.1 extension type */\r
246     uint32_t    ef:1;               /**< 5.4.6.2 extension flag */\r
247     } __attribute__((__packed__));\r
248 \r
249 /**\r
250  * @ingroup xran_cp_pkt\r
251  *\r
252  * @description\r
253  *      Modulation Compression Parameter Extension Type(ExtType 4), 5.4.7.4\r
254  *      Only applies to section type 1 and 3.\r
255  *      The structure is reordered for byte order conversion.\r
256  */\r
257 struct xran_cp_radioapp_section_ext4 {\r
258     /* 4 bytes, need to convert byte order at once */\r
259     uint32_t    modCompScaler:15;   /**< 5.4.7.4.2 modulation compression scaler value */\r
260     uint32_t    csf:1;              /**< 5.4.7.4.1 constellation shift flag */\r
261 \r
262     uint32_t    extLen:8;           /**< 5.4.6.3 extension length, in 32bits words */\r
263     uint32_t    extType:7;          /**< 5.4.6.1 extension type */\r
264     uint32_t    ef:1;               /**< 5.4.6.2 extension flag */\r
265     } __attribute__((__packed__));\r
266 \r
267 #if 0\r
268 /**\r
269  * @ingroup xran_cp_pkt\r
270  *\r
271  * @description\r
272  *      Modulation Compression Additional Parameter Extension Type(ExtType 5) for one scaler value.\r
273  *      Defined in 5.4.7.5 Table 5-26\r
274  *      Only applies to section type 1 3, and 5.\r
275  *      The structure is reordered for byte order conversion.\r
276  */\r
277 struct xran_cp_radioapp_section_ext5_1 {\r
278     /* 8 bytes, need to convert byte order at once */\r
279     uint32_t    reserved:20;\r
280     uint32_t    mcScaleOffset:15;   /**< 5.4.7.5.3 scaling value for modulation compression */\r
281     uint32_t    csf:1;              /**< 5.4.7.5.2 constellation shift flag */\r
282     uint32_t    mcScaleReMask:12;   /**< 5.4.7.5.1 modulation compression power scale RE mask */\r
283 \r
284     uint32_t    extLen:8;           /**< 5.4.6.3 extension length, in 32bits words */\r
285     uint32_t    extType:7;          /**< 5.4.6.1 extension type */\r
286     uint32_t    ef:1;               /**< 5.4.6.2 extension flag */\r
287     } __attribute__((__packed__));\r
288 \r
289 /**\r
290  * @ingroup xran_cp_pkt\r
291  *\r
292  * @description\r
293  *      Modulation Compression Additional Parameter Extension Type(ExtType 5) for two scaler values.\r
294  *      Defined in 5.4.7.5 Table 5-27\r
295  *      Only applies to section type 1 3, and 5.\r
296  *      The structure is reordered for byte order conversion.\r
297  */\r
298 struct xran_cp_radioapp_section_ext5_2 {\r
299     /* 12 bytes, need to convert byte order for two parts respectively\r
300      *  - 2 and 8 bytes, reserved1 would be OK if it is zero\r
301      */\r
302     uint16_t     extLen:8;          /**< 5.4.6.3 extension length, in 32bits words */\r
303     uint16_t     extType:7;         /**< 5.4.6.1 extension type */\r
304     uint16_t     ef:1;              /**< 5.4.6.2 extension flag */\r
305 \r
306     uint32_t    reserved0:8;\r
307     uint32_t    mcScaleOffset2:15;  /**< 5.4.7.5.3 scaling value for modulation compression */\r
308     uint32_t    csf2:1;             /**< 5.4.7.5.2 constellation shift flag */\r
309     uint32_t    mcScaleReMask2:12;  /**< 5.4.7.5.1 modulation compression power scale RE mask */\r
310     uint32_t    mcScaleOffset1:15;  /**< 5.4.7.5.3 scaling value for modulation compression */\r
311     uint32_t    csf1:1;             /**< 5.4.7.5.2 constellation shift flag */\r
312     uint32_t    mcScaleReMask1:12;  /**< 5.4.7.5.1 modulation compression power scale RE mask */\r
313 \r
314     uint16_t    reserved1;\r
315     } __attribute__((__packed__));\r
316 #endif\r
317 \r
318 struct xran_cp_radioapp_section_ext5 {\r
319     uint32_t    reserved0:8;\r
320     uint32_t    mcScaleOffset2:15;  /**< 5.4.7.5.3 scaling value for modulation compression */\r
321     uint32_t    csf2:1;             /**< 5.4.7.5.2 constellation shift flag */\r
322     uint32_t    mcScaleReMask2:12;  /**< 5.4.7.5.1 modulation compression power scale RE mask */\r
323     uint32_t    mcScaleOffset1:15;  /**< 5.4.7.5.3 scaling value for modulation compression */\r
324     uint32_t    csf1:1;             /**< 5.4.7.5.2 constellation shift flag */\r
325     uint32_t    mcScaleReMask1:12;  /**< 5.4.7.5.1 modulation compression power scale RE mask */\r
326     } __attribute__((__packed__));\r
327 \r
328 /**********************************************************\r
329  * Scheduling and Beam-forming Commands 5.4.2\r
330  **********************************************************/\r
331 /**\r
332  * @ingroup xran_cp_pkt\r
333  *\r
334  * @description\r
335  *      Section header definition for type 0\r
336  */\r
337 struct xran_cp_radioapp_section0_header {   // 12bytes (6+2+1+2+1)\r
338     struct xran_cp_radioapp_common_header cmnhdr;\r
339     uint16_t    timeOffset;             /**< 5.4.4.12 time offset */\r
340 \r
341     struct xran_cp_radioapp_frameStructure  frameStructure;\r
342     uint16_t    cpLength;               /**< 5.4.4.14 cyclic prefix length */\r
343     uint8_t     reserved;\r
344     } __attribute__((__packed__));\r
345 \r
346 /**\r
347  * @ingroup xran_cp_pkt\r
348  *\r
349  * @description\r
350  *      Section definition for type 0: Unused RB or Symbols in DL or UL (Table 5-2)\r
351  *      Not supported in this release\r
352  */\r
353 struct xran_cp_radioapp_section0 {          // 8bytes (4+4)\r
354     struct xran_cp_radioapp_section_header hdr;\r
355     } __attribute__((__packed__));\r
356 \r
357 /**\r
358  * @ingroup xran_cp_pkt\r
359  *\r
360  * @description\r
361  *      Section header definition for type 1\r
362  */\r
363 struct xran_cp_radioapp_section1_header {   // 8bytes (6+1+1)\r
364     struct xran_cp_radioapp_common_header cmnhdr;\r
365     struct xran_radioapp_udComp_header udComp;\r
366     uint8_t     reserved;\r
367     } __attribute__((__packed__));\r
368 \r
369 /**\r
370  * @ingroup xran_cp_pkt\r
371  *\r
372  * @description\r
373  *      Section definition for type 1: Most DL/UL Radio Channels (Table 5-3)\r
374  */\r
375 struct xran_cp_radioapp_section1 {          // 8bytes (4+4)\r
376     struct xran_cp_radioapp_section_header hdr;\r
377 \r
378     // section extensions               // 5.4.6 & 5.4.7\r
379     //  .........\r
380     } __attribute__((__packed__));\r
381 \r
382 /**\r
383  * @ingroup xran_cp_pkt\r
384  *\r
385  * @description\r
386  *      Section header definition for type 3\r
387  */\r
388 struct xran_cp_radioapp_section3_header {   // 12bytes (6+2+1+2+1)\r
389     struct xran_cp_radioapp_common_header cmnhdr;\r
390     uint16_t    timeOffset;             /**< 5.4.4.12 time offset */\r
391 \r
392     struct xran_cp_radioapp_frameStructure  frameStructure;\r
393     uint16_t    cpLength;               /**< 5.4.4.14 cyclic prefix length */\r
394     struct xran_radioapp_udComp_header udComp;\r
395     } __attribute__((__packed__));\r
396 \r
397 /**\r
398  * @ingroup xran_cp_pkt\r
399  *\r
400  * @description\r
401  *      Section definition for type 3: PRACH and Mixed-numerology Channels (Table 5-4)\r
402  */\r
403 struct xran_cp_radioapp_section3 {          // 12bytes (4+4+4)\r
404     struct xran_cp_radioapp_section_header hdr;\r
405     uint32_t    freqOffset:24;          /**< 5.4.5.11 frequency offset */\r
406     uint32_t    reserved:8;\r
407 \r
408     // section extensions               // 5.4.6 & 5.4.7\r
409     //  .........\r
410     } __attribute__((__packed__));\r
411 \r
412 /**\r
413  * @ingroup xran_cp_pkt\r
414  *\r
415  * @description\r
416  *      Section header definition for type 5\r
417  */\r
418 struct xran_cp_radioapp_section5_header {   // 8bytes (6+1+1)\r
419     struct xran_cp_radioapp_common_header cmnhdr;\r
420     struct xran_radioapp_udComp_header udComp;\r
421     uint8_t     reserved;\r
422     } __attribute__((__packed__));\r
423 \r
424 /**\r
425  * @ingroup xran_cp_pkt\r
426  *\r
427  * @description\r
428  *      Section definition for type 5: UE scheduling information (Table 5-5)\r
429  *      Not supported in this release\r
430  */\r
431 struct xran_cp_radioapp_section5 {\r
432     struct xran_cp_radioapp_section_header hdr;\r
433 \r
434     // section extensions               // 5.4.6 & 5.4.7\r
435     //  .........\r
436     } __attribute__((__packed__));\r
437 \r
438 /**\r
439  * @ingroup xran_cp_pkt\r
440  *\r
441  * @description\r
442  *      Section header definition for type 6\r
443  */\r
444 struct xran_cp_radioapp_section6_header {   // 8bytes (6+1+1)\r
445     struct xran_cp_radioapp_common_header cmnhdr;\r
446     uint8_t     numberOfUEs;            /**< 5.4.4.11 number of UEs */\r
447     uint8_t     reserved;\r
448     } __attribute__((__packed__));\r
449 \r
450 /**\r
451  * @ingroup xran_cp_pkt\r
452  *\r
453  * @description\r
454  *      Section definition for type 5: Channel Information (Table 5-6)\r
455  *      Not supported in this release\r
456  */\r
457 struct xran_cp_radioapp_section6 {\r
458     uint32_t    regularizationFactor:16;/**< 5.4.5.12 regularization Factor */\r
459     uint32_t    ueId:15;                /**< 5.4.5.10 UE identifier */\r
460     uint32_t    ef:1;                   /**< 5.4.5.8 extension flag */\r
461     uint8_t     startPrbch:2;           /**< 5.4.5.4 starting PRB of control section */\r
462     uint8_t     symInc:1;               /**< 5.4.5.3 symbol number increment command XRAN_SYMBOLNUMBER_xxxx */\r
463     uint8_t     rb:1;                   /**< 5.4.5.2 resource block indicator, XRAN_RBIND_xxx */\r
464     uint8_t     reserved:4;\r
465     uint8_t     startPrbcl:8;           /**< 5.4.5.4 starting PRB of control section */\r
466     uint8_t     numPrbc:8;              /**< 5.4.5.6 number of contiguous PRBs per control section */\r
467 \r
468     // ciIQsamples start from here      // 5.4.5.13 channel information I and Q values\r
469     //  .........\r
470     //\r
471     // section extensions               // 5.4.6 & 5.4.7\r
472     //  .........\r
473     } __attribute__((__packed__));\r
474 \r
475 /**\r
476  * @ingroup xran_cp_pkt\r
477  *\r
478  * @description\r
479  *      Section header definition for type 7: LAA\r
480  *      Not supported in this release\r
481  */\r
482 struct xran_cp_radioapp_section7_header {\r
483     struct xran_cp_radioapp_common_header cmnhdr;\r
484     uint16_t    reserved;\r
485     uint8_t     laaMsgLen:4;            /**< 5.4.5.15 LAA message length */\r
486     uint8_t     laaMsgType:4;           /**< 5.4.5.14 LAA message type */\r
487 \r
488     // Payload start from here          // 5.4.5.16 ~ 5.4.5.32\r
489     } __attribute__((__packed__));\r
490 \r
491 #ifdef __cplusplus\r
492 }\r
493 #endif\r
494 \r
495 #endif  /* _XRAN_PKT_CP_H_ */\r