17 #define UINT32_MAX 0xffffffff 52 ub_event_receive_start,
58 ub_event_collision_start,
59 ub_event_collision_end,
68 ub_cfg_fairwait_after_send_low = 1,
69 ub_cfg_fairwait_after_send_high = 2,
73 ub_cfg_read_with_interrupt = 4,
74 ub_cfg_skip_collision_data = 8
93 (
struct uartbus* bus,
enum uartbus_event event);
95 uint8_t (*do_send_byte)
98 uint32_t (*current_usec)
108 volatile uint16_t to_send_size;
110 volatile enum uartbus_status status;
122 uint16_t byte_time_us;
124 uint8_t packet_timeout;
132 uint32_t last_bus_activity;
139 uint16_t ub_calc_baud_cycle_time(uint32_t baud);
141 uint32_t ub_calc_timeout(uint32_t baud, uint8_t cycles);
145 uint8_t crc8(uint8_t* data, uint8_t length);
152 void ub_out_rec_byte(
struct uartbus* bus, uint16_t data);
156 void ub_init_infrastructure();
158 void ub_predict_transmission_start(
struct uartbus* bus);
160 bool ub_prewait(
struct uartbus* bus, uint8_t cycles);
162 enum uartbus_status ub_get_bus_state(
struct uartbus* bus);
164 int8_t ub_send_packet
165 (
struct uartbus* bus, uint8_t* addr, uint16_t size);
167 int8_t ub_manage_connection
170 uint8_t (*send_on_idle)(
struct uartbus*, uint8_t** data, uint16_t* size)
177 uint8_t timeoutCycles
int16_t(* do_receive_byte)(struct uartbus *bus)
void(* serial_byte_received)(struct uartbus *bus, uint8_t data_byte)