+/**
+ * @ingroup xran_cp_pkt
+ *
+ * @description
+ * Non-contiguous PRB allocation in time and frequency domain.
+ * ExtType 6, Defined in 5.4.7.6 Table 5-28
+ * Only applies to section type 1 3, and 5.
+ * The structure is reordered for byte order conversion.
+ */
+union xran_cp_radioapp_section_ext6 {
+ struct {
+ uint64_t symbolMask:14; /**< 5.4.7.6.3 symbol bit mask */
+ uint64_t reserved1:2;
+ uint64_t rbgMask:28; /**< 5.4.7.6.2 resource block group bit mask */
+ uint64_t rbgSize:3; /**< 5.4.7.6.1 resource block group size */
+ uint64_t reserved0:1;
+ uint64_t extLen:8; /**< 5.4.6.3 extension length, in 32bits words */
+ uint64_t extType:7; /**< 5.4.6.1 extension type */
+ uint64_t ef:1; /**< 5.4.6.2 extension flag */
+ }all_bits;
+
+ struct{
+ uint64_t data_field1;
+ }data_field;
+} __attribute__((__packed__));
+
+/**
+ * @ingroup xran_cp_pkt
+ *
+ * @description
+ * eAxC Mask Selection Extension (ExtType 7)
+ * Defined in 5.4.7.7 Table 5-29
+ * applies to section type 0
+ * The structure is reordered for byte order conversion.
+ */
+struct xran_cp_radioapp_section_ext7 {
+ uint32_t eAxCmask:16; /**< 5.4.7.7.1 eAxC Mask */
+ uint32_t extLen:8; /**< 5.4.6.3 extension length, in 32bits words */
+ uint32_t extType:7; /**< 5.4.6.1 extension type */
+ uint32_t ef:1; /**< 5.4.6.2 extension flag */
+ } __attribute__((__packed__));
+
+/**
+ * @ingroup xran_cp_pkt
+ *
+ * @description
+ * Regularization factor (ExtType 8), defined in 5.4.7.8 Table 5-30
+ * applies to section type 5 instead of sending section type 6
+ * The structure is reordered for byte order conversion.
+ */
+struct xran_cp_radioapp_section_ext8 {
+ uint32_t regularizationFactor:16; /**< 5.4.7.8.1 eAxC Mask */
+ uint32_t extLen:8; /**< 5.4.6.3 extension length, in 32bits words */
+ uint32_t extType:7; /**< 5.4.6.1 extension type */
+ uint32_t ef:1; /**< 5.4.6.2 extension flag */
+ } __attribute__((__packed__));
+
+/**
+ * @ingroup xran_cp_pkt
+ *
+ * @description
+ * Dynamic Spectrum Sharing parameters (ExtType 9)
+ * Defined in 5.4.7.9 Table 5-31
+ * The structure does not need the conversion of byte order.
+ */
+struct xran_cp_radioapp_section_ext9 {
+ uint8_t extType:7; /**< 5.4.6.1 extension type */
+ uint8_t ef:1; /**< 5.4.6.2 extension flag */
+ uint8_t extLen; /**< 5.4.6.3 extension length, in 32bits words */
+ uint8_t technology; /**< 5.4.7.9.1 technology (interface name) */
+ uint8_t reserved;
+ } __attribute__((__packed__));
+
+/**
+ * @ingroup xran_cp_pkt
+ *
+ * @description
+ * Section description for group configuration of multiple ports
+ * ExtType 10, Defined in 5.4.7.10 Table 5-32 and Table 5-33
+ * Applies to section type 1 3, and 5.
+ * The structure does not need the conversion of byte order.
+ */
+union xran_cp_radioapp_section_ext10 {
+ uint32_t data_field;
+ struct{
+ uint8_t extType:7; /**< 5.4.6.1 extension type */
+ uint8_t ef:1; /**< 5.4.6.2 extension flag */
+ uint8_t extLen; /**< 5.4.6.3 extension length, in 32bits words */
+ uint8_t numPortc:6; /**< 5.4.7.10.2 the number of eAxC ports */
+ uint8_t beamGroupType:2; /**< 5.4.7.10.1 the type of beam grouping */
+ uint8_t reserved; /**< beam IDs start from here for group type 2 */
+ }all_bits;
+ } __attribute__((__packed__));
+
+
+#define xran_cp_radioapp_sec_ext10_ExtType 0
+#define xran_cp_radioapp_sec_ext10_EF 7
+#define xran_cp_radioapp_sec_ext10_ExtLen 8
+#define xran_cp_radioapp_sec_ext10_NumPortc 16
+#define xran_cp_radioapp_sec_ext10_BeamGroupType 22
+#define xran_cp_radioapp_sec_ext10_Res0 24
+
+
+/**
+ * @ingroup xran_cp_pkt
+ *
+ * @description
+ * Flexible Beamforming Weights Extension Type (ExtType 11)
+ * Defined in 5.4.7.11 Table 5-35
+ * The structure is reordered for network byte order.
+ */
+union xran_cp_radioapp_section_ext11 {
+ struct {
+ uint32_t reserved:6;
+ uint32_t RAD:1; /**< 5.4.7.11.8 Reset After PRB Discontinuity */
+ uint32_t disableBFWs:1; /**< 5.4.7.11.6 disable beamforming weights */
+ uint32_t extLen:16; /**< extension length in 32bits words - 2bytes */
+ uint32_t extType:7; /**< 5.4.6.1 extension type */
+ uint32_t ef:1; /**< 5.4.6.2 extension flag */
+ uint8_t numBundPrb; /**< 5.4.7.11.3 Number of bundled PRBs per beamforming weights */
+ uint8_t bfwCompMeth:4; /**< 5.4.7.11.1 Beamforming weight Compression method (5.4.7.1.1) */
+ uint8_t bfwIqWidth:4; /**< 5.4.7.11.1 Beamforming weight IQ bit width (5.4.7.1.1) */
+ } all_bits;
+ struct{
+ uint32_t data_field1;
+ uint16_t data_field2;
+ }data_field;
+ /*
+ * bfwCompParam 5.4.7.11.2 beamforming weight compression parameter for PRB bundle
+ * beamId beam ID for PRB bundle (15bits)
+ * bfwI / bfwQ ....... beamforming weights for PRB bundle
+ * .....
+ * repeat until PRB bundle L
+ *
+ * zero pad (4-byte boundary)
+ */
+ } __attribute__((__packed__));
+
+#define xran_cp_radioapp_sec_ext11_bitfield_REV 0
+#define xran_cp_radioapp_sec_ext11_bitfield_RAD 6
+#define xran_cp_radioapp_sec_ext11_bitfield_DisBFWs 7
+#define xran_cp_radioapp_sec_ext11_bitfield_ExtLen 8
+#define xran_cp_radioapp_sec_ext11_bitfield_ExtType 24
+#define xran_cp_radioapp_sec_ext11_bitfield_Ef 31
+#define xran_cp_radioapp_sec_ext11_bitfield_NumPrb 0
+#define xran_cp_radioapp_sec_ext11_bitfield_BFWCompMeth 8
+#define xran_cp_radioapp_sec_ext11_bitfield_BFWIQWidth 12
+