timer.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #pragma once
  2. #include "core/base.h"
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. typedef void (*FuriTimerCallback)(void* context);
  7. typedef enum {
  8. FuriTimerTypeOnce = 0, ///< One-shot timer.
  9. FuriTimerTypePeriodic = 1 ///< Repeating timer.
  10. } FuriTimerType;
  11. typedef void FuriTimer;
  12. /** Allocate timer
  13. *
  14. * @param[in] func The callback function
  15. * @param[in] type The timer type
  16. * @param context The callback context
  17. *
  18. * @return The pointer to FuriTimer instance
  19. */
  20. FuriTimer* furi_timer_alloc(FuriTimerCallback func, FuriTimerType type, void* context);
  21. /** Free timer
  22. *
  23. * @param instance The pointer to FuriTimer instance
  24. */
  25. void furi_timer_free(FuriTimer* instance);
  26. /** Start timer
  27. *
  28. * @param instance The pointer to FuriTimer instance
  29. * @param[in] ticks The ticks
  30. *
  31. * @return The furi status.
  32. */
  33. FuriStatus furi_timer_start(FuriTimer* instance, uint32_t ticks);
  34. /** Stop timer
  35. *
  36. * @param instance The pointer to FuriTimer instance
  37. *
  38. * @return The furi status.
  39. */
  40. FuriStatus furi_timer_stop(FuriTimer* instance);
  41. /** Is timer running
  42. *
  43. * @param instance The pointer to FuriTimer instance
  44. *
  45. * @return 0: not running, 1: running
  46. */
  47. uint32_t furi_timer_is_running(FuriTimer* instance);
  48. typedef void (*FuriTimerPendigCallback)(void* context, uint32_t arg);
  49. void furi_timer_pending_callback(FuriTimerPendigCallback callback, void* context, uint32_t arg);
  50. #ifdef __cplusplus
  51. }
  52. #endif