subghz_tx_rx_worker.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #pragma once
  2. #include <furi_hal.h>
  3. typedef void (*SubGhzTxRxWorkerCallbackHaveRead)(void* context);
  4. typedef struct SubGhzTxRxWorker SubGhzTxRxWorker;
  5. typedef enum {
  6. SubGhzTxRxWorkerStatusIDLE,
  7. SubGhzTxRxWorkerStatusTx,
  8. SubGhzTxRxWorkerStatusRx,
  9. } SubGhzTxRxWorkerStatus;
  10. /**
  11. * SubGhzTxRxWorker, add data to transfer
  12. * @param instance Pointer to a SubGhzTxRxWorker instance
  13. * @param data *data
  14. * @param size data size
  15. * @return bool true if ok
  16. */
  17. bool subghz_tx_rx_worker_write(SubGhzTxRxWorker* instance, uint8_t* data, size_t size);
  18. /**
  19. * SubGhzTxRxWorker, get available data
  20. * @param instance Pointer to a SubGhzTxRxWorker instance
  21. * @return size_t data size
  22. */
  23. size_t subghz_tx_rx_worker_available(SubGhzTxRxWorker* instance);
  24. /**
  25. * SubGhzTxRxWorker, read data
  26. * @param instance Pointer to a SubGhzTxRxWorker instance
  27. * @param data *data
  28. * @param size max data size, which can be read
  29. * @return size_t data size, how much is actually read
  30. */
  31. size_t subghz_tx_rx_worker_read(SubGhzTxRxWorker* instance, uint8_t* data, size_t size);
  32. /**
  33. * Сallback SubGhzTxRxWorker when there is data to read in an empty buffer
  34. * @param instance Pointer to a SubGhzTxRxWorker instance
  35. * @param callback SubGhzTxRxWorkerCallbackHaveRead callback
  36. * @param context
  37. */
  38. void subghz_tx_rx_worker_set_callback_have_read(
  39. SubGhzTxRxWorker* instance,
  40. SubGhzTxRxWorkerCallbackHaveRead callback,
  41. void* context);
  42. /**
  43. * Allocate SubGhzTxRxWorker
  44. * @return SubGhzTxRxWorker* Pointer to a SubGhzTxRxWorker instance
  45. */
  46. SubGhzTxRxWorker* subghz_tx_rx_worker_alloc();
  47. /**
  48. * Free SubGhzTxRxWorker
  49. * @param instance Pointer to a SubGhzTxRxWorker instance
  50. */
  51. void subghz_tx_rx_worker_free(SubGhzTxRxWorker* instance);
  52. /**
  53. * Start SubGhzTxRxWorker
  54. * @param instance Pointer to a SubGhzTxRxWorker instance
  55. * @return bool - true if ok
  56. */
  57. bool subghz_tx_rx_worker_start(SubGhzTxRxWorker* instance, uint32_t frequency);
  58. /**
  59. * Stop SubGhzTxRxWorker
  60. * @param instance Pointer to a SubGhzTxRxWorker instance
  61. */
  62. void subghz_tx_rx_worker_stop(SubGhzTxRxWorker* instance);
  63. /**
  64. * Check if worker is running
  65. * @param instance Pointer to a SubGhzTxRxWorker instance
  66. * @return bool - true if running
  67. */
  68. bool subghz_tx_rx_worker_is_running(SubGhzTxRxWorker* instance);