diff options
author | Damien George <damien.p.george@gmail.com> | 2014-11-27 20:30:33 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-11-27 20:30:33 +0000 |
commit | 075d597464be619475535930de2f36abe69176f8 (patch) | |
tree | 286b765fb8e3c3dc1c741eb825fd7ef49e7e4946 /esp8266/uart.h | |
parent | 2399aa03b81e6a23f0b2719196c07101884222be (diff) | |
download | micropython-075d597464be619475535930de2f36abe69176f8.tar.gz micropython-075d597464be619475535930de2f36abe69176f8.zip |
esp8266: New port of Micro Python to ESP8266 wifi module.
Diffstat (limited to 'esp8266/uart.h')
-rw-r--r-- | esp8266/uart.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/esp8266/uart.h b/esp8266/uart.h new file mode 100644 index 0000000000..ce1438baf3 --- /dev/null +++ b/esp8266/uart.h @@ -0,0 +1,96 @@ +#ifndef _INCLUDED_UART_H_ +#define _INCLUDED_UART_H_ + +#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 = 0, + UART_EVEN_BITS = BIT4 +} UartParityMode; + +typedef enum { + UART_STICK_PARITY_DIS = 0, + UART_STICK_PARITY_EN = BIT3 | BIT5 +} 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); +void uart_tx_one_char(uint8 uart, uint8 TxChar); + +#endif // _INCLUDED_UART_H_ |