#ifndef UART_DRIVER_H__ #define UART_DRIVER_H__ #include "common_types.h" #include typedef enum { UART_ID_USART1 = 0, UART_ID_UART1, UART_ID_LPUART1, UART_ID_COUNT, } uart_id_t; typedef struct { uint32_t tx_bytes; uint32_t rx_bytes; uint32_t overflow_errors; } uart_stats_t; typedef struct { uint32_t baudrate; uint8_t data_bits; uint8_t stop_bits; uint8_t parity; } uart_config_t; ret_code_t uart_init(uart_id_t id, const uart_config_t *config); ret_code_t uart_deinit(uart_id_t id); ret_code_t uart_send(uart_id_t id, const uint8_t *data, uint32_t len); ret_code_t uart_receive(uart_id_t id, uint8_t *data, uint32_t len, uint32_t timeout); ret_code_t uart_send_dma(uart_id_t id, const uint8_t *data, uint32_t len); ret_code_t uart_receive_dma(uart_id_t id, uint8_t *data, uint32_t len); uint32_t uart_available(uart_id_t id); ret_code_t uart_set_rs485_dir(uart_id_t id, uint8_t tx_mode); const uart_stats_t* uart_get_stats(uart_id_t id); void uart_reset_stats(uart_id_t id); #endif