furi_hal_ibutton.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /**
  2. * @file furi_hal_ibutton.h
  3. * iButton HAL API
  4. */
  5. #pragma once
  6. #include <stdbool.h>
  7. #include <stdint.h>
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. typedef void (*FuriHalIbuttonEmulateCallback)(void* context);
  12. /** Initialize */
  13. void furi_hal_ibutton_init();
  14. /**
  15. * Start emulation timer
  16. * @param period timer period
  17. * @param callback timer callback
  18. * @param context callback context
  19. */
  20. void furi_hal_ibutton_emulate_start(
  21. uint32_t period,
  22. FuriHalIbuttonEmulateCallback callback,
  23. void* context);
  24. /**
  25. * Update emulation timer period
  26. * @param period new timer period
  27. */
  28. void furi_hal_ibutton_emulate_set_next(uint32_t period);
  29. /**
  30. * Stop emulation timer
  31. */
  32. void furi_hal_ibutton_emulate_stop();
  33. /**
  34. * Set the pin to normal mode (open collector), and sets it to float
  35. */
  36. void furi_hal_ibutton_pin_configure();
  37. /**
  38. * Sets the pin to analog mode, and sets it to float
  39. */
  40. void furi_hal_ibutton_pin_reset();
  41. /**
  42. * iButton write pin
  43. * @param state true / false
  44. */
  45. void furi_hal_ibutton_pin_write(const bool state);
  46. #ifdef __cplusplus
  47. }
  48. #endif