uhf_uart.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <furi_hal.h>
  3. // #include <expansion/expansion.h>
  4. #include <stdint.h>
  5. #include <stdbool.h>
  6. #include "uhf_buffer.h"
  7. #define UHF_UART_RX_BUFFER_SIZE 250
  8. // #define UHF_UART_WORKER_STACK_SIZE 1 * 1024
  9. #define UHF_UART_DEFAULT_BAUDRATE 115200
  10. #define UHF_UART_FRAME_START 0xBB
  11. #define UHF_UART_FRAME_END 0x7E
  12. #define UHF_UART_WAIT_TICK 1000
  13. typedef void (*CallbackFunction)(uint8_t* data, void* ctx);
  14. typedef enum {
  15. UHFUartWorkerWaitingDataFlag = 1 << 0,
  16. UHFUartWorkerExitingFlag = 1 << 2,
  17. } UHFUartWorkerEventFlag;
  18. typedef struct {
  19. FuriHalBus bus;
  20. FuriHalSerialHandle* handle;
  21. // FuriStreamBuffer *rx_buff_stream;
  22. // FuriThread *thread;
  23. CallbackFunction callback;
  24. Buffer* buffer;
  25. uint32_t baudrate;
  26. bool init_by_app;
  27. void* ctx;
  28. volatile int tick;
  29. } UHFUart;
  30. int32_t uhf_uart_worker_callback(void* ctx);
  31. UHFUart* uhf_uart_alloc();
  32. void uhf_uart_free(UHFUart* uart);
  33. void uhf_uart_send(UHFUart* uart, uint8_t* data, size_t size);
  34. void uhf_uart_send_wait(UHFUart* uart, uint8_t* data, size_t size);
  35. void uhf_uart_set_receive_byte_callback(
  36. UHFUart* uart,
  37. FuriHalSerialAsyncRxCallback callback,
  38. void* ctx,
  39. bool report_errors);
  40. void uhf_uart_set_baudrate(UHFUart* uart, uint32_t baudrate);
  41. bool uhf_uart_tick(UHFUart* uart);
  42. void uhf_uart_tick_reset(UHFUart* uart);