uhf_uart.h 1.3 KB

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