#include"alarm.h"
#include"alarm-internal.h"
+#include"alarm-manager-db.h"
+#include"alarm-manager-util.h"
#define DST_TIME_DIFF 1
if (interval < 0) /*When the alarm expires, it may makes an error.*/ {
LOGW("The duetime of alarm(%d) is OVER.", entry->alarm_id);
- continue;
+
+ _alarm_set_next_duetime(entry);
+ if (entry->due_time < current_time) {
+ const char *dst = entry->callee_pkgid ? entry->callee_pkgid : entry->dst_service_name;
+ LOGW("The alarm(%d) is removed [unique_name : %s, dst : %s",
+ entry->alarm_id, entry->app_unique_name, dst);
+
+ if (!(entry->alarm_info.alarm_type & ALARM_TYPE_VOLATILE))
+ _delete_alarms(entry->alarm_id);
+
+ _save_alarm_info_log("AUTO_DELETE", entry);
+
+ alarm_context.alarms = g_slist_remove(alarm_context.alarms, iter->data);
+ _release_alarm_info_t(entry);
+ continue;
+ } else {
+ due_time = entry->due_time;
+ }
+
}
interval = difftime(due_time, min_time);
__alarm_info_t *entry = NULL;
struct tm *p_time = NULL;
struct tm due_time_result;
- bool is_rtc_reset;
+ bool is_rtc_reset = false;
is_time_changed = true;
if (periodic_alarm_standard_time != 0)
interval = difftime(due_time, current_time);
if (interval < 0) {
- LOGE("The duetime of alarm(%d) is OVER.", entry->alarm_id);
- continue;
+ LOGW("The duetime of alarm(%d) is OVER.", entry->alarm_id);
+
+ _alarm_set_next_duetime(entry);
+ if (entry->due_time < current_time) {
+ const char *dst = entry->callee_pkgid ? entry->callee_pkgid : entry->dst_service_name;
+ LOGW("The alarm(%d) is removed [unique_name : %s, dst : %s",
+ entry->alarm_id, entry->app_unique_name, dst);
+
+ if (!(entry->alarm_info.alarm_type & ALARM_TYPE_VOLATILE))
+ _delete_alarms(entry->alarm_id);
+
+ _save_alarm_info_log("AUTO_DELETE", entry);
+
+ alarm_context.alarms = g_slist_remove(alarm_context.alarms, iter->data);
+ _release_alarm_info_t(entry);
+ continue;
+ } else {
+ due_time = entry->due_time;
+ }
+
}
interval = difftime(due_time, min_time);