#define NTP_SERVER "pool.ntp.org"
#define CONNMAN_GLOBAL_SETTING "/var/lib/connman/settings"
+#define TIME_UPDATE_CONFIG_AUTO "auto"
+#define TIME_UPDATE_CONFIG_MANUAL "manual"
static Clock *clock_object = NULL;
return clock_object;
}
-static void __netconfig_clock_clear_timeserver(void)
-{
- GKeyFile *keyfile = NULL;
-
- keyfile = netconfig_keyfile_load(CONNMAN_GLOBAL_SETTING);
-
- if (keyfile == NULL)
- return;
-
- g_key_file_remove_key(keyfile, "global", "Timeservers", NULL);
-
- netconfig_keyfile_save(keyfile, CONNMAN_GLOBAL_SETTING);
- g_key_file_free(keyfile);
-}
-
-static gboolean __netconfig_clock_clear_timeserver_timer(gpointer data)
-{
- INFO("Clear NTP server");
-
- __netconfig_clock_clear_timeserver();
-
- return FALSE;
-}
-
static void __netconfig_clock_set_timeserver(const char *server)
{
GVariant* reply = NULL;
return;
}
-static void __netconfig_set_timeserver(void)
+static void __netconfig_clock_set_time_update_policy(const char *time_update_method)
{
- int nitz_updated = 0;
-
- netconfig_vconf_get_int(VCONFKEY_TELEPHONY_NITZ_EVENT_GMT, &nitz_updated);
-
- if (nitz_updated != 0)
- return;
-
- __netconfig_clock_set_timeserver((const char *)NTP_SERVER);
-}
+ GVariant* reply = NULL;
-static void __network_changed_cb(keynode_t *node, void *user_data)
-{
- int status = VCONFKEY_NETWORK_OFF;
- gboolean automatic_time_update = 0;
+ reply = netconfig_invoke_dbus_method(CONNMAN_SERVICE,
+ CONNMAN_MANAGER_PATH, CONNMAN_CLOCK_INTERFACE,
+ "SetProperty", g_variant_new("(sv)", "TimeUpdates",
+ g_variant_new_string(time_update_method)));
- if (node != NULL)
- status = vconf_keynode_get_int(node);
+ if (reply == NULL)
+ ERR("Failed to set Time Update Policy");
else
- netconfig_vconf_get_int(VCONFKEY_NETWORK_STATUS, &status);
-
- if (status == VCONFKEY_NETWORK_OFF)
- return;
-
- netconfig_vconf_get_bool(
- VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL,
- &automatic_time_update);
-
- if (automatic_time_update == FALSE) {
- INFO("Automatic time update is not set (%d)", automatic_time_update);
- return;
- }
+ g_variant_unref(reply);
- __netconfig_set_timeserver();
+ return;
}
static void __automatic_time_update_changed_cb(keynode_t *node, void *user_data)
if (automatic_time_update == FALSE) {
INFO("Automatic time update is changed to 'FALSE'");
- __netconfig_clock_unset_timeserver();
+ __netconfig_clock_set_time_update_policy((const char *)TIME_UPDATE_CONFIG_MANUAL);
return;
}
return;
}
- __netconfig_set_timeserver();
+ __netconfig_clock_set_time_update_policy((const char *)TIME_UPDATE_CONFIG_AUTO);
}
static void __nitz_event_cb(keynode_t *node, void *user_data)
if (nitz_updated != 0) {
INFO("Time is updated by NITZ");
- __netconfig_clock_unset_timeserver();
+ __netconfig_clock_set_time_update_policy((const char *)TIME_UPDATE_CONFIG_MANUAL);
return;
}
}
__automatic_time_update_changed_cb, NULL);
vconf_notify_key_changed(VCONFKEY_TELEPHONY_NITZ_EVENT_GMT,
__nitz_event_cb, NULL);
- vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS,
- __network_changed_cb, NULL);
netconfig_vconf_get_bool(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, &automatic_time_update);
if (automatic_time_update == FALSE)
- __netconfig_clock_clear_timeserver_timer(NULL);
+ __netconfig_clock_set_time_update_policy((const char *)TIME_UPDATE_CONFIG_MANUAL);
+ else
+ __netconfig_clock_set_time_update_policy((const char *)TIME_UPDATE_CONFIG_AUTO);
}
void netconfig_clock_deinit(void)
__automatic_time_update_changed_cb);
vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NITZ_EVENT_GMT,
__nitz_event_cb);
- vconf_ignore_key_changed(VCONFKEY_NETWORK_STATUS,
- __network_changed_cb);
}
gboolean handle_set_ntp_server(Clock *object, GDBusMethodInvocation *invocation,