prj to mdks
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
#include "transfer.h"
|
||||
|
||||
|
||||
#if (DT_ENABLE_BROKEN_FRAME_DETECT)
|
||||
static uint8_t timeo_frame = 0;
|
||||
static struct drv_timer_t timerFrameBroken;
|
||||
|
||||
static void timerFrameBrokenCallback (void *user_data)
|
||||
{
|
||||
timeo_frame = 1;
|
||||
//printf("frame detect clock time up!\r\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
static uint8_t DT_Port_IsRecvData (struct transfer_t *xfer)
|
||||
{
|
||||
#if (DT_ENABLE_BROKEN_FRAME_DETECT)
|
||||
if (timeo_frame) {
|
||||
timeo_frame = 0;
|
||||
|
||||
return BSP_UART_ERR_OK;
|
||||
} else if (BSP_UART_IsFrameEnd((BSP_UART_ID)xfer->if_id) == BSP_UART_ERR_OK) {
|
||||
drv_timer_linkUserData(&timerFrameBroken, xfer);
|
||||
drv_timer_restart(&timerFrameBroken);
|
||||
return BSP_UART_ERR_NO_RECV_FRAME;
|
||||
}
|
||||
|
||||
return BSP_UART_ERR_NO_RECV_FRAME;
|
||||
#else
|
||||
|
||||
return BSP_UART_IsFrameEnd((BSP_UART_ID)xfer->if_id);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void DT_Send (struct transfer_t *xfer, uint8_t *data, uint32_t len)
|
||||
{
|
||||
BSP_UART_Send((BSP_UART_ID)xfer->if_id, data, len, 0xFFFF);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 检测是否接收到一帧数据的轮询接口
|
||||
* @note
|
||||
* @param[in] xfer: 传输控制块对象
|
||||
* @retval exRESULT
|
||||
*/
|
||||
exRESULT DT_PollingReceive (struct transfer_t *xfer)
|
||||
{
|
||||
exRESULT state = X_RESULT_NO_DATA;
|
||||
|
||||
if (DT_Port_IsRecvData(xfer) == 0) {
|
||||
state = X_RESULT_RECV_FRAME;
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 数据传输层初始化
|
||||
* @note
|
||||
* @param[in] xfer: 传输控制块对象
|
||||
* @param[in] if_id: 传输接口 ID
|
||||
* @param[in] buff: 用于接收数据的缓冲池,单位 byte
|
||||
* @param[in] len: 指示接收到的数据长度,单位 byte
|
||||
* @param[in] buff_size: 数据池最大容量,单位 byte
|
||||
* @retval None
|
||||
*/
|
||||
void DT_Init (struct transfer_t *xfer, uint8_t if_id, uint8_t *buff, uint16_t *len, uint32_t buff_size)
|
||||
{
|
||||
ASSERT(xfer != NULL);
|
||||
|
||||
xfer->if_id = if_id;
|
||||
xfer->rx_buff = buff;
|
||||
xfer->rx_len = len;
|
||||
xfer->rx_buff_size = buff_size;
|
||||
|
||||
|
||||
BSP_UART_Init((BSP_UART_ID)xfer->if_id);
|
||||
BSP_UART_LinkUserData((BSP_UART_ID)xfer->if_id, xfer);
|
||||
BSP_UART_EnableReceive( (BSP_UART_ID)xfer->if_id,
|
||||
xfer->rx_buff,
|
||||
xfer->rx_len,
|
||||
xfer->rx_buff_size);
|
||||
|
||||
#if (DT_ENABLE_BROKEN_FRAME_DETECT)
|
||||
drv_timer_init(&timerFrameBroken,
|
||||
timerFrameBrokenCallback,
|
||||
BROKEN_FRAME_INTERVAL_TIME,
|
||||
TIMER_RUN_ONE_SHOT);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user