#ifndef MICROPY_INCLUDED_ESP8266_UART_H #define MICROPY_INCLUDED_ESP8266_UART_H #include #define UART0 (0) #define UART1 (1) typedef enum { UART_FIVE_BITS = 0x0, UART_SIX_BITS = 0x1, UART_SEVEN_BITS = 0x2, UART_EIGHT_BITS = 0x3 } UartBitsNum4Char; typedef enum { UART_ONE_STOP_BIT = 0, UART_ONE_HALF_STOP_BIT = BIT2, UART_TWO_STOP_BIT = BIT2 } UartStopBitsNum; typedef enum { UART_NONE_BITS = 0, UART_ODD_BITS = BIT0, UART_EVEN_BITS = 0 } UartParityMode; typedef enum { UART_STICK_PARITY_DIS = 0, UART_STICK_PARITY_EN = BIT1 } UartExistParity; typedef enum { UART_BIT_RATE_9600 = 9600, UART_BIT_RATE_19200 = 19200, UART_BIT_RATE_38400 = 38400, UART_BIT_RATE_57600 = 57600, UART_BIT_RATE_74880 = 74880, UART_BIT_RATE_115200 = 115200, UART_BIT_RATE_230400 = 230400, UART_BIT_RATE_256000 = 256000, UART_BIT_RATE_460800 = 460800, UART_BIT_RATE_921600 = 921600 } UartBautRate; typedef enum { UART_NONE_CTRL, UART_HARDWARE_CTRL, UART_XON_XOFF_CTRL } UartFlowCtrl; typedef enum { UART_EMPTY, UART_UNDER_WRITE, UART_WRITE_OVER } RcvMsgBuffState; typedef struct { uint32 RcvBuffSize; uint8 *pRcvMsgBuff; uint8 *pWritePos; uint8 *pReadPos; uint8 TrigLvl; //JLU: may need to pad RcvMsgBuffState BuffState; } RcvMsgBuff; typedef struct { uint32 TrxBuffSize; uint8 *pTrxBuff; } TrxMsgBuff; typedef enum { UART_BAUD_RATE_DET, UART_WAIT_SYNC_FRM, UART_SRCH_MSG_HEAD, UART_RCV_MSG_BODY, UART_RCV_ESC_CHAR, } RcvMsgState; typedef struct { UartBautRate baut_rate; UartBitsNum4Char data_bits; UartExistParity exist_parity; UartParityMode parity; // chip size in byte UartStopBitsNum stop_bits; UartFlowCtrl flow_ctrl; RcvMsgBuff rcv_buff; TrxMsgBuff trx_buff; RcvMsgState rcv_state; int received; int buff_uart_no; //indicate which uart use tx/rx buffer } UartDevice; void uart_init(UartBautRate uart0_br, UartBautRate uart1_br); int uart0_rx(void); bool uart_rx_wait(uint32_t timeout_us); int uart_rx_char(void); void uart_tx_one_char(uint8 uart, uint8 TxChar); void uart_flush(uint8 uart); void uart_os_config(int uart); void uart_setup(uint8 uart); // check status of rx/tx int uart_rx_any(uint8 uart); int uart_tx_any_room(uint8 uart); #endif // MICROPY_INCLUDED_ESP8266_UART_H