Skip to content
Permalink
bcafcf8fc3
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
113 lines (96 sloc) 2.62 KB
#ifndef MICROPY_INCLUDED_ESP8266_UART_H
#define MICROPY_INCLUDED_ESP8266_UART_H
#include <eagle_soc.h>
#define UART0 (0)
#define UART1 (1)
#define UART0_STATIC_RXBUF_LEN (16)
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 = 0x1,
UART_ONE_HALF_STOP_BIT = 0x2,
UART_TWO_STOP_BIT = 0x3
} 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;
extern uint8 uart_ringbuf_array[UART0_STATIC_RXBUF_LEN];
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);
int uart_txdone(uint8 uart);
void uart_os_config(int uart);
void uart_setup(uint8 uart);
int uart0_get_rxbuf_len(void);
void uart0_set_rxbuf(uint8 *buf, int len);
// check status of rx/tx
int uart_rx_any(uint8 uart);
int uart_tx_any_room(uint8 uart);
#endif // MICROPY_INCLUDED_ESP8266_UART_H