seader_bridge.h 849 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. FuriSemaphore* tx_sem;
  28. SeaderUartState st;
  29. uint8_t rx_buf[SEADER_UART_RX_BUF_SIZE];
  30. uint8_t tx_buf[SEADER_UART_RX_BUF_SIZE];
  31. size_t tx_len;
  32. };
  33. typedef struct SeaderUartBridge SeaderUartBridge;