osmocom-analog/src/datenklo/uart.h

35 lines
809 B
C
Raw Normal View History

enum uart_parity {
UART_PARITY_NONE,
UART_PARITY_EVEN,
UART_PARITY_ODD,
UART_PARITY_MARK,
UART_PARITY_SPACE,
};
/* uart flags */
#define UART_PARITY_ERROR (1 << 0)
#define UART_CODE_VIOLATION (1 << 1)
#define UART_BREAK (1 << 2)
typedef struct uart {
void *inst;
int (*tx_cb)(void *inst);
void (*rx_cb)(void *inst, int data, uint32_t flags);
uint8_t data_bits;
enum uart_parity parity;
uint8_t stop_bits;
int last_bit;
uint32_t tx_data;
uint32_t rx_data;
int tx_pos;
int rx_pos;
int length;
} uart_t;
int uart_init(uart_t *uart, void *inst, uint8_t data_bits, enum uart_parity parity, uint8_t stop_bits, int (*tx_cb)(void *inst), void (*rx_cb)(void *inst, int data, uint32_t flags));
int uart_tx_bit(uart_t *uart);
int uart_is_tx(uart_t *uart);
void uart_rx_bit(uart_t *uart, int bit);