From 79df271b24ddaabfacec53968db068a3b4b9a0be Mon Sep 17 00:00:00 2001 From: Anjali Nijhara Date: Tue, 20 Jun 2023 20:32:56 +0530 Subject: [PATCH] Handle Time update policy based on vconfkey value Change-Id: I26e78e0c37db2723b8c16ee6925802a5a437c88b --- src/network-clock.c | 80 ++++++++++----------------------------------- 1 file changed, 18 insertions(+), 62 deletions(-) diff --git a/src/network-clock.c b/src/network-clock.c index d40b506..e4227c3 100755 --- a/src/network-clock.c +++ b/src/network-clock.c @@ -27,6 +27,8 @@ #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; @@ -35,30 +37,6 @@ Clock *get_clock_object(void) 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; @@ -110,41 +88,21 @@ static void __netconfig_clock_unset_timeserver(void) 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) @@ -159,7 +117,7 @@ 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; } @@ -170,7 +128,7 @@ static void __automatic_time_update_changed_cb(keynode_t *node, void *user_data) 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) @@ -184,7 +142,7 @@ 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; } } @@ -198,13 +156,13 @@ void netconfig_clock_init(void) __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) @@ -213,8 +171,6 @@ 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, -- 2.34.1