Handle Time update policy based on vconfkey value 22/294522/4 accepted/tizen/unified/20230628.023645
authorAnjali Nijhara <a.nijhara@samsung.com>
Tue, 20 Jun 2023 15:02:56 +0000 (20:32 +0530)
committerAnjali Nijhara <a.nijhara@samsung.com>
Mon, 26 Jun 2023 03:43:36 +0000 (09:13 +0530)
Change-Id: I26e78e0c37db2723b8c16ee6925802a5a437c88b

src/network-clock.c

index d40b50690a41753725a7c2466c9e53d2e3773f09..e4227c30fcc16455eb972821fb7e6336b36ddb58 100755 (executable)
@@ -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,