mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.0 KiB
75 lines
2.0 KiB
#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);
|
|
|