Front Haul Interface Library update to third seed code contribution
[o-du/phy.git] / fhi_lib / lib / api / xran_transport.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 Transport layer (eCPRI) API.
21  *
22  * @file xran_transport.h
23  * @ingroup group_lte_source_xran
24  * @author Intel Corporation
25  *
26  **/
27
28 #ifndef _XRAN_TRANSPORT_H_
29 #define _XRAN_TRANSPORT_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
40 struct xran_eaxc_info {
41     uint8_t cuPortId;
42     uint8_t bandSectorId;
43     uint8_t ccId;
44     uint8_t ruPortId;
45 };
46
47 struct xran_recv_packet_info {
48     int ecpri_version;
49     enum ecpri_msg_type msg_type;
50     int payload_len;
51     struct xran_eaxc_info eaxc;
52     int seq_id;
53     int subseq_id;
54     int ebit;
55 };
56
57
58 int xran_get_ecpri_hdr_size(void);
59 void xran_update_ecpri_payload_size(struct rte_mbuf *mbuf, int size);
60
61 uint16_t xran_compose_cid(uint8_t CU_Port_ID, uint8_t BandSector_ID, uint8_t CC_ID, uint8_t Ant_ID);
62 void xran_decompose_cid(uint16_t cid, struct xran_eaxc_info *result);
63
64 int xran_build_ecpri_hdr(struct rte_mbuf *mbuf,
65                         uint8_t CC_ID, uint8_t Ant_ID,
66                         uint8_t seq_id,
67                         struct xran_ecpri_hdr **ecpri_hdr);
68
69 int xran_parse_ecpri_hdr(struct rte_mbuf *mbuf,
70                         struct xran_ecpri_hdr **ecpri_hdr,
71                         struct xran_recv_packet_info *pkt_info);
72
73 #ifdef __cplusplus
74 }
75 #endif
76
77 #endif
78