Modem emulator for "Datenklo" with AM7910/AM7911 emulation

This commit is contained in:
Andreas Eversberg
2019-09-01 13:15:04 +02:00
parent db1fee9698
commit 7e25e191af
17 changed files with 4315 additions and 2 deletions

34
src/datenklo/uart.h Normal file
View File

@@ -0,0 +1,34 @@
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);