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
 |