+// P7 vendor extensions
+ typedef struct {
+ uint8_t nr_of_antenna_ports;
+ uint8_t nr_of_rx_ru;
+ uint8_t pad[2];
+ uint8_t rx_ru_idx[FAPI_VENDOR_MAX_RXRU_NUM];
+ // open for extension for new fields from ULSCHPDUStruct
+ } fapi_vendor_ul_pusch_pdu_t;
+
+ typedef struct {
+ uint8_t nr_of_rx_ru;
+ uint8_t pad[1];
+ uint16_t group_id;
+ uint8_t rx_ru_idx[FAPI_VENDOR_MAX_RXRU_NUM];
+ // open for extension for new fields from ULCCHUCIPDUStruct
+ } fapi_vendor_ul_pucch_pdu_t;
+
+ typedef struct {
+ uint8_t nr_of_rx_ru;
+ uint8_t pad[3];
+ uint8_t rx_ru_idx[FAPI_VENDOR_MAX_RXRU_NUM];
+ // open for extension for new fields from SRSPDUStruct
+ } fapi_vendor_ul_srs_pdu_t;
+
+ typedef struct {
+ uint16_t pdu_type;
+ uint16_t pad;
+ union {
+ fapi_vendor_ul_pusch_pdu_t pusch_pdu;
+ fapi_vendor_ul_pucch_pdu_t pucch_pdu;
+ fapi_vendor_ul_srs_pdu_t srs_pdu;
+ // open for extension for prach vendor type (as in fapi_ul_tti_req_pdu_t)
+ } pdu;
+ } fapi_vendor_ul_tti_req_pdu_t;
+
+ typedef struct {
+ fapi_vendor_ul_tti_req_pdu_t ul_pdus[FAPI_MAX_NUMBER_UL_PDUS_PER_TTI];
+ uint8_t num_ul_pdu;
+ uint8_t pad[3];
+ uint32_t sym;
+ // open for extension for new fields from PULConfigRequestStruct
+ } fapi_vendor_ul_tti_req_t;
+
+ typedef struct {
+ uint16_t epre_ratio_of_pdcch_to_ssb;
+ uint16_t epre_ratio_of_dmrs_to_ssb;
+ // open for extension for new fields from DCIPDUStruct
+ } fapi_vendor_dl_dci_t;
+
+ typedef struct {
+ uint16_t num_dl_dci;
+ uint8_t pad[2];
+ fapi_vendor_dl_dci_t dl_dci[FAPI_MAX_NUMBER_DL_DCI];
+ } fapi_vendor_dl_pdcch_pdu_t;
+
+ typedef struct {
+ uint16_t epre_ratio_of_pdsch_to_ssb;
+ uint16_t epre_ratio_of_dmrs_to_ssb;
+ uint8_t nr_of_antenna_ports;
+ uint8_t pad[3];
+ uint8_t tx_ru_idx[FAPI_VENDOR_MAX_TXRU_NUM];
+ // open for extension for new fields from DLSCHPDUStruct
+ } fapi_vendor_dl_pdsch_pdu_t;
+
+ typedef struct {
+ uint16_t epre_ratio_to_ssb;
+ uint8_t pad[2];
+ } fapi_vendor_csi_rs_pdu_t;
+
+ typedef struct {
+ uint16_t pdu_type;
+ uint16_t pdu_size;
+ union {
+ fapi_vendor_dl_pdcch_pdu_t pdcch_pdu;
+ fapi_vendor_dl_pdsch_pdu_t pdsch_pdu;
+ fapi_vendor_csi_rs_pdu_t csi_rs_pdu;
+ // open for extension for ssb vendor types (as in fapi_dl_tti_req_pdu_t)
+ } pdu;
+ } fapi_vendor_dl_tti_req_pdu_t;
+
+ typedef struct {
+ uint32_t sym;
+ uint16_t lte_crs_carrier_freq_dl;
+ uint8_t lte_crs_present;
+ uint8_t lte_crs_carrier_bandwidth_dl;
+ uint8_t lte_crs_nr_of_crs_ports;
+ uint8_t lte_crs_v_shift;
+ uint8_t pdcch_precoder_en;
+ uint8_t ssb_precoder_en;
+ uint8_t num_pdus;
+ uint8_t pad[3];
+ fapi_vendor_dl_tti_req_pdu_t pdus[FAPI_MAX_PDUS_PER_SLOT];
+ // open for extension for new fields from DLConfigRequestStruct
+ } fapi_vendor_dl_tti_req_t;
+
+ typedef struct {
+ uint16_t pdu_type;
+ uint16_t pdu_size;
+ fapi_vendor_dl_pdcch_pdu_t pdcch_pdu_config;
+ } fapi_vendor_dci_pdu_t;
+
+ typedef struct {
+ uint32_t sym;
+ uint8_t num_pdus;
+ uint8_t pad[3];
+ fapi_vendor_dci_pdu_t pdus[FAPI_MAX_NUMBER_UCI_PDUS_PER_SLOT];
+ // open for extension for new fields from ULDCIRequestStruct
+ } fapi_vendor_ul_dci_req_t;
+
+ typedef struct {
+ uint32_t sym;
+ // open for extension for new fields from TXRequestStruct
+ } fapi_vendor_tx_data_req_t;
+
+ typedef struct {
+ fapi_vendor_dl_tti_req_t dl_tti_req;
+ fapi_vendor_ul_tti_req_t ul_tti_req;
+ fapi_vendor_ul_dci_req_t ul_dci_req;
+ fapi_vendor_tx_data_req_t tx_data_req;
+ } fapi_vendor_p7_msg_t;
+
+// P7 vendor extensions end
+