sub.h 912 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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. #include <toolbox/api_lock.h>
  10. #define SEADER_UART_RX_BUF_SIZE (128)
  11. typedef struct {
  12. uint8_t uart_ch;
  13. uint8_t flow_pins;
  14. uint8_t baudrate_mode;
  15. uint32_t baudrate;
  16. } SeaderUartConfig;
  17. typedef struct {
  18. uint32_t rx_cnt;
  19. uint32_t tx_cnt;
  20. uint32_t baudrate_cur;
  21. } SeaderUartState;
  22. struct SeaderUartBridge {
  23. SeaderUartConfig cfg;
  24. SeaderUartConfig cfg_new;
  25. FuriThread* thread;
  26. FuriThread* tx_thread;
  27. FuriStreamBuffer* rx_stream;
  28. FuriSemaphore* tx_sem;
  29. SeaderUartState st;
  30. FuriApiLock cfg_lock;
  31. uint8_t rx_buf[SEADER_UART_RX_BUF_SIZE];
  32. uint8_t tx_buf[SEADER_UART_RX_BUF_SIZE];
  33. size_t tx_len;
  34. };
  35. typedef struct SeaderUartBridge SeaderUartBridge;