timer.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. #ifdef __cplusplus
  49. }
  50. #endif