Front Haul Interface Library update to third seed code contribution
[o-du/phy.git] / fhi_lib / lib / api / xran_up_api.h
1 /******************************************************************************
2 *
3 *   Copyright (c) 2019 Intel.
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 /**
20  * @brief This file provides the definitions for User Plane Messages APIs.
21  *
22  * @file xran_up_api.h
23  * @ingroup group_lte_source_xran
24  * @author Intel Corporation
25  *
26  **/
27
28 #ifndef _XRAN_UP_API_H_
29 #define _XRAN_UP_API_H_
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 #include <rte_common.h>
36 #include <rte_mbuf.h>
37
38 #include "xran_pkt.h"
39 #include "xran_pkt_up.h"
40
41 /*
42  * structure used for storing packet parameters needed for generating
43  * a data packet
44  */
45 struct xran_up_pkt_gen_params
46 {
47     struct radio_app_common_hdr app_params;
48     struct data_section_hdr sec_hdr;
49     struct data_section_compression_hdr compr_hdr_param;
50     union compression_params compr_param;
51 };
52
53 /*
54  * structure used for storing packet parameters needed for generating
55  * a data packet without compression
56  *   Next fields are omitted:
57  *        udCompHdr (not always present)
58  *        reserved (not always present)
59  *        udCompParam (not always present)
60  */
61 struct xran_up_pkt_gen_no_compression_params
62 {
63     struct radio_app_common_hdr app_params;
64     struct data_section_hdr sec_hdr;
65 };
66
67 /**
68  * @brief Function extracts IQ samples from received mbuf packet.
69  *
70  * @param mbuf Packet with received data.
71  * @param iq_data_start Address of the first IQ sample in mbuf will be returned
72  *                      here
73  * @return int Bytes of IQ samples that have been extracted from mbuf.
74  */
75 int32_t xran_extract_iq_samples(struct rte_mbuf *mbuf,
76     void **iq_data_start,
77     uint8_t *CC_ID,
78     uint8_t *Ant_ID,
79     uint8_t *frame_id,
80     uint8_t *subframe_id,
81     uint8_t *slot_id,
82     uint8_t *symb_id,
83     struct ecpri_seq_id *seq_id,
84     uint16_t *num_prbu,
85     uint16_t *start_prbu,
86     uint16_t *sym_inc,
87     uint16_t *rb,
88     uint16_t *sect_id,
89     int8_t   expect_comp,
90     uint8_t *compMeth,
91     uint8_t *iqWidth);
92
93 int xran_prepare_iq_symbol_portion(
94                         struct rte_mbuf *mbuf,
95                         const void *iq_data_start,
96                         const enum xran_input_byte_order iq_buf_byte_order,
97                         const uint32_t iq_data_num_bytes,
98                         struct xran_up_pkt_gen_params *params,
99                         uint8_t CC_ID,
100                         uint8_t Ant_ID,
101                         uint8_t seq_id,
102                         uint32_t do_copy);
103
104 #ifdef __cplusplus
105 }
106 #endif
107
108 #endif /* _XRAN_UP_API_H_ */