furi_hal_rfid.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /**
  2. * @file furi_hal_rfid.h
  3. * RFID HAL API
  4. */
  5. #pragma once
  6. #include <stdint.h>
  7. #include <stdbool.h>
  8. #include <stddef.h>
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. /** Initialize RFID subsystem
  13. */
  14. void furi_hal_rfid_init();
  15. /** Config rfid pins to reset state
  16. */
  17. void furi_hal_rfid_pins_reset();
  18. /** Config rfid pins to emulate state
  19. */
  20. void furi_hal_rfid_pins_emulate();
  21. /** Config rfid pins to read state
  22. */
  23. void furi_hal_rfid_pins_read();
  24. /** Release rfid pull pin
  25. */
  26. void furi_hal_rfid_pin_pull_release();
  27. /** Pulldown rfid pull pin
  28. */
  29. void furi_hal_rfid_pin_pull_pulldown();
  30. /** Config rfid timer to read state
  31. *
  32. * @param freq timer frequency
  33. * @param duty_cycle timer duty cycle, 0.0-1.0
  34. */
  35. void furi_hal_rfid_tim_read(float freq, float duty_cycle);
  36. /** Start read timer
  37. */
  38. void furi_hal_rfid_tim_read_start();
  39. /** Stop read timer
  40. */
  41. void furi_hal_rfid_tim_read_stop();
  42. /** Config rfid timer to emulate state
  43. *
  44. * @param freq timer frequency
  45. */
  46. void furi_hal_rfid_tim_emulate(float freq);
  47. typedef void (*FuriHalRfidEmulateCallback)(void* context);
  48. /** Start emulation timer
  49. */
  50. void furi_hal_rfid_tim_emulate_start(FuriHalRfidEmulateCallback callback, void* context);
  51. typedef void (*FuriHalRfidReadCaptureCallback)(bool level, uint32_t duration, void* context);
  52. void furi_hal_rfid_tim_read_capture_start(FuriHalRfidReadCaptureCallback callback, void* context);
  53. void furi_hal_rfid_tim_read_capture_stop();
  54. typedef void (*FuriHalRfidDMACallback)(bool half, void* context);
  55. void furi_hal_rfid_tim_emulate_dma_start(
  56. uint32_t* duration,
  57. uint32_t* pulse,
  58. size_t length,
  59. FuriHalRfidDMACallback callback,
  60. void* context);
  61. void furi_hal_rfid_tim_emulate_dma_stop();
  62. /** Stop emulation timer
  63. */
  64. void furi_hal_rfid_tim_emulate_stop();
  65. /** Config rfid timers to reset state
  66. */
  67. void furi_hal_rfid_tim_reset();
  68. /** Set emulation timer period
  69. *
  70. * @param period overall duration
  71. */
  72. void furi_hal_rfid_set_emulate_period(uint32_t period);
  73. /** Set emulation timer pulse
  74. *
  75. * @param pulse duration of high level
  76. */
  77. void furi_hal_rfid_set_emulate_pulse(uint32_t pulse);
  78. /** Set read timer period
  79. *
  80. * @param period overall duration
  81. */
  82. void furi_hal_rfid_set_read_period(uint32_t period);
  83. /** Set read timer pulse
  84. *
  85. * @param pulse duration of high level
  86. */
  87. void furi_hal_rfid_set_read_pulse(uint32_t pulse);
  88. /** Сhanges the configuration of the RFID timer "on a fly"
  89. *
  90. * @param freq new frequency
  91. * @param duty_cycle new duty cycle
  92. */
  93. void furi_hal_rfid_change_read_config(float freq, float duty_cycle);
  94. /** Start/Enable comparator */
  95. void furi_hal_rfid_comp_start();
  96. /** Stop/Disable comparator */
  97. void furi_hal_rfid_comp_stop();
  98. typedef void (*FuriHalRfidCompCallback)(bool level, void* context);
  99. /** Set comparator callback */
  100. void furi_hal_rfid_comp_set_callback(FuriHalRfidCompCallback callback, void* context);
  101. #ifdef __cplusplus
  102. }
  103. #endif