#ifndef BSP_UART_H #define BSP_UART_H #include #include typedef struct { int (*init)(uint32_t baudrate); int (*send)(const uint8_t *data, uint32_t length); int (*recv)(uint8_t *buffer, uint32_t length, uint32_t timeout_ms); void (*deinit)(void); } bsp_uart_ops_t; void bsp_uart_register(const bsp_uart_ops_t *ops); int bsp_uart_init(uint32_t baudrate); int bsp_uart_send(const uint8_t *data, uint32_t length); int bsp_uart_recv(uint8_t *buffer, uint32_t length, uint32_t timeout_ms); int bsp_uart_recv_byte(uint8_t *byte, uint32_t timeout_ms); void bsp_uart_deinit(void); #endif