#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;
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(¤t_time);
+ _alarm_time(¤t_time);
localtime_r(¤t_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;
alarm_info_t *alarm_info = &__alarm_info->alarm_info;
alarm_date_t *start = &alarm_info->start;
- time(¤t_time);
+ _alarm_time(¤t_time);
/*localtime_r(¤t_time, &duetime_tm); */
duetime_tm.tm_hour = start->hour;
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(¤t_time);
+ _alarm_time(¤t_time);
localtime_r(¤t_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;
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(¤t_time);
+ _alarm_time(¤t_time);
localtime_r(¤t_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;
alarm_mode_t *mode = &alarm_info->mode;
- time(¤t_time);
+ _alarm_time(¤t_time);
localtime_r(¤t_time, &duetime_tm);
wday = duetime_tm.tm_wday;
duetime_tm.tm_hour = start->hour;
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)
if (day == 7) {
day = 0;
- next_week = 1;
}
}
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(¤t_time);
+ _alarm_time(¤t_time);
+ cur_tm = localtime(¤t_time);
+ if (cur_tm->tm_isdst > 0)
+ is_dst = 1;
ALARM_MGR_LOG_PRINT("mode->repeat is %d\n", mode->repeat);
return 0;
}
+ due_tm = localtime(&due_time);
+ if (is_dst==0 && 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->tm_isdst==0){
+ ALARM_MGR_LOG_PRINT("DST alarm found. disable\n");
+ due_tm->tm_hour = due_tm->tm_hour + DST_TIME_DIFF;
+ }
+ due_time = mktime(due_tm);
+
ALARM_MGR_LOG_PRINT("due_time %d\n", due_time);
if (__alarm_info->end != 0 && __alarm_info->end < due_time) {
GSList *iter = NULL;
__alarm_info_t *entry = NULL;
- time(¤t_time);
+ _alarm_time(¤t_time);
for (iter = alarm_context.alarms; iter != NULL;
iter = g_slist_next(iter)) {
struct tm *temp_info;
GSList *iter = NULL;
- time(¤t_time);
+ _alarm_time(¤t_time);
tzset(); /*for portability tzset() need to be called
before locatime_r,refer manpage localtime_r*/
int min = -1;
- time(¤t_time);
+ _alarm_time(¤t_time);
min_time = 0;