Front Haul Interface Library update to first seed code contribution
[o-du/phy.git] / fhi_lib / lib / api / xran_fh_lls_cu.h
diff --git a/fhi_lib/lib/api/xran_fh_lls_cu.h b/fhi_lib/lib/api/xran_fh_lls_cu.h
deleted file mode 100644 (file)
index 24bacba..0000000
+++ /dev/null
@@ -1,822 +0,0 @@
-/******************************************************************************
-*
-*   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.
-*
-*******************************************************************************/
-
-
-/**
- * @brief This file provides public interface to XRAN Front Haul layer implementation as defined in the
- *      XRAN-FH.CUS.0-v02.00 spec. Implementation is specific to lls-CU node
- *      for 5G NR Radio Access technology
- *
- * @file xran_fh_lls_cu.h
- * @ingroup group_lte_source_xran
- * @author Intel Corporation
- *
- **/
-
-#ifndef _XRAN_FH_LLS_CU_H_
-#define _XRAN_FH_LLS_CU_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#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>
-
-#define XRAN_STATUS_SUCCESS (0)
-/**<
- *  @ingroup xran
- *   Success status value. */
-#define XRAN_STATUS_FAIL (-1)
-/**<
- *  @ingroup xran
- *   Fail status value. */
-
-#define XRAN_STATUS_RETRY (-2)
-/**<
- *  @ingroup xran
- *  Retry status value. */
-
-#define XRAN_STATUS_RESOURCE (-3)
-/**<
- *  @ingroup xran
- *  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. */
-
-#define XRAN_STATUS_INVALID_PARAM (-4)
-/**<
- *  @ingroup xran
- *  Invalid parameter has been passed in. */
-#define XRAN_STATUS_FATAL (-5)
-/**<
- *  @ingroup xran
- *  A serious error has occurred. Recommended course of action
- *  is to shutdown and restart the component. */
-
-#define XRAN_STATUS_UNSUPPORTED (-6)
-/**<
- *  @ingroup xran
- *  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. */
-
-/** Macro to calculate TTI number [0:7999] from symbol index [0: 112000-1] used by timing thread */
-#define XranGetTtiNum(symIdx, numSymPerTti) (((uint32_t)symIdx / (uint32_t)numSymPerTti))
-/** Macro to calculate Symbol number [0:7] for given slot from symbol index [0: 112000-1] */
-#define XranGetSymNum(symIdx, numSymPerTti) (((uint32_t)symIdx % (uint32_t)numSymPerTti))
-/** Macro to calculate Frame number [0:99] for given tti [0: 7999] */
-#define XranGetFrameNum(tti,numSubFramePerSystemFrame, numSlotPerSubFrame)  ((uint32_t)tti / ((uint32_t)numSubFramePerSystemFrame * (uint32_t)numSlotPerSubFrame))
-/** Macro to calculate Subframe number [0:9] for given tti [0: 7999] */
-#define XranGetSubFrameNum(tti, numSlotPerSubFrame, numSubFramePerSystemFrame) (((uint32_t)tti/(uint32_t)numSlotPerSubFrame) % (uint32_t)numSubFramePerSystemFrame)
-/** Macro to calculate Slot number [0:7] for given tti [0: 7999] */
-#define XranGetSlotNum(tti, numSlotPerSfn) ((uint32_t)tti % ((uint32_t)numSlotPerSfn))
-
-#define XRAN_PORTS_NUM      (1) /**< number of XRAN ports supported */
-#define XRAN_N_FE_BUF_LEN   (80)/** Number of TTIs (slots) */
-#define XRAN_MAX_SECTOR_NR  (4) /**< Max sectors per XRAN port */
-#define XRAN_MAX_ANTENNA_NR (4) /**< Max antenna per port */
-#define XRAN_NUM_OF_SYMBOL_PER_SLOT          ( 14 ) /**< Number of symbols per slot */
-
-#define XRAN_MAX_CELLS_PER_PORT      (4) /**< Max cells mapped to XRAN port */
-#define XRAN_COMPONENT_CARRIERS_MAX  XRAN_MAX_SECTOR_NR /**< number of CCs */
-#define XRAN_NUM_OF_ANT_RADIO        16  /**< Max Number of Antennas supported for all CC on single XRAN port */
-
-#define XRAN_MAX_PKT_BURST (448+4) /**< 4x14x8 symbols per ms */
-#define XRAN_N_MAX_BUFFER_SEGMENT XRAN_MAX_PKT_BURST /**< Max number of segments per ms */
-
-#define XRAN_STRICT_PARM_CHECK      (1) /**< enable parameter check for C-plane */
-
-//#define _XRAN_DEBUG   /**< Enable debug log */
-//#define _XRAN_VERBOSE /**< Enable verbose log */
-
-#ifdef _XRAN_DEBUG
-    #define xran_log_dbg(fmt, ...)          \
-        fprintf(stderr,                     \
-            "DEBUG: %s(%d): " fmt "\n",     \
-            __FILE__,                       \
-            __LINE__, ##__VA_ARGS__)
-#else
-    #define xran_log_dbg(fmt, ...)
-#endif
-
-#if defined(_XRAN_DEBUG) || defined(_XRAN_VERBOSE)
-    #define xran_log_wrn(fmt, ...)          \
-        fprintf(                            \
-            stderr,                         \
-            "WARNING: %s(%d): " fmt "\n",   \
-            __FILE__,                       \
-            __LINE__, ##__VA_ARGS__)
-#else
-    #define xran_log_dbg(fmt, ...)
-    #define xran_log_wrn(fmt, ...)
-#endif
-
-#define xran_log_err(fmt, ...)          \
-    fprintf(stderr,                     \
-        "ERROR: %s(%d): " fmt "\n",     \
-        __FILE__,                       \
-        __LINE__, ##__VA_ARGS__)
-
-/**
- ******************************************************************************
- * @ingroup xran
- *
- * @description
- *      Compression Method 6.3.3.13, Table 6-43
- *****************************************************************************/
-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
-    };
-
-/**
- ******************************************************************************
- * @ingroup xran
- *
- * @description
- *      Callback function type for symbol packet enum
- *****************************************************************************/
-enum callback_to_phy_id
-{
-    XRAN_CB_TTI = 0, /**< callback on TTI boundary */
-    XRAN_CB_HALF_SLOT_RX =1, /**< callback on half slot (sym 7) packet arrival*/
-    XRAN_CB_FULL_SLOT_RX =2, /**< callback on full slot (sym 14) packet arrival */
-    XRAN_CB_MAX /**< max number of callbacks */
-};
-
-typedef int32_t XranStatusInt32; /**< Xran status return value */
-
-/** callback function type for Symbol packet */
-typedef void (*XRANFHSYMPROCCB)(void*);
-
-/** Callback function type for TTI event */
-typedef int (*XRANFHTTIPROCCB)(void* );
-
-/** Callback function type packet arrival from transport layer (ETH or IP) */
-typedef void (*XranTransportBlockCallbackFn)(void*, int32_t);
-
-/**
-* Component Carrier Initialization
-*/
-typedef struct tagXRANCCINIT
-{
-    uint32_t RadioMode; /**< XRAN mode Cat A or Cat B on given CC */
-    uint32_t nTxAnt;    /**< Number of TX antennas */
-    uint32_t nRxAnt;    /**< Number of RX antennas */
-    uint32_t radiobw;   /**< bandwidth id */
-    uint32_t dpdk_port; /**< networking layer port id */
-    char *dpdk_pcie_eth_dev; /**< pcie device for this cc */
-    char *ru_mac_str;       /**< mac address of RU */
-    uint32_t ulAgc;     /**< state of UL AGC (ON/OFF) */
-    uint32_t numCell;   /**< Number of Cells per port per CC */
-    uint32_t phyInsId[XRAN_MAX_CELLS_PER_PORT]; /**< Mapping of Cell ID to CC */
-    uint32_t dpdkRxCore; /**< DPDK RX Core */
-    uint32_t dpdkTxCore; /**< DPDK TX Core */
-}XRANCCINIT, *PXRANCCINIT;
-
-/** XRAN port enum */
-enum xran_vf_ports
-{
-    XRAN_UP_VF = 0, /**< port type for U-plane */
-    XRAN_CP_VF,     /**< port type for C-plane */
-    XRAN_VF_MAX
-};
-
-/** DPDK IO configuration for XRAN layer */
-typedef struct tagXRAN_IO_LOOP_CFG
-{
-    uint8_t id;
-    char *dpdk_dev[XRAN_VF_MAX];
-    int core;
-    int system_core;    /* Needed as DPDK will change your starting core. */
-    int pkt_proc_core;  /* Needed for packet processing thread. */
-    int pkt_aux_core;   /* Needed for debug purposes. */
-    int timing_core;    /* Needed for getting precise time */
-    int port[XRAN_VF_MAX];  /* This is auto-detected, no need to set. */
-}XRAN_IO_LOOP_CFG, *PXRAN_IO_LOOP_CFG;
-
-/** XRAN spec section 3.1.3.1.6 ecpriRtcid / ecpriPcid define */
-typedef struct tagXRANEAXCIDCONFIG
-{
-    uint16_t mask_cuPortId;     /**< Mask CU PortId */
-    uint16_t mask_bandSectorId; /**< Mask Band */
-    uint16_t mask_ccId;         /**< Mask CC */
-    uint16_t mask_ruPortId;     /**< Mask RU Port ID */
-
-    uint8_t bit_cuPortId;       /**< bandsectorId + ccId + ruportId */
-    uint8_t bit_bandSectorId;   /**< ccId + ruPortId */
-    uint8_t bit_ccId;           /**<  ruportId */
-    uint8_t bit_ruPortId;       /**<  0 */
-}XRANEAXCIDCONFIG, *PXRANEAXCIDCONFIG;
-
-/**
-* XRAN Front haul interface initialization settings
-*/
-typedef struct tagXRANFHINIT
-{
-    uint32_t llscuId;    /**< lls-cu ID */
-    uint32_t nSec;       /**< number of sectors, shall be 1 */
-    XRANCCINIT ccCfg[XRAN_COMPONENT_CARRIERS_MAX]; /**< configuration of each CCs */
-    XRANEAXCIDCONFIG eAxCId_conf; /**< config of ecpriRtcid/ecpriPcid */
-    uint32_t radio_iface;         /**< enable/disable radio */
-    uint32_t dpdkMasterCore;      /**< master core of DPDK */
-    uint32_t dpdkMemorySize;      /**< huge pages allocation for DPDK */
-    uint32_t dpdkIrqMode;         /**< DPDK IRQ or PMD mode */
-    uint32_t dpdkBasebandFecMode; /**< DPDK Baseband FEC device mode (0-SW, 1-HW) */
-    char *dpdkBasebandDevice;     /**< DPDK Baseband device address */
-    uint32_t singleThreadTxRx;
-    uint32_t bbuPoolCores;  /**< DPDK cores for BBU pool */
-    uint32_t radioEnabled;  /**< reserved */
-    uint32_t powerSaveEn;   /**< reserved */
-    char *filePrefix;       /**< DPDK prefix */
-    XRAN_IO_LOOP_CFG io_cfg;/**< DPDK IO for XRAN */
-    uint8_t xranMode;       /**< mode: lls-CU or RU */
-    int8_t *p_lls_cu_addr;  /**<  lls-CU Ethernet Mac Address */
-    int8_t *p_ru_addr;      /**<  RU Ethernet Mac Address */
-    uint32_t ttiPeriod;     /**< TTI period */
-
-    uint16_t Tadv_cp_dl;    /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T2a_min_cp_dl; /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T2a_max_cp_dl; /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T2a_min_cp_ul; /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T2a_max_cp_ul; /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T2a_min_up;    /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T2a_max_up;    /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t Ta3_min;       /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t Ta3_max;       /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T1a_min_cp_dl; /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T1a_max_cp_dl; /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T1a_min_cp_ul; /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T1a_max_cp_ul; /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T1a_min_up;    /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t T1a_max_up;    /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t Ta4_min;       /**< Table 2 7 : xRAN Delay Management Model Parameters */
-    uint16_t Ta4_max;       /**< Table 2 7 : xRAN Delay Management Model Parameters */
-
-    uint8_t enableCP;    /**<  enable C-plane */
-    uint8_t cp_vlan_tag; /**<  C-plane vlan tag */
-    uint8_t up_vlan_tag; /**<  U-plane vlan tag */
-    int32_t debugStop;   /**<  enable auto stop */
-} XRANFHINIT, *PXRANFHINIT;
-
-/** XRAN Playback format */
-typedef enum {
-    XRAN_RADIO_PLAYBACK_TIME_DOMAIN = 0,
-    XRAN_RADIO_PLAYBACK_FREQ_DOMAIN = 1
-} XranPlaybackFormatEnum;
-
-/* PRACH config required for XRAN based FH */
-typedef struct tagXRANPRACHCONFIG
-{
-    /**** word 5 *****/
-    /* PRACH config*/
-    /** PRACH Configuration Index*/
-    uint8_t      nPrachConfIdx;
-    /** PRACH Sub-carrier spacing
-    Value:0->1
-    For below 6GHz the values indicate 15kHz or 30kHz
-    For above 6GHz the values indicate 60kHz or 120kHz*/
-    /*PRACH zeroCorrelationZoneConfig */
-    uint8_t      nPrachSubcSpacing;
-    /** PRACH zeroCorrelationZoneConfig */
-    uint8_t      nPrachZeroCorrConf;
-    /** PRACH restrictedSetConfig */
-    uint8_t      nPrachRestrictSet;
-
-    /**** word 6 *****/
-    /** PRACH Root Sequence Index */
-    uint16_t     nPrachRootSeqIdx;
-    /** PRACH prach-frequency-start  */
-    uint16_t     nPrachFreqStart;
-
-    /** PRACH prach-frequency-offset */
-    int32_t     nPrachFreqOffset;
-    /** PRACH Filter index */
-    uint8_t     nPrachFilterIdx;
-}XRANPRACHCONFIG, *PXRANPRACHCONFIG;
-
-/** XRAN front haul playback configuration (not supported in 19.03) */
-typedef struct tagXRANFHPLAYBACK
-{
-    XranPlaybackFormatEnum TxPlayFormatType; /**< type of play back files [Time|Freq] */
-
-    unsigned long TxPlayBufAddr[XRAN_NUM_OF_ANT_RADIO]; /**< pointer to buffers to play */
-    uint32_t TxPlayBufSize; /**< Buffer size */
-
-    char*      TxPlayFileName[XRAN_NUM_OF_ANT_RADIO]; /**< files to play */
-    uint32_t   TxPlayFileSize; /**< expected the same size for all Ant */
-
-}XRANPLAYBACKCONFIG,*PXRANPLAYBACKCONFIG;
-
-/** XRAN front haul logging configuration (not supported in 19.03) */
-typedef struct tagXRANFHLOGCONF
-{
-    /* logging */
-    unsigned long TxLogBufAddr;
-    uint32_t TxLogBufSize;
-
-    unsigned long TxLogIfftInAddr;
-    uint32_t  TxLogIfftInSize;
-
-    unsigned long TxLogIfft1200InAddr;
-    uint32_t  TxLogIfft1200InSize;
-
-    unsigned long RxLogFftOutAddr;
-    uint32_t  RxLogFftOutSize;
-
-    unsigned long RxLogFftOutExpAddr;
-    uint32_t  RxLogFftOutExpSize;
-
-    unsigned long RxLogFftOutGainAddr;
-    uint32_t  RxLogFftOutGainSize;
-
-    unsigned long RxLogBufAddr;
-    uint32_t  RxLogBufSize;
-
-    unsigned long RxLogAlawBufAddr;
-    uint32_t  RxLogAlawBufSize;
-
-    unsigned long RxLogPrachBufAddr;
-    uint32_t  RxLogPrachBufSize;
-
-    uint32_t  cfg_dl_iq_buf_enabled;
-    uint32_t  cfg_ul_iq_buf_enabled;
-
-}XRANFHLOGCONF, *PXRANFHLOGCONF;
-
-/** XRAN front haul frame config */
-typedef struct tagXRANFRAMECONFIG
-{
-    /** Frame Duplex type:  0 -> FDD, 1 -> TDD */
-    uint8_t      nFrameDuplexType;
-    /** Numerology, determine sub carrier spacing, Value: 0->4
-       0: 15khz,  1: 30khz,  2: 60khz
-       3: 120khz, 4: 240khz */
-    uint8_t      nNumerology;
-    /** TDD period */
-    uint8_t      nTddPeriod;
-}XRANFRAMECONFIG, *PXRANFRAMECONFIG;
-
-/** XRAN front haul BBU pooling config */
-typedef struct tagXRANBBUPOOLCONFIG
-{
-    uint32_t isBbuPool; /**< FH running with BBU pool */
-}XRANBBUPOOLCONFIG, *PXRANBBUPOOLCONFIG;
-
-/** XRAN front haul IQ compression settings */
-typedef struct tagXRANRUCONFIG
-{
-    uint8_t iqWidth;        /**< IQ bit width */
-    uint8_t compMeth;       /**< Compression method */
-    uint8_t fftSize;        /**< FFT Size */
-}XRANRUCONFIG, *PXRANRUCONFIG;
-
-/** XRAN front haul Phase compensation settings */
-typedef struct
-{
-    uint32_t nSecNum;
-    uint32_t nPhaseCompFlag;
-    uint32_t nDlArfcn[XRAN_MAX_SECTOR_NR];
-    uint32_t nUlArfcn[XRAN_MAX_SECTOR_NR];
-}XRANPHASECompConfig;
-
-/**
- * @ingroup xran
- *XRAN front haul general configuration */
-typedef struct tagXRANFHCONFIG
-{
-    uint32_t            dpdk_port; /**< DPDK port number used for FH */
-    uint32_t            sector_id; /**< Band sector ID for FH */
-    uint32_t            nCC;       /**< number of Component carriers supported on FH */
-    uint32_t            neAxc;     /**< number of eAxc supported on FH */
-    XRANPLAYBACKCONFIG  playback_conf;/**< configuration of playback of IQs supported with FH */
-    XRANFHLOGCONF       log_conf;     /**< config of logging functionality supported by FH */
-    XRANFHTTIPROCCB     ttiCb;        /**< call back for TTI event */
-    void                *ttiCbParam;  /**< parameters of call back function */
-    XRANPRACHCONFIG     prach_conf;   /**< PRACH specific configurations for FH */
-    XRANFRAMECONFIG     frame_conf;   /**< frame config */
-    XRANBBUPOOLCONFIG   bbu_conf;     /**< BBU pool config */
-    XRANRUCONFIG        ru_conf;      /**< config of RU as per XRAN spec */
-    XRANPHASECompConfig phase_compensation; /**< phase compensation settings */
-}XRANFHCONFIG, *PXRANFHCONFIG;
-
-
-/**
- * @ingroup xran
- * CC instance handle pointer type */
-typedef void * XranCcInstanceHandleVoidP;
-
-/**
- *****************************************************************************
- * @ingroup xran
- *
- * @description
- *      A flat buffer structure. The data pointer, pData, is a virtual address.
- *      The API requires the memory to by physically contiguous. Each flat
- *      buffer segment may contain several equally sized elements.
- *
- *****************************************************************************/
-typedef struct XRANFlatBuffer
-{
-    uint32_t nElementLenInBytes;
-    /**< The Element length specified in bytes.
-     * This parameter specifies the size of a single element in the buffer.
-     * The total size of the buffer is described as
-     * bufferSize = nElementLenInBytes * nNumberOfElements */
-    uint32_t nNumberOfElements;
-    /**< The number of elements in the physical contiguous memory segment */
-    uint32_t nOffsetInBytes;
-    /**< Offset in bytes to the start of the data in the physical contiguous
-     * memory segment */
-    uint32_t nIsPhyAddr;
-    uint8_t *pData;
-    /**< The data pointer is a virtual address, however the actual data pointed
-     * to is required to be in contiguous physical memory unless the field
-     requiresPhysicallyContiguousMemory in CpaInstanceInfo is false. */
-} XRANFlatBufferStruct;
-
-/**
- *****************************************************************************
- * @ingroup xran
- *      Scatter/Gather buffer list containing an array of Simple buffers.
- *
- * @description
- *      A Scatter/Gather buffer list structure. It is expected that this buffer
- *      structure will be used where more than one flat buffer can be provided
- *      on a particular API.
- *
- *      IMPORTANT - The memory for the pPrivateMetaData member must be allocated
- *      by the client as contiguous memory.  When allocating memory for
- *      pPrivateMetaData a call to cpaCyBufferListGetMetaSize MUST be made to
- *      determine the size of the Meta Data Buffer.  The returned size
- *      (in bytes) may then be passed in a memory allocation routine to allocate
- *      the pPrivateMetaData memory.
- *
- *****************************************************************************/
-typedef struct XRANBufferList
-{
-    uint32_t nNumBuffers;
-    /**< Number of pointers */
-    XRANFlatBufferStruct *pBuffers;
-    /**< Pointer to an unbounded array containing the number of CpaFlatBuffers
-     * defined by nNumBuffers */
-    void *pUserData;
-    /**< This is an opaque field that is not read or modified internally. */
-    void *pPrivateMetaData;
-    /**< Private Meta representation of this buffer List - the memory for this
-     * buffer needs to be allocated by the client as contiguous data.
-     * The amount of memory required is returned with a call to
-     * cpaCyBufferListGetMetaSize. If cpaCyBufferListGetMetaSize returns a size
-     * of zero no memory needs to be allocated, and this parameter can be NULL.
-     */
-} XRANBufferListStruct;
-
-/**
- * @ingroup xran
- * Initialize the XRAN Layer via DPDK.
- *
- * @param argc
- *   A 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.
- * @param argv
- *   An 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.
- *
- * @return
- *   0 - on success
- *   Error codes returned via rte_errno
- */
-int32_t xran_init(int argc, char *argv[], PXRANFHINIT p_xran_fh_init, char *appName, void ** pHandle);
-
-/**
- * @ingroup xran
- *
- *   Function returns handles for number of sectors supported by XRAN layer. Currently function
- *   supports one handle XRAN layer where it supports only one CC
- *
- * @param pHandle
- *   Pointer to XRAN layer handle
- * @param nNumInstances
- *   total number of instances of CC
- * @param pSectorInstanceHandles
- *   Pointer to XranCcInstanceHandleVoidP where to store Handle pointer
- *
- * @return
- *   0 - on success
- */
-int32_t xran_sector_get_instances (void * pHandle, uint16_t nNumInstances,
-               XranCcInstanceHandleVoidP * pSectorInstanceHandles);
-
-/**
- * @ingroup xran
- *
- *   Function initialize Memory Management subsystem (mm) in order to handle memory buffers between XRAN layer
- *   and PHY.
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param nMemorySize
- *   memory size of all segments
- * @param nMemorySegmentSize
- *   size of memory per segment
- *
- * @return
- *   0 - on success
- */
-int32_t xran_mm_init (void * pHandle, uint64_t nMemorySize, uint32_t nMemorySegmentSize);
-
-/**
- * @ingroup xran
- *
- *   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.
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param nPoolIndex
- *   pointer to buffer pool identification to be returned
- * @param nNumberOfBuffers
- *   number of buffer to allocate in the pool
- * @param nBufferSize
- *   buffer size to allocate
- *
- * @return
- *   0 - on success
- */
-int32_t xran_bm_init (void * pHandle, uint32_t * pPoolIndex, uint32_t nNumberOfBuffers, uint32_t nBufferSize);
-
-/**
- * @ingroup xran
- *
- *   Function allocates buffer used between XRAN layer and PHY. In general case it's DPDK mbuf.
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param nPoolIndex
- *   buffer pool identification
- * @param ppVirtAddr
- *   Pointer to pointer where to store address of new buffer
- *
- * @return
- *   0 - on success
- */
-int32_t xran_bm_allocate_buffer(void * pHandle, uint32_t nPoolIndex, void **ppVirtAddr);
-
-/**
- * @ingroup xran
- *
- *   Function frees buffer used between XRAN layer and PHY. In general case it's DPDK mbuf
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param pVirtAddr
- *   Pointer to buffer
- *
- * @return
- *   0 - on success
- */
-int32_t xran_bm_free_buffer(void * pHandle, void *pVirtAddr);
-
-/**
- * @ingroup xran
- *
- *   Function destroys Memory Management (MM) layer of XRAN library
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- *
- * @return
- *   0 - on success
- */
-int32_t xran_mm_destroy (void * pHandle);
-
-/**
- * @ingroup xran
- *
- *   Function configures TX(DL) and RX(UL) output buffers and callback (UL only) for XRAN layer with
- *   given handle
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param pSrcBuffer
- *   list of memory buffers to use to fetch IQs from PHY to XRAN layer (DL)
- * @param pDstBuffer
- *   list of memory buffers to use to deliver IQs from XRAN layer to PHY (UL)
- * @param XranTransportBlockCallbackFn pCallback
- *   Callback function to call with arrival of all packets for given CC for given symbol
- * @param pCallbackTag
- *   Parameters of Callback function
- *
- * @return
- *   0  - on success
- *   -1 - on error
- */
-int32_t xran_5g_fronthault_config (void * pHandle,
-                XRANBufferListStruct *pSrcBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN],
-                XRANBufferListStruct *pDstBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN],
-                XranTransportBlockCallbackFn pCallback,
-                void *pCallbackTag);
-
-/**
- * @ingroup xran
- *
- *   Function configures PRACH output buffers and callback for XRAN layer with given handle
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param pDstBuffer
- *   list of memory buffers to use to deliver PRACH IQs from xran layer to PHY
- * @param XranTransportBlockCallbackFn pCallback
- *   Callback function to call with arrival of PRACH packets for given CC
- * @param pCallbackTag
- *   Parameters of Callback function
- *
- * @return
- *   0  - on success
- *   -1 - on error
- */
-int32_t xran_5g_prach_req (void *  pHandle,
-                XRANBufferListStruct *pDstBuffer[XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN],
-                XranTransportBlockCallbackFn pCallback,
-                void *pCallbackTag);
-/**
- * @ingroup xran
- *
- *   Function configures phase compensation for RU via XRAN layer with given handle
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param nTxPhaseCps
- *   TX(DL) phase compensation settings
- * @param nTxPhaseCps
- *   RX(UL) phase compensation settings
- * @param nSectorId
- *   Sector id to use with given settings
- *
- * @return
- *   0 - on success
- */
-int32_t xran_5g_pre_compenstor_cfg(void* pHandle,
-                uint32_t nTxPhaseCps,
-                uint32_t nRxPhaseCps,
-                uint8_t nSectorId);
-
-/**
- * @ingroup xran
- *
- *   Function opens XRAN layer with given handle
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param PXRANFHCONFIG pConf
- *   Pointer to XRAN configuration structure with specific settings to use
- *
- * @return
- *   0 - on success
- */
-int32_t xran_open(void *pHandle, PXRANFHCONFIG pConf);
-
-/**
- * @ingroup xran
- *
- *   Function starts XRAN layer with given handle
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- *
- * @return
- *   0 - on success
- */
-int32_t xran_start(void *pHandle);
-
-/**
- * @ingroup xran
- *
- *   Function stops XRAN layer with given handle
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- *
- * @return
- *   0 - on success
- */
-int32_t xran_stop(void *pHandle);
-
-/**
- * @ingroup xran
- *
- *   Function closes XRAN layer with given handle
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- *
- * @return
- *   0 - on success
- */
-int32_t xran_close(void *pHandle);
-
-/**
- * @ingroup xran
- *
- *   Function registers callback to XRAN layer. Function support callbacks aligned on packet arrival.
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param symCb
- *   pointer to callback function
- * @param symCb
- *   pointer to Callback Function parameters
- * @param symb
- *   symbol to be register for
- * @param ant
- *   Antenna number to trigger callback for packet arrival
- *
- * @return
- *    0 - in case of success
- *   -1 - in case of failure
- */
-int32_t xran_reg_sym_cb(void *pHandle, XRANFHSYMPROCCB symCb, void * symCbParam, uint8_t symb, uint8_t ant);
-
-/**
- * @ingroup xran
- *
- *   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.
- *
- * @param pHandle
- *   Pointer to XRAN layer handle for given CC
- * @param Cb
- *   pointer to callback function
- * @param cbParam
- *   pointer to Callback Function parameters
- * @param skipTtiNum
- *   number of calls to be skipped before first call
- * @param callback_to_phy_id
- *   call back time identification (see enum callback_to_phy_id)
- *
- * @return
- *    0 - in case of success
- *   -1 - in case of failure
- */
-int32_t xran_reg_physide_cb(void *pHandle, XRANFHTTIPROCCB Cb, void *cbParam, int skipTtiNum, enum callback_to_phy_id);
-
-/**
- * @ingroup xran
- *
- *   Function returns current TTI, Frame, Subframe, Slot Number as seen "Over air" base on PTP time
- *
- * @param nFrameIdx
- *    Pointer to Frame number [0-99]
- *
- * @param nSubframeIdx
- *    Pointer to Subframe number [0-10]
- *
- * @param nSlotIdx
- *    Pointer to Slot number [0-7]
- *
- * @param nSecond
- *    Pointer to current UTC second
- *
- * @return
- *   current TTI number [0-7999]
- */
-int32_t xran_get_slot_idx (uint32_t *nFrameIdx, uint32_t *nSubframeIdx,  uint32_t *nSlotIdx, uint64_t *nSecond);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _XRAN_FH_LLS_CU_H_*/