forked from Qortal/Brooklyn
76 lines
2.0 KiB
C
76 lines
2.0 KiB
C
#define B0 0 /* POSIX to hang up */
|
|
|
|
/* POSIX supports B75 to B300 */
|
|
#define B600 16
|
|
#define B1200 17
|
|
#define B2400 19
|
|
#define B9600 21
|
|
#define B19200 22
|
|
#define B57600 24
|
|
#define B115200 25
|
|
#define B230400 26
|
|
#define B460800 27
|
|
#define B921600 28
|
|
#define BSCARD 63
|
|
#define MASK_BAUD 0x3f
|
|
|
|
/* POSIX supports 5, 6. USB suppots 16 */
|
|
#define CS7 (2 << 6)
|
|
#define CS8 (3 << 6)
|
|
#define MASK_CS (0x7 << 6)
|
|
|
|
#define STOP0B5 (0 << 9) /* USART Hardware only */
|
|
#define STOP1B (1 << 9) /* USB, POSIX */
|
|
#define STOP1B5 (2 << 9) /* USB */
|
|
#define STOP2B (3 << 9) /* USB, POSIX */
|
|
#define MASK_STOP (0x3 << 9)
|
|
|
|
#define PARENB (1 << 11)
|
|
#define PARODD (2 << 11)
|
|
#define MASK_PAR (0x7 << 11)
|
|
/* USB 0: none, 1: odd, 2: even, 3: mark, 4: space */
|
|
|
|
#define CRTSCTS (1 << 14)
|
|
#define MASK_FLOW (0x1 << 14)
|
|
|
|
/*
|
|
BAUD_BITS 6
|
|
CS_BITS 3
|
|
STOP_BITS 2
|
|
PAR_BITS 3
|
|
*/
|
|
/* USB: SET_CONTROL_LINE_STATE
|
|
DTR RTS */
|
|
/* USB: SERIAL_STATE
|
|
DSR DCD RI */
|
|
|
|
/* non-POSIX, non-USB-CDC configs */
|
|
#define MODE_SMARTCARD (1 << 30)
|
|
#define MODE_IRDA (2UL << 30)
|
|
#define MODE_IRDA_LP (3UL << 30)
|
|
#define MASK_MODE (0x3UL << 30)
|
|
/* 0: standard, 1: smartcard, 2: IrDA, 3: IrDA-LP */
|
|
|
|
struct usart_stat {
|
|
uint8_t dev_no;
|
|
|
|
uint32_t tx;
|
|
uint32_t rx;
|
|
uint32_t rx_break;
|
|
uint32_t err_notify_overflow;
|
|
uint32_t err_rx_overflow; /* software side */
|
|
uint32_t err_rx_overrun; /* hardware side */
|
|
uint32_t err_rx_noise;
|
|
uint32_t err_rx_parity;
|
|
};
|
|
|
|
|
|
void usart_init (uint16_t prio, uintptr_t stack_addr, size_t stack_size,
|
|
int (*ss_notify_callback) (uint8_t dev_no, uint16_t notify_bits));
|
|
int usart_config (uint8_t dev_no, uint32_t config_bits);
|
|
int usart_read (uint8_t dev_no, char *buf, uint16_t buflen);
|
|
int usart_write (uint8_t dev_no, char *buf, uint16_t buflen);
|
|
const struct usart_stat *usart_stat (uint8_t dev_no);
|
|
int usart_send_break (uint8_t dev_no);
|
|
void usart_config_clken (uint8_t dev_no, int on);
|