/** @file serial_stm32.h serial interface header documentation */ #ifndef INC_SERIAL_STM32_H #define INC_SERIAL_STM32_H #include "stm32f4xx_hal.h" #include #include #include "fifo_buffered.h" typedef size_t serial_size_t; struct serial_ctx_struct_t; /// serial interface context for application struct serial_ctx_struct_t { // internal data struct serial_ctx_struct_t *next; UART_HandleTypeDef *huart; // receive serial_size_t rx_size; // current read pointer serial_size_t rx_capacity; // number of bytes possible uint8_t *rx_data; // transmit fifo_t fifo_tx; }; typedef struct serial_ctx_struct_t serial_ctx_t; extern void serial_init(serial_ctx_t *ctx, UART_HandleTypeDef *, uint8_t *, serial_size_t , uint8_t *, serial_size_t); extern void serial_close(serial_ctx_t *ctx); extern void serial_baudrate(serial_ctx_t *ctx, uint32_t baudrate); extern serial_size_t serial_read(serial_ctx_t *ctx, uint8_t *c); extern serial_size_t serial_read_buf(serial_ctx_t *ctx, uint8_t *buffer, serial_size_t len); extern serial_size_t serial_write_buf(serial_ctx_t *ctx, const uint8_t *buffer, serial_size_t len); extern bool serial_status(serial_ctx_t *ctx, bool dirout); extern bool serial_abovewatermark(serial_ctx_t *ctx); #endif // INC_SERIAL_STM32_H