ralarm_example.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Change Logs:
  3. * Date Author Notes
  4. * 2023-05-12 RiceChen the first version
  5. */
  6. #include "ralarm.h"
  7. #include "rtthread.h"
  8. #include <time.h>
  9. static rt_timer_t timer;
  10. ralarm_t alarm_test = NULL;
  11. static void alarm_handler(ralarm_t alarm)
  12. {
  13. rt_kprintf("Time: %02d:%02d:%02d\r\n", alarm->setup.time.hour,
  14. alarm->setup.time.minute, alarm->setup.time.second);
  15. ralarm_stop(alarm);
  16. ralarm_dump();
  17. }
  18. static ral_status alarm_time_get(ralarm_time_t timer)
  19. {
  20. time_t current;
  21. struct tm *local;
  22. time(&current);
  23. local = localtime(&current);
  24. timer->hour = local->tm_hour;
  25. timer->minute = local->tm_min;
  26. timer->second = local->tm_sec;
  27. return RAL_OK;
  28. }
  29. static struct ralarm_ops ops = {
  30. .time_get = alarm_time_get,
  31. };
  32. static void time_handler(void *param)
  33. {
  34. ralarm_refresh();
  35. }
  36. int ralarm_test(void)
  37. {
  38. ralarm_init();
  39. ralarm_register_ops(&ops);
  40. struct ralarm_setup setup;
  41. setup.flag = RALARM_DAILY;
  42. setup.time.hour = 15;
  43. setup.time.minute = 0;
  44. setup.time.second = 0;
  45. alarm_test = ralarm_create(&setup, alarm_handler, NULL);
  46. ralarm_start(alarm_test);
  47. ralarm_dump();
  48. timer = rt_timer_create("timer", time_handler,
  49. RT_NULL, 800,
  50. RT_TIMER_FLAG_PERIODIC);
  51. if (timer != RT_NULL)
  52. rt_timer_start(timer);
  53. return RT_EOK;
  54. }
  55. MSH_CMD_EXPORT(ralarm_test, ralarm test);