alarm_manager.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Copyright (c) 2018 Actions Semiconductor Co., Ltd
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. /**
  7. * @file alarm manager interface
  8. */
  9. #ifndef __ALARM_MANAGER_H__
  10. #define __ALARM_MANAGER_H__
  11. /**
  12. * @defgroup alarm_manager_apis alarm manager APIs
  13. * @ingroup system_apis
  14. * @{
  15. */
  16. /**
  17. * @cond INTERNAL_HIDDEN
  18. */
  19. #ifdef CONFIG_RTC_ACTS
  20. #include <drivers/rtc.h>
  21. #endif
  22. #define MAX_ALARM_SUPPORT 3
  23. enum alarm_state {
  24. ALARM_STATE_NULL = 0,
  25. ALARM_STATE_OFF,
  26. ALARM_STATE_FREE,
  27. ALARM_STATE_OK,
  28. };
  29. struct alarm_info
  30. {
  31. int alarm_time;/*hour*3600+min*60+sec*/
  32. int state;
  33. };
  34. struct alarm_manager
  35. {
  36. struct alarm_info alarm[MAX_ALARM_SUPPORT];
  37. struct alarm_info sn_alarm[MAX_ALARM_SUPPORT];
  38. };
  39. typedef void (*alarm_callback)(void);
  40. int find_and_set_alarm(void);
  41. int system_registry_alarm_callback(alarm_callback callback);
  42. int alarm_manager_init(void);
  43. int alarm_manager_get_time(struct rtc_time *tm);
  44. int alarm_manager_set_time(struct rtc_time *tm);
  45. int alarm_manager_get_alarm(struct rtc_time *tm, bool *is_on);
  46. int alarm_manager_set_alarm(struct rtc_time *tm, bool is_snooze);
  47. int alarm_manager_delete_alarm(struct rtc_time *tm);
  48. bool alarm_wakeup_source_check(void);
  49. struct alarm_manager *larm_manager_get_exist_alarm(int *alarm_count);
  50. int alarm_manager_update_alarm(uint32_t time_sec, uint8_t alarm_index, int alarm_state);
  51. struct alarm_manager *alarm_manager_get_exist_alarm(int *alarm_count);
  52. /**
  53. * INTERNAL_HIDDEN @endcond
  54. */
  55. /**
  56. * @} end defgroup alarm_manager_apis
  57. */
  58. #endif