uhf_uart.h 1.3 KB

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