blob: 3027a4706a0477a6e828e15e4c9cbd465a012cca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#ifndef _SOFT_UART_H
#define _SOFT_UART_H
enum suart_state {
WAIT_RESET,
IN_RESET,
WAIT_START_FALLEDGE,
WAIT_START_ETU07,
RX_BITS,
POST_RX_WAIT_HIGH,
};
enum suart_convention {
DIRECT_CONVENTION,
INVERSE_CONVENTION,
};
struct suart_data {
uint32_t samplerate; /* samples per second input rate */
uint32_t recip_etu; /* 1/etu */
uint8_t num_bits;
enum suart_state state;
enum suart_convention convention;
uint32_t sample_after_sbit;
uint8_t bits_pending;
uint8_t rx_char;
};
int suart_process_sample_bit(struct suart_data *suart, uint8_t clk_bit, uint8_t rst_bit, uint8_t sample_bit);
void suart_init(struct suart_data *su);
#endif
|