32 #ifndef _XRAN_FH_O_DU_H_ 33 #define _XRAN_FH_O_DU_H_ 44 #include <sys/types.h> 45 #include <sys/queue.h> 46 #include <netinet/in.h> 54 #define XRAN_STATUS_SUCCESS (0) 58 #define XRAN_STATUS_FAIL (-1) 63 #define XRAN_STATUS_RETRY (-2) 68 #define XRAN_STATUS_RESOURCE (-3) 75 #define XRAN_STATUS_INVALID_PARAM (-4) 79 #define XRAN_STATUS_FATAL (-5) 85 #define XRAN_STATUS_UNSUPPORTED (-6) 92 #define XRAN_STATUS_INVALID_PACKET (-7) 98 #define XranGetTtiNum(symIdx, numSymPerTti) (((uint32_t)symIdx / (uint32_t)numSymPerTti)) 100 #define XranGetSymNum(symIdx, numSymPerTti) (((uint32_t)symIdx % (uint32_t)numSymPerTti)) 102 #define XranGetFrameNum(tti,SFNatSecStart,numSubFramePerSystemFrame, numSlotPerSubFrame) ((((uint32_t)tti / ((uint32_t)numSubFramePerSystemFrame * (uint32_t)numSlotPerSubFrame)) + SFNatSecStart) & 0x3FF) 104 #define XranGetSubFrameNum(tti, numSlotPerSubFrame, numSubFramePerSystemFrame) (((uint32_t)tti/(uint32_t)numSlotPerSubFrame) % (uint32_t)numSubFramePerSystemFrame) 106 #define XranGetSlotNum(tti, numSlotPerSfn) ((uint32_t)tti % ((uint32_t)numSlotPerSfn)) 108 #define XRAN_PORTS_NUM (1) 109 #define XRAN_N_FE_BUF_LEN (40) 110 #define XRAN_MAX_SECTOR_NR (12) 111 #define XRAN_MAX_ANTENNA_NR (16) 115 #define XRAN_MAX_PANEL_NR (1) 116 #define XRAN_MAX_TRX_ANTENNA_ARRAY (1) 117 #define XRAN_MAX_ANT_ARRAY_ELM_NR (64) 121 #define XRAN_NUM_OF_SYMBOL_PER_SLOT (14) 122 #define XRAN_MAX_NUM_OF_SRS_SYMBOL_PER_SLOT XRAN_NUM_OF_SYMBOL_PER_SLOT 123 #define XRAN_MAX_TDD_PERIODICITY (80) 124 #define XRAN_MAX_CELLS_PER_PORT (XRAN_MAX_SECTOR_NR) 125 #define XRAN_COMPONENT_CARRIERS_MAX (XRAN_MAX_SECTOR_NR) 126 #define XRAN_NUM_OF_ANT_RADIO (XRAN_MAX_SECTOR_NR*XRAN_MAX_ANTENNA_NR) 127 #define XRAN_MAX_PRBS (275) 129 #define XRAN_MAX_SECTIONS_PER_SYM (16) 131 #define XRAN_MAX_PKT_BURST (448+4) 132 #define XRAN_N_MAX_BUFFER_SEGMENT XRAN_MAX_PKT_BURST 134 #define XRAN_STRICT_PARM_CHECK (1) 137 #define XRAN_SLOT_TYPE_INVALID (0) 138 #define XRAN_SLOT_TYPE_DL (1) 139 #define XRAN_SLOT_TYPE_UL (2) 140 #define XRAN_SLOT_TYPE_SP (3) 141 #define XRAN_SLOT_TYPE_FDD (4) 142 #define XRAN_SLOT_TYPE_LAST (5) 145 #define XRAN_SYMBOL_TYPE_DL (0) 146 #define XRAN_SYMBOL_TYPE_UL (1) 147 #define XRAN_SYMBOL_TYPE_GUARD (2) 148 #define XRAN_SYMBOL_TYPE_FDD (3) 150 #define XRAN_NUM_OF_SLOT_IN_TDD_LOOP (80) 152 //#define _XRAN_DEBUG 153 //#define _XRAN_VERBOSE 156 #define xran_log_dbg(fmt, ...) \ 158 "DEBUG: %s(%d): " fmt "\n", \ 160 __LINE__, ##__VA_ARGS__) 162 #define xran_log_dbg(fmt, ...) 165 #if defined(_XRAN_DEBUG) || defined(_XRAN_VERBOSE) 166 #define xran_log_wrn(fmt, ...) \ 169 "WARNING: %s(%d): " fmt "\n", \ 171 __LINE__, ##__VA_ARGS__) 173 #define xran_log_dbg(fmt, ...) 174 #define xran_log_wrn(fmt, ...) 177 #define xran_log_err(fmt, ...) \ 179 "ERROR: %s(%d): " fmt "\n", \ 181 __LINE__, ##__VA_ARGS__) 300 int32_t pkt_proc_core;
301 int32_t pkt_aux_core;
308 uint16_t mask_cuPortId;
309 uint16_t mask_bandSectorId;
311 uint16_t mask_ruPortId;
313 uint8_t bit_cuPortId;
314 uint8_t bit_bandSectorId;
316 uint8_t bit_ruPortId;
326 uint32_t dpdkBasebandFecMode;
327 char *dpdkBasebandDevice;
335 uint16_t totalBfWeights;
338 uint16_t T2a_min_cp_dl;
339 uint16_t T2a_max_cp_dl;
340 uint16_t T2a_min_cp_ul;
341 uint16_t T2a_max_cp_ul;
346 uint16_t T1a_min_cp_dl;
347 uint16_t T1a_max_cp_dl;
348 uint16_t T1a_min_cp_ul;
349 uint16_t T1a_max_cp_ul;
361 int32_t debugStopCount;
362 int32_t DynamicSectionEna;
370 int8_t* p_ext_section;
371 int16_t ext_section_sz;
384 int16_t iq_buffer_offset;
385 int16_t iq_buffer_len;
398 int16_t bf_weight_update;
401 int16_t BeamFormingType;
420 uint8_t start_sym_id;
431 uint8_t nPrachConfIdx;
432 uint8_t nPrachSubcSpacing;
437 uint8_t nPrachZeroCorrConf;
438 uint8_t nPrachRestrictSet;
439 uint16_t nPrachRootSeqIdx;
440 uint16_t nPrachFreqStart;
441 int32_t nPrachFreqOffset;
442 uint8_t nPrachFilterIdx;
459 uint8_t nFrameDuplexType;
507 uint32_t nDLAbsFrePointA;
508 uint32_t nULAbsFrePointA;
509 uint32_t nDLCenterFreqARFCN;
510 uint32_t nULCenterFreqARFCN;
533 uint64_t Rx_pkt_dupl;
534 uint64_t Total_msgs_rcvd;
554 uint32_t nElementLenInBytes;
559 uint32_t nNumberOfElements;
561 uint32_t nOffsetInBytes;
593 uint32_t nNumBuffers;
600 void *pPrivateMetaData;
625 int32_t
xran_init(
int argc,
char *argv[],
struct xran_fh_init *p_xran_fh_init,
char *appName,
void ** pHandle);
644 xran_cc_handle_t * pSectorInstanceHandles);
662 int32_t
xran_mm_init (
void * pHandle, uint64_t nMemorySize, uint32_t nMemorySegmentSize);
682 int32_t
xran_bm_init (
void * pHandle, uint32_t * pPoolIndex, uint32_t nNumberOfBuffers, uint32_t nBufferSize);
831 uint32_t
xran_get_time_stats(uint64_t *total_time, uint64_t *used_time, uint32_t *core_used, uint32_t clear);
952 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)
#define XRAN_MAX_ANT_ARRAY_ELM_NR
#define XRAN_N_FE_BUF_LEN
int32_t xran_open(void *pHandle, struct xran_fh_config *pConf)
end write files for IQ samples for ant
int32_t xran_init(int argc, char *argv[], struct xran_fh_init *p_xran_fh_init, char *appName, 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_mm_init(void *pHandle, uint64_t nMemorySize, uint32_t nMemorySegmentSize)
int16_t(* phy_decoder_poll_fn)(void)
int32_t xran_bm_init(void *pHandle, uint32_t *pPoolIndex, uint32_t nNumberOfBuffers, uint32_t nBufferSize)
int32_t xran_get_slot_idx(uint32_t *nFrameIdx, uint32_t *nSubframeIdx, uint32_t *nSlotIdx, uint64_t *nSecond)
uint8_t * xran_add_hdr_offset(uint8_t *dst, int16_t compMethod)
int32_t xran_start(void *pHandle)
xran_weight_based_beamforming_type
#define XRAN_MAX_ANTENNA_NR
enum xran_if_state xran_get_if_state(void)
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)
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_mm_destroy(void *pHandle)
int32_t xran_close(void *pHandle)
int32_t xran_bm_allocate_buffer(void *pHandle, uint32_t nPoolIndex, void **ppData, void **ppCtrl)
void(* xran_callback_sym_fn)(void *)
int32_t xran_stop(void *pHandle)
void * xran_malloc(size_t buf_len)
int32_t xran_bm_free_buffer(void *pHandle, void *pData, void *pCtrl)
int(* xran_fh_tti_callback_fn)(void *)
#define XRAN_NUM_OF_SYMBOL_PER_SLOT
int32_t xran_sector_get_instances(void *pHandle, uint16_t nNumInstances, xran_cc_handle_t *pSectorInstanceHandles)
int16_t(* phy_encoder_poll_fn)(void)
#define XRAN_MAX_TDD_PERIODICITY
uint32_t xran_get_time_stats(uint64_t *total_time, uint64_t *used_time, uint32_t *core_used, uint32_t clear)
void(* xran_transport_callback_fn)(void *, xran_status_t)
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_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)