uhf_uart.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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(UHFUart* uart, FuriHalSerialAsyncRxCallback callback, void *ctx, bool report_errors);
  36. void uhf_uart_set_baudrate(UHFUart* uart, uint32_t baudrate);
  37. bool uhf_uart_tick(UHFUart* uart);
  38. void uhf_uart_tick_reset(UHFUart* uart);