- OswaldClk.second += 1;
- if (OswaldClk.second > 59) {
- OswaldClk.second = 0;
- OswaldClk.minute += 1;
- } else
- return;
- if (OswaldClk.minute > 59) {
- OswaldClk.minute = 0;
- OswaldClk.hour += 1;
- } else
- return;
- if (OswaldClk.hour > 23) {
- OswaldClk.hour = 0;
- // day++
- } else
- return;
+ hal_get_rtc(&OswaldClk);
+
+ /* check for pending alarm once per minute */
+ if (OswaldClk.second == 0) {
+ if (OswaldClk.hour == OswaldAlarm.hour &&
+ OswaldClk.minute == OswaldAlarm.minute &&
+ ((1 << OswaldClk.wday) & OswaldAlarm.wday)) {
+ OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL);
+ OswaldState.screen_id = ALARM_SCREEN;
+ OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
+ OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
+ }
+ }