1818
1919#define DEFAULT_TCP2UART_PORT USE_TCP2UART // 12345
2020
21- void uart_init (void ) ICACHE_FLASH_ATTR ;
21+ void uarts_init (void ) ICACHE_FLASH_ATTR ;
2222
2323void uart_save_fcfg (uint8 set ) ICACHE_FLASH_ATTR ;
2424void uart_read_fcfg (uint8 set ) ICACHE_FLASH_ATTR ;
@@ -33,27 +33,46 @@ void update_mux_uart0(void) ICACHE_FLASH_ATTR;
3333void update_mux_txd1 (void ) ICACHE_FLASH_ATTR ;
3434void set_uartx_invx (uint8 uartn , uint8 set , uint32 bit_mask ) ICACHE_FLASH_ATTR ;
3535
36- #define RST_FIFO_CNT_SET 16 // при остатке в fifo места для 16 символов срабатывает RTS
36+ #define RST_FIFO_CNT_SET 8 // при остатке в fifo места для 16 символов срабатывает RTS
3737
3838#ifdef USE_TCP2UART
39- extern os_timer_t uart0_rx_buf_timer ;
40- extern os_timer_t uart0_tx_buf_timer ;
41- extern TCP_SERV_CONN * tcp2uart_conn ;
42- extern TCP_SERV_CFG * tcp2uart_servcfg ;
43- extern uint32 wait_send_tx ;
4439
45- void loading_rx_buf (void ) ICACHE_FLASH_ATTR ;
46- void send_tx_buf (void ) ICACHE_FLASH_ATTR ;
40+ #define UART_RX_BUF_MAX 8192 // размер приемного буфера (не менее TCP_MSS*2 + ...)
41+ #define UART_TASK_QUEUE_LEN 3
42+ #define UART_TASK_PRIO (USER_TASK_PRIO_0) // + SDK_TASK_PRIO)
43+
44+ typedef void uart_rx_blk_func (uint8 * buf , uint32 count ); // функция обработки принятых блоков из UART
45+ typedef void uart_tx_next_chars_func (void ); // запрос на передачу следующих символов блока в UART
46+
47+ typedef enum {
48+ UART_RX_CHARS = 1 ,
49+ UART_TX_CHARS ,
50+ } UART_SIGS ;
4751
48- err_t tcp2uart_write (uint8 * pblk , uint16 len ) ICACHE_FLASH_ATTR ;
49- err_t tcp2uart_server_init (uint16 portn ) ICACHE_FLASH_ATTR ;
50- err_t tcp2uart_client_init (uint32 ip , uint16 portn );
51- err_t tcp2uart_start (uint16 newportn ) ICACHE_FLASH_ATTR ;
52- void tcp2uart_close (void ) ICACHE_FLASH_ATTR ;
52+ typedef struct {
53+ uint8 * uart_rx_buf ; // указатель на буфер [UART_RX_BUF_MAX], если равер NULL, драйвер отключен
54+ uint32 uart_rx_buf_count ; // указатель принимаемых с UART символов в буфере
55+ uint32 uart_out_buf_count ; // кол-во переданных байт из буфера на обработку
56+ uint32 uart_nsnd_buf_count ; // кол-во ещё не переданных байт из буфера (находящихся в ожидании к передаче)
57+ uart_rx_blk_func * uart_send_rx_blk ; // функция обработки принятых блоков из UART
58+ uart_tx_next_chars_func * uart_tx_next_chars ; // запрос на передачу следующих символов блока в UART
59+ ETSEvent taskQueue [UART_TASK_QUEUE_LEN ];
60+ }suart_drv ;
5361
54- void tcp2uart_int_rxtx_disable (void ) ICACHE_FLASH_ATTR ;
62+ void uart0_set_tout (void );
63+ void uart_del_rx_chars (uint32 len );
64+ uint32 uart_tx_buf (uint8 * buf , uint32 count );
65+ bool uart_drv_start (void );
66+ void uart_drv_close (void );
5567
56- #define MAX_WAIT_TX_BUF 50000ul // 50 ms
68+
69+ err_t tcp2uart_write (uint8 * pblk , uint16 len );
70+ err_t tcp2uart_start (uint16 newportn );
71+ void tcp2uart_close (void );
72+
73+ extern suart_drv uart_drv ;
74+ extern TCP_SERV_CONN * tcp2uart_conn ;
75+ extern TCP_SERV_CFG * tcp2uart_servcfg ;
5776
5877#endif // USE_TCP2UART
5978#endif /* _TCP2UART_H_ */
0 commit comments