+static void __on_system_time_external_changed(keynode_t *node, void *data)
+{
+ double diff_time;
+ time_t cur_time = 0;
+
+ _alarm_disable_timer(alarm_context);
+
+ if (node) {
+ diff_time = vconf_keynode_get_dbl(node);
+ } else {
+ vconf_get_dbl(VCONFKEY_SYSTEM_TIMECHANGE_EXTERNAL, &diff_time);
+ }
+
+ tzset();
+
+ ALARM_MGR_ASSERT_PRINT("diff_time is %f\n", diff_time);
+
+ ALARM_MGR_LOG_PRINT("[alarm-server] System time has been changed externally\n");
+ ALARM_MGR_LOG_PRINT("1.alarm_context.c_due_time is %d\n",
+ alarm_context.c_due_time);
+
+ // set rtc time only because the linux time is set externally
+ time(&cur_time);
+ _set_rtc_time(cur_time);
+
+ vconf_set_dbl(VCONFKEY_SYSTEM_TIMEDIFF, diff_time);
+ vconf_set_int(VCONFKEY_SYSTEM_TIME_CHANGED,(int)diff_time);
+
+ __alarm_update_due_time_of_all_items_in_list(diff_time);
+
+ ALARM_MGR_LOG_PRINT("2.alarm_context.c_due_time is %d\n",
+ alarm_context.c_due_time);
+ _clear_scheduled_alarm_list();
+ _alarm_schedule();
+ __rtc_set();
+#ifdef __ALARM_BOOT
+ /*alarm boot */
+ if (enable_power_on_alarm) {
+/* orginally first arg's value was 21(app_id, WAKEUP_ALARM_
+APP_ID) in a platform with app-server. because _alarm_power_
+on(..) fuction don't use first parameter internally, we set
+this value to 0(zero)
+*/
+ __alarm_power_on(0, enable_power_on_alarm, NULL);
+ }
+#endif
+ return;
+}
+
+static void __on_time_zone_changed(keynode_t *node, void *data)
+{
+ double diff_time = 0;
+
+ _alarm_disable_timer(alarm_context);
+
+ tzset();
+
+ ALARM_MGR_LOG_PRINT("[alarm-server] time zone has been changed\n");
+ ALARM_MGR_LOG_PRINT("1.alarm_context.c_due_time is %d\n", alarm_context.c_due_time);
+
+ __alarm_update_due_time_of_all_items_in_list(diff_time);
+
+ ALARM_MGR_LOG_PRINT("2.alarm_context.c_due_time is %d\n", alarm_context.c_due_time);
+ _clear_scheduled_alarm_list();
+ _alarm_schedule();
+ __rtc_set();
+#ifdef __ALARM_BOOT
+ /*alarm boot */
+ if (enable_power_on_alarm) {
+/* orginally first arg's value was 21(app_id, WAKEUP_ALARM_
+APP_ID) in a platform with app-server. because _alarm_power_
+on(..) fuction don't use first parameter internally, we set
+this value to 0(zero)
+*/
+ __alarm_power_on(0, enable_power_on_alarm, NULL);
+ }
+#endif
+ return;
+}
+
+