tizen 2.3.1 release
[framework/appfw/alarm-manager.git] / alarm-manager-schedule.c
index 0203749..2f22f30 100755 (executable)
@@ -20,9 +20,6 @@
  *
  */
 
-
-
-
 #define _BSD_SOURCE            /*localtime_r requires */
 #include<stdio.h>
 #include<stdlib.h>
 #include<string.h>
 #include<sys/types.h>
 
-#include<dbus/dbus.h>
 #include<glib.h>
 
 #include"alarm.h"
 #include"alarm-internal.h"
 #define WAKEUP_ALARM_APP_ID "org.tizen.alarm.ALARM"    /*alarm ui
                                                           application's alarm's dbus_service name instead of 21 value */
+#define DST_TIME_DIFF 1
 
 extern __alarm_server_context_t alarm_context;
 extern GSList *g_scheduled_alarm_list;
 
-#ifdef __ALARM_BOOT
-extern bool enable_power_on_alarm;
-#endif
-
-static void __free_scheduled_alarm(gpointer data, gpointer user_data);
 static time_t __alarm_next_duetime_once(__alarm_info_t *__alarm_info);
 static time_t __alarm_next_duetime_repeat(__alarm_info_t *__alarm_info);
 static time_t __alarm_next_duetime_annually(__alarm_info_t *__alarm_info);
 static time_t __alarm_next_duetime_monthly(__alarm_info_t *__alarm_info);
 static time_t __alarm_next_duetime_weekly(__alarm_info_t *__alarm_info);
 static bool __find_next_alarm_to_be_scheduled(time_t *min_due_time);
-#ifdef __ALARM_BOOT
-/*alarm boot*/
-static bool __find_next_alarm_to_be_scheduled_power_on(time_t *min_due_time);
-bool _alarm_find_mintime_power_on(time_t *min_time);
-#endif
 bool _alarm_schedule(void);
 
-static void __free_scheduled_alarm(gpointer data, gpointer user_data)
-{
-       if (data != NULL) {
-               g_free(data);
-       }
-}
-
 bool _clear_scheduled_alarm_list()
 {
-
-       g_slist_foreach(g_scheduled_alarm_list, __free_scheduled_alarm, NULL);
-       g_slist_free(g_scheduled_alarm_list);
-
+       g_slist_free_full(g_scheduled_alarm_list, g_free);
        g_scheduled_alarm_list = NULL;
 
        return true;
@@ -90,9 +67,9 @@ bool _add_to_scheduled_alarm_list(__alarm_info_t *__alarm_info)
 /*
  *     20080328. Sewook Park(sewook7.park@samsung.com)
  *     When multiple alarms are expired at same time, dbus rpc call for alarm
- *     ui should be invoked first.(Ui conflicting manager cannot manage the 
- *     different kinds of alarm popups(wake up alarm/org alarm) correctly, 
- *     when they are displayed at same time)So when arranging the schedule 
+ *     ui should be invoked first.(Ui conflicting manager cannot manage the
+ *     different kinds of alarm popups(wake up alarm/org alarm) correctly,
+ *     when they are displayed at same time)So when arranging the schedule
  *     alarm list, wake up alarm element is located ahead.
  */
 
@@ -112,42 +89,31 @@ bool _add_to_scheduled_alarm_list(__alarm_info_t *__alarm_info)
        alarm->pid = __alarm_info->pid;
        alarm->__alarm_info = __alarm_info;
 
-       ALARM_MGR_LOG_PRINT("%s :alarm->pid =%d, app_service_name=%s(%u)\n",
-                           __FUNCTION__, alarm->pid,
-                       g_quark_to_string(alarm->
-                       __alarm_info->quark_app_service_name),
-                           alarm->__alarm_info->quark_app_service_name);
-
-       if (alarm->__alarm_info->quark_app_service_name !=
-           g_quark_from_string(WAKEUP_ALARM_APP_ID)) {
-               g_scheduled_alarm_list =
-                   g_slist_append(g_scheduled_alarm_list, alarm);
-               return true;
-       } else {
-               for (iter = g_scheduled_alarm_list; iter != NULL;
-                    iter = g_slist_next(iter)) {
+       SECURE_LOGD("%s :alarm->pid =%d, app_service_name=%s(%u)\n",
+                       __FUNCTION__, alarm->pid,
+                       g_quark_to_string(alarm->__alarm_info->quark_app_service_name),
+                       alarm->__alarm_info->quark_app_service_name);
+
+       if (alarm->__alarm_info->quark_app_service_name != g_quark_from_string(WAKEUP_ALARM_APP_ID)) {
+               g_scheduled_alarm_list = g_slist_append(g_scheduled_alarm_list, alarm);
+       }
+       else {
+               for (iter = g_scheduled_alarm_list; iter != NULL; iter = g_slist_next(iter)) {
                        count++;
                        entry = iter->data;
-                       if (entry->__alarm_info->quark_app_service_name !=
-                           g_quark_from_string(WAKEUP_ALARM_APP_ID)) {
+                       if (entry->__alarm_info->quark_app_service_name != g_quark_from_string(WAKEUP_ALARM_APP_ID)) {
                                prior = true;
                                break;
                        }
                }
 
                if (!prior) {
-                       g_scheduled_alarm_list =
-                           g_slist_append(g_scheduled_alarm_list, alarm);
-                       ALARM_MGR_LOG_PRINT(
-                           "appended : prior is %d\tcount is %d\n", prior,
-                            count);
-               } else {
-                       g_scheduled_alarm_list =
-                           g_slist_insert(g_scheduled_alarm_list, alarm,
-                                          count - 1);
-                       ALARM_MGR_LOG_PRINT(
-                           "appended : prior is %d\tcount is %d\n", prior,
-                            count);
+                       g_scheduled_alarm_list = g_slist_append(g_scheduled_alarm_list, alarm);
+                       ALARM_MGR_LOG_PRINT("appended : prior is %d\tcount is %d\n", prior, count);
+               }
+               else {
+                       g_scheduled_alarm_list = g_slist_insert(g_scheduled_alarm_list, alarm, count - 1);
+                       ALARM_MGR_LOG_PRINT("appended : prior is %d\tcount is %d\n", prior, count);
                }
        }
 
@@ -160,17 +126,14 @@ bool _remove_from_scheduled_alarm_list(int pid, alarm_id_t alarm_id)
        GSList *iter = NULL;
        __scheduled_alarm_t *alarm = NULL;
 
-       for (iter = g_scheduled_alarm_list; iter != NULL;
-            iter = g_slist_next(iter)) {
+       for (iter = g_scheduled_alarm_list; iter != NULL; iter = g_slist_next(iter)) {
                alarm = iter->data;
                if (alarm->alarm_id == alarm_id) {
-                       g_scheduled_alarm_list =
-                           g_slist_remove(g_scheduled_alarm_list, iter->data);
-                       /*g_free(iter->data); */
+                       g_scheduled_alarm_list = g_slist_remove(g_scheduled_alarm_list, iter->data);
+                       g_free(alarm);
                        result = true;
                        break;
                }
-
        }
 
        if (g_slist_length(g_scheduled_alarm_list) == 0) {
@@ -183,20 +146,25 @@ bool _remove_from_scheduled_alarm_list(int pid, alarm_id_t alarm_id)
 static time_t __alarm_next_duetime_once(__alarm_info_t *__alarm_info)
 {
        time_t due_time = 0;
+       time_t due_time_tmp = 0;
        time_t current_time = 0;
        struct tm duetime_tm;
-       int wday;
+       struct tm tmp_tm;
+       int current_dst = 0;
 
        alarm_info_t *alarm_info = &__alarm_info->alarm_info;
        alarm_date_t *start = &alarm_info->start;
 
+       tzset();
        time(&current_time);
        localtime_r(&current_time, &duetime_tm);
-       wday = duetime_tm.tm_wday;
        duetime_tm.tm_hour = start->hour;
        duetime_tm.tm_min = start->min;
        duetime_tm.tm_sec = start->sec;
 
+       current_dst = duetime_tm.tm_isdst;
+       duetime_tm.tm_isdst = -1;
+
        if (start->year == 0 && start->month == 0 && start->day == 0)
                /*any date */  {
                due_time = mktime(&duetime_tm);
@@ -210,8 +178,33 @@ static time_t __alarm_next_duetime_once(__alarm_info_t *__alarm_info)
                due_time = mktime(&duetime_tm);
        }
 
-       return due_time;
+       if (due_time <= current_time) {
+               ALARM_MGR_EXCEPTION_PRINT("duetime is less than or equal to current time. current_dst = %d", current_dst);
+               duetime_tm.tm_isdst = 0;        // DST off
+
+               due_time_tmp = mktime(&duetime_tm);
+               localtime_r(&due_time_tmp, &tmp_tm);
+
+               ALARM_MGR_LOG_PRINT("%d:%d:%d. duetime = %d", tmp_tm.tm_hour, tmp_tm.tm_min, tmp_tm.tm_sec, due_time);
+               if (tmp_tm.tm_hour == start->hour && tmp_tm.tm_min == start->min && tmp_tm.tm_sec == start->sec ) {
+                       due_time = due_time_tmp;
+                       ALARM_MGR_EXCEPTION_PRINT("due_time = %d",due_time);
+               }
+       }
+       else {
+               localtime_r(&due_time, &tmp_tm);
+               ALARM_MGR_LOG_PRINT("%d:%d:%d. current_dst = %d, duetime_dst = %d", tmp_tm.tm_hour, tmp_tm.tm_min, tmp_tm.tm_sec, current_dst, tmp_tm.tm_isdst);
+
+               if (current_dst == 1 && tmp_tm.tm_isdst == 1 && tmp_tm.tm_hour == start->hour + 1) {
+                       // When the calculated duetime is forwarded 1hour due to DST, Adds 23hours.
+                       due_time += 60 * 60 * 23;
+                       localtime_r(&due_time, &duetime_tm);
+                       ALARM_MGR_EXCEPTION_PRINT("due_time = %d",due_time);
+               }
+       }
 
+       ALARM_MGR_EXCEPTION_PRINT("Final due_time = %d, %s",due_time, ctime(&due_time));
+       return due_time;
 }
 
 static time_t __alarm_next_duetime_repeat(__alarm_info_t *__alarm_info)
@@ -233,6 +226,7 @@ static time_t __alarm_next_duetime_repeat(__alarm_info_t *__alarm_info)
        duetime_tm.tm_year = start->year - 1900;
        duetime_tm.tm_mon = start->month - 1;
        duetime_tm.tm_mday = start->day;
+       duetime_tm.tm_isdst = -1;
 
        due_time = mktime(&duetime_tm);
 
@@ -241,6 +235,10 @@ static time_t __alarm_next_duetime_repeat(__alarm_info_t *__alarm_info)
 
                /* due_time = mktime(&duetime_tm); */
        }
+
+       if (due_time - current_time < 10)
+               due_time += alarm_info->mode.u_interval.interval;
+
        localtime_r(&due_time, &duetime_tm);
 
        start->year = duetime_tm.tm_year + 1900;
@@ -259,14 +257,12 @@ static time_t __alarm_next_duetime_annually(__alarm_info_t *__alarm_info)
        time_t due_time = 0;
        time_t current_time = 0;
        struct tm duetime_tm;
-       int wday;
 
        alarm_info_t *alarm_info = &__alarm_info->alarm_info;
        alarm_date_t *start = &alarm_info->start;
 
        time(&current_time);
        localtime_r(&current_time, &duetime_tm);
-       wday = duetime_tm.tm_wday;
        duetime_tm.tm_hour = start->hour;
        duetime_tm.tm_min = start->min;
        duetime_tm.tm_sec = start->sec;
@@ -294,14 +290,12 @@ static time_t __alarm_next_duetime_monthly(__alarm_info_t *__alarm_info)
        time_t due_time = 0;
        time_t current_time = 0;
        struct tm duetime_tm;
-       int wday;
 
        alarm_info_t *alarm_info = &__alarm_info->alarm_info;
        alarm_date_t *start = &alarm_info->start;
 
        time(&current_time);
        localtime_r(&current_time, &duetime_tm);
-       wday = duetime_tm.tm_wday;
        duetime_tm.tm_hour = start->hour;
        duetime_tm.tm_min = start->min;
        duetime_tm.tm_sec = start->sec;
@@ -337,81 +331,131 @@ static time_t __alarm_next_duetime_weekly(__alarm_info_t *__alarm_info)
        time_t due_time = 0;
        time_t current_time = 0;
        struct tm duetime_tm;
+       struct tm tmp_tm;
        int wday;
+       int current_dst = 0;
+       struct tm before_tm;
+       struct tm after_tm;
 
        alarm_info_t *alarm_info = &__alarm_info->alarm_info;
        alarm_date_t *start = &alarm_info->start;
-
        alarm_mode_t *mode = &alarm_info->mode;
 
+       tzset();
        time(&current_time);
        localtime_r(&current_time, &duetime_tm);
        wday = duetime_tm.tm_wday;
        duetime_tm.tm_hour = start->hour;
        duetime_tm.tm_min = start->min;
        duetime_tm.tm_sec = start->sec;
+       current_dst = duetime_tm.tm_isdst;
 
-       if (__alarm_info->start != 0) {
+       duetime_tm.tm_isdst = -1;
 
-               if (__alarm_info->start >= current_time)        /*case 1*/ {
+       if (__alarm_info->start != 0) {
+               if (__alarm_info->start >= current_time)        {
                        duetime_tm.tm_year = start->year - 1900;
                        duetime_tm.tm_mon = start->month - 1;
                        duetime_tm.tm_mday = start->day;
-               } else  /*case 3*/ {
-                       /*don't need to be set */
                }
        }
-       /*case 4 */
 
        due_time = mktime(&duetime_tm);
+       localtime_r(&due_time, &tmp_tm);
+       ALARM_MGR_EXCEPTION_PRINT("%d:%d:%d. duetime = %d, isdst = %d", tmp_tm.tm_hour, tmp_tm.tm_min, tmp_tm.tm_sec, due_time, tmp_tm.tm_isdst);
+
+       if (due_time <= current_time) {
+               ALARM_MGR_EXCEPTION_PRINT("duetime is less than or equal to current time. current_dst = %d", current_dst);
+               duetime_tm.tm_isdst = 0;
+
+               due_time = mktime(&duetime_tm);
+               localtime_r(&due_time, &tmp_tm);
+
+               SECURE_LOGD("%d:%d:%d. duetime = %d", tmp_tm.tm_hour, tmp_tm.tm_min, tmp_tm.tm_sec, due_time);
+               if (tmp_tm.tm_hour != start->hour || tmp_tm.tm_min != start->min || tmp_tm.tm_sec != start->sec ) {
+                       duetime_tm.tm_hour = start->hour;
+                       duetime_tm.tm_min = start->min;
+                       duetime_tm.tm_sec = start->sec;
+                       duetime_tm.tm_isdst = -1;
+                       due_time = mktime(&duetime_tm);
+                       ALARM_MGR_EXCEPTION_PRINT("due_time = %d",due_time);
+               }
+       }
+       else {
+               if (current_dst == 1 && tmp_tm.tm_isdst == 1 && tmp_tm.tm_hour == start->hour + 1) {
+                       // When the calculated duetime is forwarded 1hour due to DST, Adds 23hours.
+                       due_time += 60 * 60 * 23;
+                       localtime_r(&due_time, &duetime_tm);
+                       ALARM_MGR_EXCEPTION_PRINT("due_time = %d",due_time);
+               }
+       }
+
+       // Gets the dst before calculating the duedate as interval
+       localtime_r(&due_time, &before_tm);
+       SECURE_LOGD("before_dst = %d", before_tm.tm_isdst);
+
        wday = duetime_tm.tm_wday;
 
-       /* CQ defect(72810) : only one time alarm function is not working 
+       ALARM_MGR_EXCEPTION_PRINT("current_time(%d) due_time(%d)", current_time, due_time);
+
+       /* CQ defect(72810) : only one time alarm function is not working
           under all recurrence_disabled. */
-       if (due_time > current_time && mode->u_interval.day_of_week == 0)
+       if (due_time > current_time && mode->u_interval.day_of_week == 0) {
                return due_time;
+       }
 
-       if (current_time >= due_time
-           || !(mode->u_interval.day_of_week & 1 << wday)) {
+       if (current_time >= due_time || !(mode->u_interval.day_of_week & 1 << wday)) {
                int day = wday + 1;
-               int next_week = 0;
                int interval = 1;
                /*this week */
 
                if (day == 7) {
                        day = 0;
-                       next_week = 1;
                }
 
-               while (!(mode->u_interval.day_of_week & 1 << day)
-                      && interval < 8) {
+               while (!(mode->u_interval.day_of_week & 1 << day) && interval < 8) {
                        day += 1;
                        interval += 1;
 
                        if (day == 7) {
                                day = 0;
-                               next_week = 1;
                        }
-
                }
+
                ALARM_MGR_LOG_PRINT("interval : %d\n", interval);
                due_time += 60 * 60 * 24 * interval;
        }
 
-       return due_time;
+       // Gets the dst after calculating the duedate as interval
+       localtime_r(&due_time, &after_tm);
+       SECURE_LOGD("after_dst = %d", after_tm.tm_isdst);
+
+       // Revise the duetime as difference in tm_isdst
+       if (before_tm.tm_isdst == 1 && after_tm.tm_isdst == 0) {
+               due_time += 60 * 60;    // Add an hour
+       } else if (before_tm.tm_isdst == 0 && after_tm.tm_isdst == 1) {
+               due_time -= 60 * 60;    // Subtract an hour
+       }
 
+       ALARM_MGR_EXCEPTION_PRINT("Final due_time = %d", due_time);
+       return due_time;
 }
 
 time_t _alarm_next_duetime(__alarm_info_t *__alarm_info)
 {
-
+       int is_dst=0;
        time_t current_time = 0;
        time_t due_time = 0;
+       struct tm *cur_tm = NULL ;
+       struct tm *due_tm = NULL ;
 
        alarm_info_t *alarm_info = &__alarm_info->alarm_info;
        alarm_mode_t *mode = &alarm_info->mode;
 
        time(&current_time);
+       cur_tm = localtime(&current_time);
+       if (cur_tm && cur_tm->tm_isdst > 0)
+               is_dst = 1;
 
        ALARM_MGR_LOG_PRINT("mode->repeat is %d\n", mode->repeat);
 
@@ -431,7 +475,21 @@ time_t _alarm_next_duetime(__alarm_info_t *__alarm_info)
                return 0;
        }
 
-       ALARM_MGR_LOG_PRINT("due_time %d\n", due_time);
+       if (mode->repeat != ALARM_REPEAT_MODE_WEEKLY && mode->repeat != ALARM_REPEAT_MODE_ONCE) {
+               due_tm = localtime(&due_time);
+               if (is_dst==0 && due_tm && due_tm->tm_isdst==1){
+                               ALARM_MGR_LOG_PRINT("DST alarm found, enable\n");
+                               due_tm->tm_hour = due_tm->tm_hour - DST_TIME_DIFF;
+               } else if (is_dst==1 && due_tm && due_tm->tm_isdst==0){
+                               ALARM_MGR_LOG_PRINT("DST alarm found. disable\n");
+                               due_tm->tm_hour = due_tm->tm_hour + DST_TIME_DIFF;
+               }
+
+               if (due_tm)
+                       due_time = mktime(due_tm);
+       }
+
+        ALARM_MGR_EXCEPTION_PRINT("alarm_id: %d, next duetime: %d", __alarm_info->alarm_id, due_time);
 
        if (__alarm_info->end != 0 && __alarm_info->end < due_time) {
                ALARM_MGR_LOG_PRINT("due time > end time");
@@ -441,7 +499,6 @@ time_t _alarm_next_duetime(__alarm_info_t *__alarm_info)
        __alarm_info->due_time = due_time;
 
        return due_time;
-
 }
 
 static bool __find_next_alarm_to_be_scheduled(time_t *min_due_time)
@@ -461,20 +518,16 @@ static bool __find_next_alarm_to_be_scheduled(time_t *min_due_time)
 
                double interval = 0;
 
-               ALARM_MGR_LOG_PRINT("alarm[%d] with duetime(%u) at "
-                                   "current(%u) pid: (%d)\n",
-                    entry->alarm_id, due_time, current_time, entry->pid);
-               if (due_time == 0)      /*0 means this alarm 
-                       has been disabled*/ {
+               SECURE_LOGD("alarm[%d] with duetime(%u) at current(%u) pid: (%d)\n",
+                       entry->alarm_id, due_time, current_time, entry->pid);
+               if (due_time == 0)      /*0 means this alarm has been disabled*/ {
                        continue;
                }
 
                interval = difftime(due_time, current_time);
 
-               if (interval <= 0)      /*2008.08.06 when the alarm expires, 
-                       it may makes an error.*/ {
-                       ALARM_MGR_LOG_PRINT("this may be error.. alarm[%d]\n",
-                                           entry->alarm_id);
+               if (interval <= 0)      /*2008.08.06 when the alarm expires, it may makes an error.*/ {
+                       ALARM_MGR_EXCEPTION_PRINT("The duetime of alarm(%d) is OVER.", entry->alarm_id);
                        continue;
                }
 
@@ -490,131 +543,28 @@ static bool __find_next_alarm_to_be_scheduled(time_t *min_due_time)
        return true;
 }
 
-#ifdef __ALARM_BOOT
-/*alarm boot*/
-static bool __find_next_alarm_to_be_scheduled_power_on(time_t *min_due_time)
-{
-       time_t current_time;
-       time_t min_time = -1;
-       time_t due_time;
-       struct tm duetime_tm;
-       __alarm_info_t *entry = NULL;
-       struct tm *temp_info;
-       GSList *iter = NULL;
-
-       time(&current_time);
-
-       tzset();                /*for portability tzset() need to be called
-                               before locatime_r,refer manpage localtime_r*/
-       temp_info = localtime_r(&current_time, &duetime_tm);
-
-       if (temp_info != NULL)
-               ALARM_MGR_LOG_PRINT
-                   ("__find_next_alarm_to_be_scheduled_power_on "
-                    ": %d %d %d %d %d\n", temp_info->tm_year,
-                    temp_info->tm_mon, temp_info->tm_mday, temp_info->tm_hour,
-                    temp_info->tm_min);
-
-       for (iter = alarm_context.alarms; iter != NULL;
-            iter = g_slist_next(iter)) {
-               entry = iter->data;
-               due_time = entry->due_time;
-
-               double interval = 0;
-
-               ALARM_MGR_LOG_PRINT("%s\n", g_quark_to_string(
-                       entry->quark_dst_service_name));
-
-               /*if(entry->quark_dst_service_name  != g_quark_from_string
-                  (WAKEUP_ALARM_APP_ID)) continue; */
-
-               if (strcmp
-                   (g_quark_to_string(entry->quark_dst_service_name),
-                    WAKEUP_ALARM_APP_ID) != 0)
-                       continue;
-
-               ALARM_MGR_LOG_PRINT(
-                   "alarm[%d] with duetime(%u) at current(%u)\n",
-                    entry->alarm_id, due_time, current_time);
-               if (due_time == 0)      /* 0 means this alarm has 
-                       been disabled*/ {
-                       continue;
-               }
-
-               interval = difftime(due_time, current_time);
-
-               if (interval <= 0)      /*2008.08.06 when the alarm expires, 
-               it may makes an error.*/ {
-                       ALARM_MGR_LOG_PRINT("this may be error.. alarm[%d]\n",
-                                           entry->alarm_id);
-                       continue;
-               }
-
-               interval = difftime(due_time, min_time);
-
-               if ((interval < 0) || min_time == -1) {
-                       min_time = due_time;
-               }
-
-       }
-
-       *min_due_time = min_time;
-       return true;
-}
-#endif
-
 bool _alarm_schedule()
 {
-       time_t current_time;
-       time_t due_time;
-       time_t min_time;
-       GSList *iter;
+       time_t due_time = 0;
+       time_t min_time = 0;
+       GSList *iter = NULL;
        __alarm_info_t *entry = NULL;
 
-       int min = -1;
-
-       time(&current_time);
-
-       min_time = 0;
-
        __find_next_alarm_to_be_scheduled(&min_time);
 
        if (min_time == -1) {
-               ALARM_MGR_LOG_PRINT("[alarm-server][schedule]: There is no "
-                                   "alarm to be scheduled..\n");
+               ALARM_MGR_LOG_PRINT("[alarm-server][schedule]: There is no alarm to be scheduled.");
        } else {
-               for (iter = alarm_context.alarms; iter != NULL;
-                    iter = g_slist_next(iter)) {
+               for (iter = alarm_context.alarms; iter != NULL; iter = g_slist_next(iter)) {
                        entry = iter->data;
                        due_time = entry->due_time;
 
                        if (due_time == min_time) {
                                _add_to_scheduled_alarm_list(entry);
                        }
-
-       }
-
-               _alarm_set_timer(&alarm_context, alarm_context.timer, min_time,
-                                min);
-
-       }
-
-       return true;
-}
-
-#ifdef __ALARM_BOOT
-/*alarm boot*/
-bool _alarm_find_mintime_power_on(time_t *min_time)
-{
-
-       __find_next_alarm_to_be_scheduled_power_on(min_time);
-
-       if ((*min_time) == -1) {
-               ALARM_MGR_LOG_PRINT("[alarm-server][schedule]: There is no "
-                                   "alarm boot to be scheduled..\n");
-               return false;
+               }
+               _alarm_set_timer(&alarm_context, alarm_context.timer, min_time);
        }
 
        return true;
 }
-#endif