/**********************************************************************************************************************
*  Copyright (C), 2022-2026, SMARTLOGIC TECHNOLOGY LTD.
*  File Name: ecpri_csu.h
*  Create Date: 23/07/31
*  Description: eCPRI CSU Module Header File
*  Change History:
*      <author>      <time>      <version>   <desc>
*    1. LiX         23/07/31        1.0       Build this module
**********************************************************************************************************************/

#ifndef _ECPRI_CSU_H_
#define _ECPRI_CSU_H_

#include "typedef.h"
#include "ucp_csu.h"
#include "ucp_utility.h"
#include "ape_csu.h"


#ifndef NULL
#define NULL                                    ((void *)0)
#endif

#define ECPRI_CSU_REG_NUM                       32
#define ECPRI_CSU_RFM_REG_START                 0
#define ECPRI_CSU_RFM_REG_END                   11

/* STC统计最大cycle值 */
#define STC_CYCLE_MAX                           1000000000ul


typedef enum _tagEcpriChId
{
    ECPRI_U_PLANE = 0,
    ECPRI_C_PLANE
} EcpriChId;

typedef struct _tagEcpriCsuNodePara
{
	uint32_t dataAddr; // 链表节点数据地址
	uint32_t allNum;   // 链表节点数据长度
}stEcpriCsuNodePara;

typedef struct _tagEcpriListPara
{
	uint32_t listAddr;
	uint32_t listNodeNum;
}stEcpriListPara;

int32_t ecpri_csu_init(void);

uint32_t ecpri_csu_get_free_channel(void);

uint32_t ecpri_csu_send(uint64_t dataAddr, uint32_t dataLen, uint8_t isWait);

int32_t ecpri_csu_tx_list_init(uint32_t listAddr, uint32_t nodeNum, stEcpriCsuNodePara* pListNode);

/*!
* @brief:  ECPRI CSU链表发送
* @author: xinxin.li
* @Date:  2024年1月11日
* @param: listAddr:          [链表首地址 ]
* @param: nodeNum :          [节点个数，4天线数据，可4个节点 ]
* @param: pListNode :        [指向链表节点信息数组的指针，链表节点信息，包括数据地址和数据长度 ]
* @param: isWait :           [是否等DMA结束函数返回0:不等待,1:等待 ]
* @return: -1 : 入参错误；
*          >=0: tag号
*/
int32_t ecpri_csu_link_send(uint32_t listAddr, uint32_t nodeNum, stEcpriCsuNodePara* pListNode, uint8_t isWait);

int32_t ecpri_csu_task_lookup(uint8_t task_tag, uint8_t isWait);
#endif



