o-du/phy
Intel O-RAN/X-RAN Generated Doxygen Documentation
Data Structures | Macros | Typedefs | Enumerations | Functions
xran_fh_o_du.h File Reference

This file provides public interface to xRAN Front Haul layer implementation as defined in the ORAN-WG4.CUS.0-v01.00 spec. Implementation specific to Lower Layer Split Central Unit (O-DU): a logical node that includes the eNB/gNB functions as listed in section 2.1 split option 7-2x, excepting those functions allocated exclusively to the O-RU. The O-DU controls the operation of O-RUs for 5G NR Radio Access technology. More...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <inttypes.h>
#include <sys/types.h>
#include <sys/queue.h>
#include <netinet/in.h>
#include <setjmp.h>
#include <stdarg.h>
#include <ctype.h>
#include <errno.h>
#include <getopt.h>
#include <unistd.h>
Include dependency graph for xran_fh_o_du.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  xran_cb_tag
 
struct  xran_io_cfg
 
struct  xran_eaxcid_config
 
struct  xran_fh_init
 
struct  xran_cp_bf_weight
 
struct  xran_cp_bf_attribute
 
struct  xran_cp_bf_precoding
 
struct  xran_section_desc
 
struct  xran_prb_elm
 
struct  xran_prb_map
 
struct  xran_prach_config
 
struct  xran_srs_config
 
struct  xran_slot_config
 
struct  xran_frame_config
 
struct  xran_ru_config
 
struct  xran_fh_config
 
struct  xran_common_counters
 
struct  xran_flat_buffer
 
struct  xran_buffer_list
 

Macros

#define XRAN_STATUS_SUCCESS   (0)
 
#define XRAN_STATUS_FAIL   (-1)
 
#define XRAN_STATUS_RETRY   (-2)
 
#define XRAN_STATUS_RESOURCE   (-3)
 
#define XRAN_STATUS_INVALID_PARAM   (-4)
 
#define XRAN_STATUS_FATAL   (-5)
 
#define XRAN_STATUS_UNSUPPORTED   (-6)
 
#define XRAN_STATUS_INVALID_PACKET   (-7)
 
#define XranGetTtiNum(symIdx, numSymPerTti)   (((uint32_t)symIdx / (uint32_t)numSymPerTti))
 
#define XranGetSymNum(symIdx, numSymPerTti)   (((uint32_t)symIdx % (uint32_t)numSymPerTti))
 
#define XranGetFrameNum(tti, SFNatSecStart, numSubFramePerSystemFrame, numSlotPerSubFrame)   ((((uint32_t)tti / ((uint32_t)numSubFramePerSystemFrame * (uint32_t)numSlotPerSubFrame)) + SFNatSecStart) & 0x3FF)
 
#define XranGetSubFrameNum(tti, numSlotPerSubFrame, numSubFramePerSystemFrame)   (((uint32_t)tti/(uint32_t)numSlotPerSubFrame) % (uint32_t)numSubFramePerSystemFrame)
 
#define XranGetSlotNum(tti, numSlotPerSfn)   ((uint32_t)tti % ((uint32_t)numSlotPerSfn))
 
#define XRAN_PORTS_NUM   (1)
 
#define XRAN_N_FE_BUF_LEN   (40)
 
#define XRAN_MAX_SECTOR_NR   (12)
 
#define XRAN_MAX_ANTENNA_NR   (16)
 
#define XRAN_MAX_PANEL_NR   (1)
 
#define XRAN_MAX_TRX_ANTENNA_ARRAY   (1)
 
#define XRAN_MAX_ANT_ARRAY_ELM_NR   (64)
 
#define XRAN_NUM_OF_SYMBOL_PER_SLOT   (14)
 
#define XRAN_MAX_NUM_OF_SRS_SYMBOL_PER_SLOT   XRAN_NUM_OF_SYMBOL_PER_SLOT
 
#define XRAN_MAX_TDD_PERIODICITY   (80)
 
#define XRAN_MAX_CELLS_PER_PORT   (XRAN_MAX_SECTOR_NR)
 
#define XRAN_COMPONENT_CARRIERS_MAX   (XRAN_MAX_SECTOR_NR)
 
#define XRAN_NUM_OF_ANT_RADIO   (XRAN_MAX_SECTOR_NR*XRAN_MAX_ANTENNA_NR)
 
#define XRAN_MAX_PRBS   (275)
 
#define XRAN_MAX_SECTIONS_PER_SYM   (16)
 
#define XRAN_MAX_PKT_BURST   (448+4)
 
#define XRAN_N_MAX_BUFFER_SEGMENT   XRAN_MAX_PKT_BURST
 
#define XRAN_STRICT_PARM_CHECK   (1)
 
#define XRAN_SLOT_TYPE_INVALID   (0)
 
#define XRAN_SLOT_TYPE_DL   (1)
 
#define XRAN_SLOT_TYPE_UL   (2)
 
#define XRAN_SLOT_TYPE_SP   (3)
 
#define XRAN_SLOT_TYPE_FDD   (4)
 
#define XRAN_SLOT_TYPE_LAST   (5)
 
#define XRAN_SYMBOL_TYPE_DL   (0)
 
#define XRAN_SYMBOL_TYPE_UL   (1)
 
#define XRAN_SYMBOL_TYPE_GUARD   (2)
 
#define XRAN_SYMBOL_TYPE_FDD   (3)
 
#define XRAN_NUM_OF_SLOT_IN_TDD_LOOP   (80)
 
#define xran_log_dbg(fmt, ...)
 
#define xran_log_dbg(fmt, ...)
 
#define xran_log_wrn(fmt, ...)
 
#define xran_log_err(fmt, ...)
 

Typedefs

typedef int32_t xran_status_t
 
typedef void(* xran_callback_sym_fn) (void *)
 
typedef int(* xran_fh_tti_callback_fn) (void *)
 
typedef void(* xran_transport_callback_fn) (void *, xran_status_t)
 
typedef int16_t(* phy_encoder_poll_fn) (void)
 
typedef int16_t(* phy_decoder_poll_fn) (void)
 
typedef void * xran_cc_handle_t
 

Enumerations

enum  XranFrameDuplexType { XRAN_FDD = 0, XRAN_TDD }
 
enum  xran_if_state { XRAN_INIT = 0, XRAN_RUNNING, XRAN_STOPPED }
 
enum  xran_compression_method {
  XRAN_COMPMETHOD_NONE = 0, XRAN_COMPMETHOD_BLKFLOAT = 1, XRAN_COMPMETHOD_BLKSCALE = 2, XRAN_COMPMETHOD_ULAW = 3,
  XRAN_COMPMETHOD_MODULATION = 4, XRAN_COMPMETHOD_MAX
}
 
enum  callback_to_phy_id { XRAN_CB_TTI = 0, XRAN_CB_HALF_SLOT_RX =1, XRAN_CB_FULL_SLOT_RX =2, XRAN_CB_MAX }
 
enum  xran_weight_based_beamforming_type { XRAN_BF_T_FREQUENCY = 0, XRAN_BF_T_TIME = 1, XRAN_BF_T_HYBRID = 2, XRAN_BF_T_MAX }
 
enum  xran_vf_ports { XRAN_UP_VF = 0, XRAN_CP_VF, XRAN_VF_MAX }
 
enum  xran_category { XRAN_CATEGORY_A = 0, XRAN_CATEGORY_B = 1, XRAN_CATEGORY_MAX }
 
enum  xran_beamforming_type { XRAN_BEAM_ID_BASED = 0, XRAN_BEAM_WEIGHT, XRAN_BEAM_ATTRIBUTE }
 
enum  xran_bbdev_init { XRAN_BBDEV_NOT_USED = -1, XRAN_BBDEV_MODE_HW_OFF = 0, XRAN_BBDEV_MODE_HW_ON = 1, XRAN_BBDEV_MODE_MAX }
 
enum  xran_input_byte_order { XRAN_NE_BE_BYTE_ORDER = 0, XRAN_CPU_LE_BYTE_ORDER }
 
enum  xran_input_i_q_order { XRAN_I_Q_ORDER = 0, XRAN_Q_I_ORDER }
 

Functions

int32_t xran_init (int argc, char *argv[], struct xran_fh_init *p_xran_fh_init, char *appName, void **pHandle)
 
int32_t xran_sector_get_instances (void *pHandle, uint16_t nNumInstances, xran_cc_handle_t *pSectorInstanceHandles)
 
int32_t xran_mm_init (void *pHandle, uint64_t nMemorySize, uint32_t nMemorySegmentSize)
 
int32_t xran_bm_init (void *pHandle, uint32_t *pPoolIndex, uint32_t nNumberOfBuffers, uint32_t nBufferSize)
 
int32_t xran_bm_allocate_buffer (void *pHandle, uint32_t nPoolIndex, void **ppData, void **ppCtrl)
 
int32_t xran_bm_free_buffer (void *pHandle, void *pData, void *pCtrl)
 
int32_t xran_mm_destroy (void *pHandle)
 
int32_t xran_5g_fronthault_config (void *pHandle, struct xran_buffer_list *pSrcBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN], struct xran_buffer_list *pSrcCpBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN], struct xran_buffer_list *pDstBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN], struct xran_buffer_list *pDstCpBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN], xran_transport_callback_fn pCallback, void *pCallbackTag)
 
int32_t xran_5g_prach_req (void *pHandle, struct xran_buffer_list *pDstBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN], xran_transport_callback_fn pCallback, void *pCallbackTag)
 
int32_t xran_5g_srs_req (void *pHandle, struct xran_buffer_list *pDstBuffer[XRAN_MAX_ANT_ARRAY_ELM_NR][XRAN_N_FE_BUF_LEN], xran_transport_callback_fn pCallback, void *pCallbackTag)
 
uint32_t xran_get_time_stats (uint64_t *total_time, uint64_t *used_time, uint32_t *core_used, uint32_t clear)
 
int32_t xran_open (void *pHandle, struct xran_fh_config *pConf)
 
int32_t xran_start (void *pHandle)
 
int32_t xran_stop (void *pHandle)
 
int32_t xran_close (void *pHandle)
 
int32_t xran_reg_sym_cb (void *pHandle, xran_callback_sym_fn symCb, void *symCbParam, uint8_t symb, uint8_t ant)
 
int32_t xran_reg_physide_cb (void *pHandle, xran_fh_tti_callback_fn Cb, void *cbParam, int skipTtiNum, enum callback_to_phy_id)
 
int32_t xran_get_slot_idx (uint32_t *nFrameIdx, uint32_t *nSubframeIdx, uint32_t *nSlotIdx, uint64_t *nSecond)
 
int32_t xran_get_common_counters (void *pXranLayerHandle, struct xran_common_counters *pStats)
 
enum xran_if_state xran_get_if_state (void)
 
void * xran_malloc (size_t buf_len)
 
uint8_t * xran_add_hdr_offset (uint8_t *dst, int16_t compMethod)
 

Detailed Description

This file provides public interface to xRAN Front Haul layer implementation as defined in the ORAN-WG4.CUS.0-v01.00 spec. Implementation specific to Lower Layer Split Central Unit (O-DU): a logical node that includes the eNB/gNB functions as listed in section 2.1 split option 7-2x, excepting those functions allocated exclusively to the O-RU. The O-DU controls the operation of O-RUs for 5G NR Radio Access technology.

Author
Intel Corporation

Definition in file xran_fh_o_du.h.

Macro Definition Documentation

◆ XRAN_COMPONENT_CARRIERS_MAX

#define XRAN_COMPONENT_CARRIERS_MAX   (XRAN_MAX_SECTOR_NR)

number of CCs

Definition at line 126 of file xran_fh_o_du.h.

◆ xran_log_dbg [1/2]

#define xran_log_dbg (   fmt,
  ... 
)

Definition at line 174 of file xran_fh_o_du.h.

◆ xran_log_dbg [2/2]

#define xran_log_dbg (   fmt,
  ... 
)

Definition at line 174 of file xran_fh_o_du.h.

◆ xran_log_err

#define xran_log_err (   fmt,
  ... 
)
Value:
fprintf(stderr, \
"ERROR: %s(%d): " fmt "\n", \
__FILE__, \
__LINE__, ##__VA_ARGS__)

Definition at line 178 of file xran_fh_o_du.h.

◆ xran_log_wrn

#define xran_log_wrn (   fmt,
  ... 
)

Definition at line 175 of file xran_fh_o_du.h.

◆ XRAN_MAX_ANT_ARRAY_ELM_NR

#define XRAN_MAX_ANT_ARRAY_ELM_NR   (64)

Maximum number of Antenna Array Elemets in Antenna Array in the O-RU

Definition at line 118 of file xran_fh_o_du.h.

◆ XRAN_MAX_ANTENNA_NR

#define XRAN_MAX_ANTENNA_NR   (16)

Max number of extended Antenna-Carriers: a data flow for a single antenna (or spatial stream) for a single carrier in a single sector

Definition at line 111 of file xran_fh_o_du.h.

◆ XRAN_MAX_CELLS_PER_PORT

#define XRAN_MAX_CELLS_PER_PORT   (XRAN_MAX_SECTOR_NR)

Max cells mapped to XRAN port

Definition at line 125 of file xran_fh_o_du.h.

◆ XRAN_MAX_NUM_OF_SRS_SYMBOL_PER_SLOT

#define XRAN_MAX_NUM_OF_SRS_SYMBOL_PER_SLOT   XRAN_NUM_OF_SYMBOL_PER_SLOT

Max Number of SRS symbols per slot

Definition at line 123 of file xran_fh_o_du.h.

◆ XRAN_MAX_PANEL_NR

#define XRAN_MAX_PANEL_NR   (1)

Max number of Panels supported per O-RU

Definition at line 116 of file xran_fh_o_du.h.

◆ XRAN_MAX_PKT_BURST

#define XRAN_MAX_PKT_BURST   (448+4)

4x14x8 symbols per ms

Definition at line 132 of file xran_fh_o_du.h.

◆ XRAN_MAX_PRBS

#define XRAN_MAX_PRBS   (275)

Max of PRBs per CC per antanna for 5G NR

Definition at line 128 of file xran_fh_o_du.h.

◆ XRAN_MAX_SECTIONS_PER_SYM

#define XRAN_MAX_SECTIONS_PER_SYM   (16)

Max number of different sections in single symbol (section is equal to RB allocation for UE)

Definition at line 130 of file xran_fh_o_du.h.

◆ XRAN_MAX_SECTOR_NR

#define XRAN_MAX_SECTOR_NR   (12)

Max sectors per XRAN port

Definition at line 110 of file xran_fh_o_du.h.

◆ XRAN_MAX_TDD_PERIODICITY

#define XRAN_MAX_TDD_PERIODICITY   (80)

Max TDD pattern period

Definition at line 124 of file xran_fh_o_du.h.

◆ XRAN_MAX_TRX_ANTENNA_ARRAY

#define XRAN_MAX_TRX_ANTENNA_ARRAY   (1)

Max number of TX and RX arrays per panel in O-RU

Definition at line 117 of file xran_fh_o_du.h.

◆ XRAN_N_FE_BUF_LEN

#define XRAN_N_FE_BUF_LEN   (40)

Number of TTIs (slots)

Definition at line 109 of file xran_fh_o_du.h.

◆ XRAN_N_MAX_BUFFER_SEGMENT

#define XRAN_N_MAX_BUFFER_SEGMENT   XRAN_MAX_PKT_BURST

Max number of segments per ms

Definition at line 133 of file xran_fh_o_du.h.

◆ XRAN_NUM_OF_ANT_RADIO

#define XRAN_NUM_OF_ANT_RADIO   (XRAN_MAX_SECTOR_NR*XRAN_MAX_ANTENNA_NR)

Max Number of Antennas supported for all CC on single XRAN port

Definition at line 127 of file xran_fh_o_du.h.

◆ XRAN_NUM_OF_SLOT_IN_TDD_LOOP

#define XRAN_NUM_OF_SLOT_IN_TDD_LOOP   (80)

MAX number of slot for TDD repetition

Definition at line 151 of file xran_fh_o_du.h.

◆ XRAN_NUM_OF_SYMBOL_PER_SLOT

#define XRAN_NUM_OF_SYMBOL_PER_SLOT   (14)

Number of symbols per slot

Definition at line 122 of file xran_fh_o_du.h.

◆ XRAN_PORTS_NUM

#define XRAN_PORTS_NUM   (1)

number of XRAN ports (aka O-RU devices) supported

Definition at line 108 of file xran_fh_o_du.h.

◆ XRAN_SLOT_TYPE_DL

#define XRAN_SLOT_TYPE_DL   (1)

DL slot

Definition at line 139 of file xran_fh_o_du.h.

◆ XRAN_SLOT_TYPE_FDD

#define XRAN_SLOT_TYPE_FDD   (4)

FDD slot

Definition at line 142 of file xran_fh_o_du.h.

◆ XRAN_SLOT_TYPE_INVALID

#define XRAN_SLOT_TYPE_INVALID   (0)

invalid slot type

Definition at line 138 of file xran_fh_o_du.h.

◆ XRAN_SLOT_TYPE_LAST

#define XRAN_SLOT_TYPE_LAST   (5)

MAX slot

Definition at line 143 of file xran_fh_o_du.h.

◆ XRAN_SLOT_TYPE_SP

#define XRAN_SLOT_TYPE_SP   (3)

Special slot

Definition at line 141 of file xran_fh_o_du.h.

◆ XRAN_SLOT_TYPE_UL

#define XRAN_SLOT_TYPE_UL   (2)

UL slot

Definition at line 140 of file xran_fh_o_du.h.

◆ XRAN_STATUS_FAIL

#define XRAN_STATUS_FAIL   (-1)

Fail status value.

Definition at line 58 of file xran_fh_o_du.h.

◆ XRAN_STATUS_FATAL

#define XRAN_STATUS_FATAL   (-5)

A serious error has occurred. Recommended course of action is to shutdown and restart the component.

Definition at line 79 of file xran_fh_o_du.h.

◆ XRAN_STATUS_INVALID_PACKET

#define XRAN_STATUS_INVALID_PACKET   (-7)

Recevied packet does not have correct format.

Definition at line 92 of file xran_fh_o_du.h.

◆ XRAN_STATUS_INVALID_PARAM

#define XRAN_STATUS_INVALID_PARAM   (-4)

Invalid parameter has been passed in.

Definition at line 75 of file xran_fh_o_du.h.

◆ XRAN_STATUS_RESOURCE

#define XRAN_STATUS_RESOURCE   (-3)

The resource that has been requested is unavailable. Refer to relevant sections of the API for specifics on what the suggested course of action is.

Definition at line 68 of file xran_fh_o_du.h.

◆ XRAN_STATUS_RETRY

#define XRAN_STATUS_RETRY   (-2)

Retry status value.

Definition at line 63 of file xran_fh_o_du.h.

◆ XRAN_STATUS_SUCCESS

#define XRAN_STATUS_SUCCESS   (0)

Success status value.

Definition at line 54 of file xran_fh_o_du.h.

◆ XRAN_STATUS_UNSUPPORTED

#define XRAN_STATUS_UNSUPPORTED   (-6)

The function is not supported, at least not with the specific parameters supplied. This may be because a particular capability is not supported by the current implementation.

Definition at line 85 of file xran_fh_o_du.h.

◆ XRAN_STRICT_PARM_CHECK

#define XRAN_STRICT_PARM_CHECK   (1)

enable parameter check for C-plane

Definition at line 135 of file xran_fh_o_du.h.

◆ XRAN_SYMBOL_TYPE_DL

#define XRAN_SYMBOL_TYPE_DL   (0)

DL symbol

Definition at line 146 of file xran_fh_o_du.h.

◆ XRAN_SYMBOL_TYPE_FDD

#define XRAN_SYMBOL_TYPE_FDD   (3)

FDD symbol

Definition at line 149 of file xran_fh_o_du.h.

◆ XRAN_SYMBOL_TYPE_GUARD

#define XRAN_SYMBOL_TYPE_GUARD   (2)

GUARD symbol

Definition at line 148 of file xran_fh_o_du.h.

◆ XRAN_SYMBOL_TYPE_UL

#define XRAN_SYMBOL_TYPE_UL   (1)

UL symbol

Definition at line 147 of file xran_fh_o_du.h.

◆ XranGetFrameNum

#define XranGetFrameNum (   tti,
  SFNatSecStart,
  numSubFramePerSystemFrame,
  numSlotPerSubFrame 
)    ((((uint32_t)tti / ((uint32_t)numSubFramePerSystemFrame * (uint32_t)numSlotPerSubFrame)) + SFNatSecStart) & 0x3FF)

Macro to calculate Frame number for given tti

Definition at line 102 of file xran_fh_o_du.h.

◆ XranGetSlotNum

#define XranGetSlotNum (   tti,
  numSlotPerSfn 
)    ((uint32_t)tti % ((uint32_t)numSlotPerSfn))

Macro to calculate Slot number

Definition at line 106 of file xran_fh_o_du.h.

◆ XranGetSubFrameNum

#define XranGetSubFrameNum (   tti,
  numSlotPerSubFrame,
  numSubFramePerSystemFrame 
)    (((uint32_t)tti/(uint32_t)numSlotPerSubFrame) % (uint32_t)numSubFramePerSystemFrame)

Macro to calculate Subframe number for given tti

Definition at line 104 of file xran_fh_o_du.h.

◆ XranGetSymNum

#define XranGetSymNum (   symIdx,
  numSymPerTti 
)    (((uint32_t)symIdx % (uint32_t)numSymPerTti))

Macro to calculate Symbol number for given slot from symbol index

Definition at line 100 of file xran_fh_o_du.h.

◆ XranGetTtiNum

#define XranGetTtiNum (   symIdx,
  numSymPerTti 
)    (((uint32_t)symIdx / (uint32_t)numSymPerTti))

Macro to calculate TTI number from symbol index used by timing thread

Definition at line 98 of file xran_fh_o_du.h.

Typedef Documentation

◆ phy_decoder_poll_fn

typedef int16_t(* phy_decoder_poll_fn) (void)

Callback functions to poll BBdev secoder

Definition at line 251 of file xran_fh_o_du.h.

◆ phy_encoder_poll_fn

typedef int16_t(* phy_encoder_poll_fn) (void)

Callback functions to poll BBdev encoder

Definition at line 248 of file xran_fh_o_du.h.

◆ xran_callback_sym_fn

typedef void(* xran_callback_sym_fn) (void *)

callback function type for Symbol packet

Definition at line 239 of file xran_fh_o_du.h.

◆ xran_cc_handle_t

typedef void* xran_cc_handle_t

CC instance handle pointer type

Definition at line 541 of file xran_fh_o_du.h.

◆ xran_fh_tti_callback_fn

typedef int(* xran_fh_tti_callback_fn) (void *)

Callback function type for TTI event

Definition at line 242 of file xran_fh_o_du.h.

◆ xran_status_t

typedef int32_t xran_status_t

Xran status return value

Definition at line 236 of file xran_fh_o_du.h.

◆ xran_transport_callback_fn

typedef void(* xran_transport_callback_fn) (void *, xran_status_t)

Callback function type packet arrival from transport layer (ETH or IP)

Definition at line 245 of file xran_fh_o_du.h.

Enumeration Type Documentation

◆ callback_to_phy_id

Callback function type for symbol packet enum

Enumerator
XRAN_CB_TTI 

callback on TTI boundary

XRAN_CB_HALF_SLOT_RX 

callback on half slot (sym 7) packet arrival

XRAN_CB_FULL_SLOT_RX 

callback on full slot (sym 14) packet arrival

XRAN_CB_MAX 

max number of callbacks

Definition at line 219 of file xran_fh_o_du.h.

◆ xran_bbdev_init

state of bbdev with xran

Enumerator
XRAN_BBDEV_NOT_USED 

BBDEV is disabled

XRAN_BBDEV_MODE_HW_OFF 

BBDEV is enabled for SW sim mode

XRAN_BBDEV_MODE_HW_ON 

BBDEV is enable for HW

XRAN_BBDEV_MODE_MAX 

Definition at line 278 of file xran_fh_o_du.h.

◆ xran_beamforming_type

type of beamforming

Enumerator
XRAN_BEAM_ID_BASED 

beam index based

XRAN_BEAM_WEIGHT 

beam forming weights

XRAN_BEAM_ATTRIBUTE 

beam index based

Definition at line 270 of file xran_fh_o_du.h.

◆ xran_category

XRAN category enum

Enumerator
XRAN_CATEGORY_A 
XRAN_CATEGORY_B 
XRAN_CATEGORY_MAX 

Definition at line 262 of file xran_fh_o_du.h.

◆ xran_compression_method

Compression Method 6.3.3.13, Table 6-43

Enumerator
XRAN_COMPMETHOD_NONE 
XRAN_COMPMETHOD_BLKFLOAT 
XRAN_COMPMETHOD_BLKSCALE 
XRAN_COMPMETHOD_ULAW 
XRAN_COMPMETHOD_MODULATION 
XRAN_COMPMETHOD_MAX 

Definition at line 203 of file xran_fh_o_du.h.

◆ xran_if_state

Enumerator
XRAN_INIT 
XRAN_RUNNING 
XRAN_STOPPED 

Definition at line 189 of file xran_fh_o_du.h.

◆ xran_input_byte_order

XRAN-PHY interface byte order

Enumerator
XRAN_NE_BE_BYTE_ORDER 

Network byte order (Big endian), xRAN lib doesn't do swap

XRAN_CPU_LE_BYTE_ORDER 

CPU byte order (Little endian), xRAN lib does do swap

Definition at line 471 of file xran_fh_o_du.h.

◆ xran_input_i_q_order

XRAN-PHY interface I and Q order

Enumerator
XRAN_I_Q_ORDER 

I , Q

XRAN_Q_I_ORDER 

Q , I

Definition at line 477 of file xran_fh_o_du.h.

◆ xran_vf_ports

XRAN port enum

Enumerator
XRAN_UP_VF 

port type for U-plane

XRAN_CP_VF 

port type for C-plane

XRAN_VF_MAX 

Definition at line 254 of file xran_fh_o_du.h.

◆ xran_weight_based_beamforming_type

Beamforming type, enumerated as "frequency", "time" or "hybrid" section 10.4.2 Weight-based dynamic beamforming

Enumerator
XRAN_BF_T_FREQUENCY 
XRAN_BF_T_TIME 
XRAN_BF_T_HYBRID 
XRAN_BF_T_MAX 

Definition at line 229 of file xran_fh_o_du.h.

◆ XranFrameDuplexType

Enumerator
XRAN_FDD 
XRAN_TDD 

Definition at line 184 of file xran_fh_o_du.h.

Function Documentation

◆ xran_5g_fronthault_config()

int32_t xran_5g_fronthault_config ( void *  pHandle,
struct xran_buffer_list pSrcBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN],
struct xran_buffer_list pSrcCpBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN],
struct xran_buffer_list pDstBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN],
struct xran_buffer_list pDstCpBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN],
xran_transport_callback_fn  pCallback,
void *  pCallbackTag 
)

Function configures TX(DL) and RX(UL) output buffers and callback (UL only) for XRAN layer with given handle

Parameters
pHandlePointer to XRAN layer handle for given CC
pSrcBufferlist of memory buffers to use to fetch IQs from PHY to XRAN layer (DL)
pSrcCpBufferlist of memory buffers to use to configure C-plane (DL)
pDstBufferlist of memory buffers to use to deliver IQs from XRAN layer to PHY (UL)
pDstCpBufferlist of memory buffers to use to configure C-plane (UL)
xran_transport_callback_fnpCallback Callback function to call with arrival of all packets for given CC for given symbol
pCallbackTagParameters of Callback function
Returns
0 - on success -1 - on error

Definition at line 2551 of file xran_main.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_5g_prach_req()

int32_t xran_5g_prach_req ( void *  pHandle,
struct xran_buffer_list pDstBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN],
xran_transport_callback_fn  pCallback,
void *  pCallbackTag 
)

Function configures PRACH output buffers and callback for XRAN layer with given handle

Parameters
pHandlePointer to XRAN layer handle for given CC
pDstBufferlist of memory buffers to use to deliver PRACH IQs from xran layer to PHY
xran_transport_callback_fnpCallback Callback function to call with arrival of PRACH packets for given CC
pCallbackTagParameters of Callback function
Returns
0 - on success -1 - on error

Definition at line 2636 of file xran_main.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_5g_srs_req()

int32_t xran_5g_srs_req ( void *  pHandle,
struct xran_buffer_list pDstBuffer[XRAN_MAX_ANT_ARRAY_ELM_NR][XRAN_N_FE_BUF_LEN],
xran_transport_callback_fn  pCallback,
void *  pCallbackTag 
)

Function configures SRS output buffers and callback for XRAN layer with given handle

Parameters
pHandlePointer to XRAN layer handle for given CC
pDstBufferlist of memory buffers to use to deliver SRS IQs from xran layer to PHY
xran_transport_callback_fnpCallback Callback function to call with arrival of SRS packets for given CC
pCallbackTagParameters of Callback function
Returns
0 - on success -1 - on error

Definition at line 2679 of file xran_main.c.

Here is the call graph for this function:

◆ xran_add_hdr_offset()

uint8_t* xran_add_hdr_offset ( uint8_t *  dst,
int16_t  compMethod 
)

Function calculates offset for ptr according to ORAN headers requared

Parameters
dstpointer to be addjusted compression method according to enum xran_compression_method
Returns
ptr - pointer to payload given header requared

Definition at line 2741 of file xran_main.c.

◆ xran_bm_allocate_buffer()

int32_t xran_bm_allocate_buffer ( void *  pHandle,
uint32_t  nPoolIndex,
void **  ppData,
void **  ppCtrl 
)

Function allocates buffer used between XRAN layer and PHY. In general case it's DPDK mbuf.

Parameters
pHandlePointer to XRAN layer handle for given CC
nPoolIndexbuffer pool identification
ppDataPointer to pointer where to store address of new buffer
ppCtrlPointer to pointer where to store address of internal private control information
Returns
0 - on success

Definition at line 2499 of file xran_main.c.

Here is the caller graph for this function:

◆ xran_bm_free_buffer()

int32_t xran_bm_free_buffer ( void *  pHandle,
void *  pData,
void *  pCtrl 
)

Function frees buffer used between XRAN layer and PHY. In general case it's DPDK mbuf

Parameters
pHandlePointer to XRAN layer handle for given CC
pDataPointer to buffer
pDataPointer to internal private control information
Returns
0 - on success

Definition at line 2541 of file xran_main.c.

Here is the caller graph for this function:

◆ xran_bm_init()

int32_t xran_bm_init ( void *  pHandle,
uint32_t *  pPoolIndex,
uint32_t  nNumberOfBuffers,
uint32_t  nBufferSize 
)

Function allocates buffer memory (bm) used between XRAN layer and PHY. In general case it's DPDK mbuf. it uses Memory Management system to get memory chunk and define memory pool on top of it.

Parameters
pHandlePointer to XRAN layer handle for given CC
nPoolIndexpointer to buffer pool identification to be returned
nNumberOfBuffersnumber of buffer to allocate in the pool
nBufferSizebuffer size to allocate
Returns
0 - on success

Definition at line 2454 of file xran_main.c.

Here is the caller graph for this function:

◆ xran_close()

int32_t xran_close ( void *  pHandle)

Function closes XRAN layer with given handle

Parameters
pHandlePointer to XRAN layer handle for given CC
Returns
0 - on success

Definition at line 2863 of file xran_main.c.

Here is the caller graph for this function:

◆ xran_get_common_counters()

int32_t xran_get_common_counters ( void *  pXranLayerHandle,
struct xran_common_counters pStats 
)

Function retrun XRAN layer common counters for given handle

Parameters
pHandlePointer to XRAN layer handle for given CC
pStatsPointer to pointer of common counter structure
Returns
0 - on success

Definition at line 3074 of file xran_main.c.

Here is the caller graph for this function:

◆ xran_get_if_state()

enum xran_if_state xran_get_if_state ( void  )

Function returns status of operation of FH layer

Returns
XRAN_INIT - init state XRAN_RUNNING - running XRAN_STOPPED - stopped

Definition at line 238 of file xran_main.c.

Here is the caller graph for this function:

◆ xran_get_slot_idx()

int32_t xran_get_slot_idx ( uint32_t *  nFrameIdx,
uint32_t *  nSubframeIdx,
uint32_t *  nSlotIdx,
uint64_t *  nSecond 
)

Function returns current TTI, Frame, Subframe, Slot Number as seen "Over air" base on PTP time

Parameters
nFrameIdxPointer to Frame number [0-99]
nSubframeIdxPointer to Subframe number [0-10]
nSlotIdxPointer to Slot number [0-7]
nSecondPointer to current UTC second
Returns
current TTI number [0-7999]

Definition at line 2936 of file xran_main.c.

Here is the caller graph for this function:

◆ xran_get_time_stats()

uint32_t xran_get_time_stats ( uint64_t *  total_time,
uint64_t *  used_time,
uint32_t *  core_used,
uint32_t  clear 
)

Function returns XRAN core utilization stats

Parameters
total_time(out) Pointer to variable to store Total time thread has been running
used_time(out) Pointer to variable to store Total time essential tasks have been running on the thread
core_used(out) Pointer to variable to store Core on which the XRAN thread is running
clear(in) If set to 1, then internal variables total_time and used_time are cleared
Returns
0 - on success

Definition at line 2721 of file xran_main.c.

◆ xran_init()

int32_t xran_init ( int  argc,
char *  argv[],
struct xran_fh_init p_xran_fh_init,
char *  appName,
void **  pHandle 
)

Initialize the XRAN Layer via DPDK.

Parameters
argcA non-negative value. If it is greater than 0, the array members for argv[0] through argv[argc] (non-inclusive) shall contain pointers to strings.
argvAn array of strings. The contents of the array, as well as the strings which are pointed to by the array, may be modified by this function.
Returns
0 - on success Error codes returned via rte_errno

Definition at line 2319 of file xran_main.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_malloc()

void* xran_malloc ( size_t  buf_len)

Function allocates memory of given size from heap

Parameters
buf_lenbuffer size
Returns
ptr - to memory buffer or NULL

Definition at line 2736 of file xran_main.c.

◆ xran_mm_destroy()

int32_t xran_mm_destroy ( void *  pHandle)

Function destroys Memory Management (MM) layer of XRAN library

Parameters
pHandlePointer to XRAN layer handle for given CC
Returns
0 - on success

Definition at line 2877 of file xran_main.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_mm_init()

int32_t xran_mm_init ( void *  pHandle,
uint64_t  nMemorySize,
uint32_t  nMemorySegmentSize 
)

Function initialize Memory Management subsystem (mm) in order to handle memory buffers between XRAN layer and PHY.

Parameters
pHandlePointer to XRAN layer handle for given CC
nMemorySizememory size of all segments
nMemorySegmentSizesize of memory per segment
Returns
0 - on success

Definition at line 2447 of file xran_main.c.

Here is the caller graph for this function:

◆ xran_open()

int32_t xran_open ( void *  pHandle,
struct xran_fh_config pConf 
)

Function opens XRAN layer with given handle

Parameters
pHandlePointer to XRAN layer handle for given CC
pointerto struct xran_fh_config pConf Pointer to XRAN configuration structure with specific settings to use
Returns
0 - on success

Definition at line 2756 of file xran_main.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_reg_physide_cb()

int32_t xran_reg_physide_cb ( void *  pHandle,
xran_fh_tti_callback_fn  Cb,
void *  cbParam,
int  skipTtiNum,
enum  callback_to_phy_id 
)

Function registers callback to XRAN layer. Function support callbacks align to OTA time. TTI even, half of slot, full slot with respect to PTP time.

Parameters
pHandlePointer to XRAN layer handle for given CC
Cbpointer to callback function
cbParampointer to Callback Function parameters
skipTtiNumnumber of calls to be skipped before first call
callback_to_phy_idcall back time identification (see enum callback_to_phy_id)
Returns
0 - in case of success -1 - in case of failure

Definition at line 2900 of file xran_main.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_reg_sym_cb()

int32_t xran_reg_sym_cb ( void *  pHandle,
xran_callback_sym_fn  symCb,
void *  symCbParam,
uint8_t  symb,
uint8_t  ant 
)

Function registers callback to XRAN layer. Function support callbacks aligned on packet arrival.

Parameters
pHandlePointer to XRAN layer handle for given CC
symCbpointer to callback function
symCbpointer to Callback Function parameters
symbsymbol to be register for
antAntenna number to trigger callback for packet arrival
Returns
0 - in case of success -1 - in case of failure

Definition at line 2888 of file xran_main.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_sector_get_instances()

int32_t xran_sector_get_instances ( void *  pHandle,
uint16_t  nNumInstances,
xran_cc_handle_t pSectorInstanceHandles 
)

Function returns handles for number of sectors supported by XRAN layer. Currently function supports one handle XRAN layer where it supports only one CC

Parameters
pHandlePointer to XRAN layer handle
nNumInstancestotal number of instances of CC
pSectorInstanceHandlesPointer to xran_cc_handle_t where to store Handle pointer
Returns
0 - on success

Definition at line 2408 of file xran_main.c.

Here is the caller graph for this function:

◆ xran_start()

int32_t xran_start ( void *  pHandle)

Function starts XRAN layer with given handle

Parameters
pHandlePointer to XRAN layer handle for given CC
Returns
0 - on success

Definition at line 2841 of file xran_main.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ xran_stop()

int32_t xran_stop ( void *  pHandle)

Function stops XRAN layer with given handle

Parameters
pHandlePointer to XRAN layer handle for given CC
Returns
0 - on success

Definition at line 2852 of file xran_main.c.

Here is the call graph for this function:
Here is the caller graph for this function: