rtc_dm.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2022-12-06 GuEe-GUI first version
  9. */
  10. #include <rtatomic.h>
  11. #include "rtc_dm.h"
  12. #define DBG_TAG "rtc.dm"
  13. #define DBG_LVL DBG_INFO
  14. #include <rtdbg.h>
  15. int rtc_dev_set_name(struct rt_device *rtc_dev)
  16. {
  17. int id;
  18. static volatile rt_atomic_t uid = 1;
  19. RT_ASSERT(rtc_dev != RT_NULL)
  20. if (rt_device_find("rtc"))
  21. {
  22. id = (int)rt_atomic_add(&uid, 1);
  23. return rt_dm_dev_set_name(rtc_dev, "rtc%u", id);
  24. }
  25. else
  26. {
  27. return rt_dm_dev_set_name(rtc_dev, "rtc");
  28. }
  29. }
  30. time_t rtc_wkalarm_to_timestamp(struct rt_rtc_wkalarm *alarm)
  31. {
  32. struct tm tm_time;
  33. time_t current_time;
  34. current_time = time(RT_NULL);
  35. localtime_r(&current_time, &tm_time);
  36. tm_time.tm_sec = alarm->tm_sec;
  37. tm_time.tm_min = alarm->tm_min;
  38. tm_time.tm_hour = alarm->tm_hour;
  39. return timegm(&tm_time);
  40. }
  41. void rtc_timestamp_to_wkalarm(time_t timestamp, struct rt_rtc_wkalarm *alarm)
  42. {
  43. struct tm tm_time;
  44. localtime_r(&timestamp, &tm_time);
  45. alarm->tm_sec = tm_time.tm_sec;
  46. alarm->tm_min = tm_time.tm_min;
  47. alarm->tm_hour = tm_time.tm_hour;
  48. }