- public Alarm? next_alarm()
- {
- if (alarms == null)
- return null;
- return alarms.data;
- }
-
- public void schedule(Alarm a)
- {
- alarms.insert_sorted(a, alarm_compare);
- otimed_reschedule();
- }
-
- private void otimed_reschedule()
- {
- if (alarms != null)
- {
- zavai.log.info("Scheduling next alarm: " + alarms.data.label + " at " + Time.local(alarms.data.deadline).to_string());
-
- try {
- otimed_alarm.ClearAlarm(zavai.registry.bus_name);
- } catch (Error e) {
- zavai.log.error("Cannot clear alarms: " + e.message);
- }
- try {
- otimed_alarm.SetAlarm(zavai.registry.bus_name, (int)alarms.data.deadline);
- } catch (Error e) {
- zavai.log.error("Cannot reschedule alarms: " + e.message);
- }
- } else
- zavai.log.info("No alarms left to reschedule");
- schedule_changed();
- }
-
- public void check_alarms()
- {
- last_system_time = time_t();
- update_time();
- while (alarms != null && alarms.data.deadline <= chosen_time)
- {
- Alarm a = alarms.data;
- alarms.remove(a);
- zavai.log.info("Triggering " + a.label);
- a.trigger(a);
- }
-
- otimed_reschedule();
- }
+ public void schedule(Alarm a)
+ {
+ alarms.insert_sorted(a, alarm_compare);
+ otimed_reschedule();
+ }
+
+ private void otimed_reschedule()
+ {
+ if (alarms != null)
+ {
+ zavai.log.info("Scheduling next alarm: " + alarms.data.label + " at " + Time.local(alarms.data.deadline).to_string());
+ zavai.log.info("Scheduling at abs " + "%d".printf((int)alarms.data.deadline));
+
+ try {
+ otimed_alarm.ClearAlarm(zavai.registry.bus_name);
+ } catch (Error e) {
+ zavai.log.error("Cannot clear alarms: " + e.message);
+ }
+ try {
+ otimed_alarm.SetAlarm(zavai.registry.bus_name, (int)alarms.data.deadline);
+ } catch (Error e) {
+ zavai.log.error("Cannot reschedule alarms: " + e.message);
+ }
+
+ int t = rtc.GetCurrentTime();
+ stderr.printf("Current time: %d, RTC time: %d\n", (int)time_t(), t);
+ t = rtc.GetWakeupTime();
+ stderr.printf("Scheduled alarm: %d, RTC wakeup time: %d\n", (int)alarms.data.deadline, t);
+ } else
+ zavai.log.info("No alarms left to reschedule");
+ schedule_changed();
+ }
+
+ public void check_alarms()
+ {
+ last_system_time = time_t();
+ update_time();
+ while (alarms != null && alarms.data.deadline <= chosen_time)
+ {
+ Alarm a = alarms.data;
+ alarms.remove(a);
+ zavai.log.info("Triggering " + a.label);
+ a.trigger(a);
+ }
+
+ otimed_reschedule();
+ }