seader_bridge.h 889 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include <stdlib.h> // malloc
  3. #include <stdint.h> // uint32_t
  4. #include <stdarg.h> // __VA_ARGS__
  5. #include <string.h>
  6. #include <stdio.h>
  7. #include <furi.h>
  8. #include <furi_hal.h>
  9. #define SEADER_UART_RX_BUF_SIZE (128)
  10. typedef struct {
  11. uint8_t uart_ch;
  12. uint8_t flow_pins;
  13. uint8_t baudrate_mode;
  14. uint32_t baudrate;
  15. } SeaderUartConfig;
  16. typedef struct {
  17. uint32_t rx_cnt;
  18. uint32_t tx_cnt;
  19. uint8_t protocol;
  20. } SeaderUartState;
  21. struct SeaderUartBridge {
  22. SeaderUartConfig cfg;
  23. SeaderUartConfig cfg_new;
  24. FuriThread* thread;
  25. FuriThread* tx_thread;
  26. FuriStreamBuffer* rx_stream;
  27. FuriHalSerialHandle* serial_handle;
  28. FuriSemaphore* tx_sem;
  29. SeaderUartState st;
  30. uint8_t rx_buf[SEADER_UART_RX_BUF_SIZE];
  31. uint8_t tx_buf[SEADER_UART_RX_BUF_SIZE];
  32. size_t tx_len;
  33. };
  34. typedef struct SeaderUartBridge SeaderUartBridge;