117 lines
2.7 KiB
C
117 lines
2.7 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
|
|
#ifndef _VFS_UART_H
|
|
#define _VFS_UART_H
|
|
|
|
#include "iot_config.h"
|
|
#include "os_task.h"
|
|
#include "termios.h"
|
|
#include "iot_irq.h"
|
|
#include "iot_ringbuf.h"
|
|
#include "iot_uart_api.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
#if IOT_FTM_SUPPORT
|
|
#define UART_TXBUF_SUPPORT 1
|
|
#endif
|
|
*/
|
|
/* Disable tx ring buffer. */
|
|
#ifdef UART_TXBUF_SUPPORT
|
|
#undef UART_TXBUF_SUPPORT
|
|
#endif
|
|
#define UART_TXBUF_SUPPORT 0
|
|
|
|
#define UART_RX_Q_LEN 1024
|
|
#define UART_ICC_Q_LEN (2048 + 128)
|
|
|
|
#if IOT_VRITUAL_UART_PORT_ENABLE
|
|
#define UART0_RX_Q_LEN (2048 + 64)
|
|
#else
|
|
#define UART0_RX_Q_LEN UART_RX_Q_LEN
|
|
#endif
|
|
|
|
#if UART_TXBUF_SUPPORT
|
|
#define UART_TX_Q_LEN 2048
|
|
#endif
|
|
|
|
#define USART_NO_BLOCK 0
|
|
#define USART_BLOCK_TIME 0xffffffffUL
|
|
|
|
#define UART_ASYNC_READ_ONCE 50
|
|
|
|
#define UART_EXT_RX_BUF_LEN 256
|
|
|
|
typedef enum {
|
|
USART1_FILENO = 0,
|
|
USART2_FILENO,
|
|
USART3_FILENO,
|
|
USART4_FILENO,
|
|
USART5_FILENO,
|
|
USART6_FILENO,
|
|
USART7_FILENO,
|
|
USART8_FILENO,
|
|
}USART_FILENO;
|
|
|
|
#ifdef UART_ASYNC_OPERATION
|
|
typedef struct _tx_rx_info{
|
|
uint8_t *p_buf;
|
|
void *param;
|
|
void (*cb)(void*, uint8_t);
|
|
size_t size;
|
|
size_t old_size;
|
|
}tx_rx_info;
|
|
#endif
|
|
|
|
enum {
|
|
PORT_TYPE_UART = 0,
|
|
PORT_TYPE_RS485,
|
|
PORT_TYPE_IR,
|
|
PORT_TYPE_VP
|
|
};
|
|
|
|
typedef struct uart_info
|
|
{
|
|
uint8_t port;
|
|
uint8_t type;
|
|
uint16_t txe_pin; /* gpio NO. */
|
|
uint32_t irq;
|
|
uint32_t used;
|
|
struct ringbuf rx_rb;
|
|
#if UART_TXBUF_SUPPORT
|
|
struct ringbuf tx_rb;
|
|
#endif
|
|
struct termios termios;
|
|
os_task_h task_h;
|
|
iot_irq_t handle;
|
|
#ifdef UART_ASYNC_OPERATION
|
|
tx_rx_info rx_info;
|
|
tx_rx_info tx_info;
|
|
bool_t async_mode;
|
|
#endif
|
|
struct uart_ctrl *drv;
|
|
}uart_info;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //_VFS_UART_H
|