#pragma once #include // malloc #include // uint32_t #include // __VA_ARGS__ #include #include #include #include // https://ww1.microchip.com/downloads/en/DeviceDoc/00001561C.pdf #define SEADER_UART_RX_BUF_SIZE (261) typedef struct { uint8_t uart_ch; uint8_t flow_pins; uint8_t baudrate_mode; uint32_t baudrate; } SeaderUartConfig; typedef struct { uint32_t rx_cnt; uint32_t tx_cnt; uint8_t protocol; } SeaderUartState; struct SeaderUartBridge { SeaderUartConfig cfg; SeaderUartConfig cfg_new; FuriThread* thread; FuriThread* tx_thread; FuriStreamBuffer* rx_stream; FuriHalSerialHandle* serial_handle; FuriSemaphore* tx_sem; SeaderUartState st; uint8_t rx_buf[SEADER_UART_RX_BUF_SIZE]; uint8_t tx_buf[SEADER_UART_RX_BUF_SIZE]; size_t tx_len; // T=0 or T=1 uint8_t T; }; typedef struct SeaderUartBridge SeaderUartBridge;