uhf_uart.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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 2048
  7. #define UHF_UART_WORKER_STACK_SIZE 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. UHFUartWorkerWaitingFlag,
  15. UHFUartWorkerExitingFlag
  16. }UHFUartWorkerEventFlag;
  17. static void uhf_uart_received_byte_callback(FuriHalSerialHandle* handle, FuriHalSerialRxEvent event, void *ctx);
  18. typedef struct{
  19. FuriHalBus bus;
  20. FuriHalSerialHandle *handle;
  21. FuriThread *thread;
  22. CallbackFunction callback;
  23. Buffer *buffer;
  24. uint16_t baudrate;
  25. bool init_by_app;
  26. void *ctx;
  27. volatile int tick;
  28. } UHFUart;
  29. UHFUart* uhf_uart_alloc();
  30. void uhf_uart_free(UHFUart* uart);
  31. void uhf_uart_send(UHFUart* uart, uint8_t* data, size_t size);
  32. void uhf_uart_send_wait(UHFUart* uart, uint8_t* data, size_t size);
  33. void uhf_uart_set_receive_byte_callback(UHFUart* uart, FuriHalSerialAsyncRxCallback callback, bool report_errors, void *ctx);
  34. void uhf_uart_set_baudrate(UHFUart* uart, uint32_t baudrate);