Update to odulow per maintenance bronze
[o-du/phy.git] / fapi_5g / include / fapi_vendor_extension.h
diff --git a/fapi_5g/include/fapi_vendor_extension.h b/fapi_5g/include/fapi_vendor_extension.h
new file mode 100644 (file)
index 0000000..ba16e57
--- /dev/null
@@ -0,0 +1,155 @@
+/******************************************************************************
+*
+*   Copyright (c) 2019 Intel.
+*
+*   Licensed under the Apache License, Version 2.0 (the "License");
+*   you may not use this file except in compliance with the License.
+*   You may obtain a copy of the License at
+*
+*       http://www.apache.org/licenses/LICENSE-2.0
+*
+*   Unless required by applicable law or agreed to in writing, software
+*   distributed under the License is distributed on an "AS IS" BASIS,
+*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*   See the License for the specific language governing permissions and
+*   limitations under the License.
+*
+*******************************************************************************/
+
+#ifndef _FAPI_VENDOR_EXTENSION_H_
+#define _FAPI_VENDOR_EXTENSION_H_
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#define FAPI_VENDOR_MESSAGE                                 0x10
+#define FAPI_VENDOR_EXT_SHUTDOWN_REQUEST                    0x11
+#define FAPI_VENDOR_EXT_SHUTDOWN_RESPONSE                   0x12
+
+#ifdef DEBUG_MODE
+#define FAPI_VENDOR_EXT_DL_IQ_SAMPLES                       0x13
+#define FAPI_VENDOR_EXT_UL_IQ_SAMPLES                       0x14
+#define FAPI_VENDOR_EXT_START_RESPONSE                      0x15
+#endif
+
+/* ----- WLS Operation --- */
+#define FAPI_VENDOR_MSG_HEADER_IND                          0x1A
+
+// PDSCH Payload
+#define FAPI_VENDOR_MSG_PHY_ZBC_BLOCK_REQ                   0x1B
+
+// Linked list header present at the top of all messages
+    typedef struct _fapi_api_queue_elem {
+        struct _fapi_api_queue_elem *p_next;
+        // p_tx_data_elm_list used for TX_DATA.request processing
+        struct _fapi_api_queue_elem *p_tx_data_elm_list;
+        uint8_t msg_type;
+        uint8_t num_message_in_block;
+        uint32_t msg_len;
+        uint32_t align_offset;
+        uint64_t time_stamp;
+    } fapi_api_queue_elem_t,
+    *p_fapi_api_queue_elem_t;
+/* ----------------------- */
+
+#ifdef DEBUG_MODE
+#define FAPI_MAX_IQ_SAMPLE_FILE_SIZE                        576
+#define FAPI_MAX_IQ_SAMPLE_DL_PORTS                          16
+#define FAPI_MAX_IQ_SAMPLE_UL_PORTS                           2
+#define FAPI_MAX_IQ_SAMPLE_UL_VIRTUAL_PORTS                   8
+#define FAPI_MAX_IQ_SAMPLE_UL_ANTENNA                        64
+#define FAPI_MAX_IQ_SAMPLE_BUFFER_SIZE                     4096
+#endif
+
+    typedef struct {
+        uint16_t hopping_id;
+        uint8_t carrier_aggregation_level;
+        uint8_t group_hop_flag;
+        uint8_t sequence_hop_flag;
+        // uint8_t                     nDMRS_type_A_pos;
+        uint8_t pad[3];
+    } fapi_config_req_vendor_msg_t;
+
+    typedef struct {
+        uint16_t sfn;
+        uint16_t slot;
+        uint32_t mode;
+#ifdef DEBUG_MODE
+        uint32_t count;
+        uint32_t period;
+#endif
+    } fapi_start_req_vendor_msg_t;
+
+    typedef struct {
+        uint16_t sfn;
+        uint16_t slot;
+    } fapi_stop_req_vendor_msg_t;
+
+    typedef struct {
+        fapi_msg_t header;
+        fapi_config_req_vendor_msg_t config_req_vendor;
+        fapi_start_req_vendor_msg_t start_req_vendor;
+        fapi_stop_req_vendor_msg_t stop_req_vendor;
+    } fapi_vendor_msg_t;
+
+    typedef struct {
+        fapi_msg_t header;
+        uint16_t sfn;
+        uint16_t slot;
+        uint32_t test_type;
+    } fapi_vendor_ext_shutdown_req_t;
+
+    typedef struct {
+        fapi_msg_t header;
+        uint16_t sfn;
+        uint16_t slot;
+        uint32_t nStatus;
+    } fapi_vendor_ext_shutdown_res_t;
+
+#ifdef DEBUG_MODE
+    typedef struct {
+        uint32_t carrNum;
+        uint32_t numSubframes;
+        uint32_t nIsRadioMode;
+        uint32_t timerModeFreqDomain;
+        uint32_t phaseCompensationEnable;
+        uint32_t startFrameNum;
+        uint32_t startSlotNum;
+        uint32_t startSymNum;
+        char filename_in_ul_iq[FAPI_MAX_IQ_SAMPLE_UL_VIRTUAL_PORTS]
+            [FAPI_MAX_IQ_SAMPLE_FILE_SIZE];
+        char filename_in_prach_iq[FAPI_MAX_IQ_SAMPLE_UL_VIRTUAL_PORTS]
+            [FAPI_MAX_IQ_SAMPLE_FILE_SIZE];
+        char filename_in_srs_iq[FAPI_MAX_IQ_SAMPLE_UL_ANTENNA]
+            [FAPI_MAX_IQ_SAMPLE_FILE_SIZE];
+        char filename_out_dl_iq[FAPI_MAX_IQ_SAMPLE_FILE_SIZE];
+        char filename_out_dl_beam[FAPI_MAX_IQ_SAMPLE_DL_PORTS]
+            [FAPI_MAX_IQ_SAMPLE_FILE_SIZE];
+        char filename_out_ul_beam[FAPI_MAX_IQ_SAMPLE_UL_VIRTUAL_PORTS]
+            [FAPI_MAX_IQ_SAMPLE_FILE_SIZE];
+        uint8_t buffer[FAPI_MAX_IQ_SAMPLE_BUFFER_SIZE];
+    } fapi_vendor_ext_iq_samples_info_t;
+
+    typedef struct {
+        fapi_msg_t header;
+        fapi_vendor_ext_iq_samples_info_t iq_samples_info;
+    } fapi_vendor_ext_iq_samples_req_t;
+
+    typedef struct {
+        fapi_msg_t header;
+    } fapi_vendor_ext_dl_iq_samples_res_t;
+
+    typedef struct {
+        fapi_msg_t header;
+    } fapi_vendor_ext_ul_iq_samples_res_t;
+
+    typedef struct {
+        fapi_msg_t header;
+    } fapi_vendor_ext_start_response_t;
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+#endif                          // FAPI_VENDOR_EXTENSION_H_