X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fnetwork-clock.c;h=98bf2e897cf3825cde6f840522fdcbf59815ce60;hb=4330e4aa70b3933edb887bd275561652fecd6c53;hp=0feddfa05ec22d2893daf71461ae237cd7f35952;hpb=7a8a53f40cd43f1e5b0e73d784f55e9ad2238be4;p=platform%2Fcore%2Fconnectivity%2Fnet-config.git diff --git a/src/network-clock.c b/src/network-clock.c index 0feddfa..98bf2e8 100755 --- a/src/network-clock.c +++ b/src/network-clock.c @@ -77,9 +77,41 @@ static void __netconfig_clock_set_timeserver(const char *server) return; } +static void __netconfig_clock_unset_timeserver(void) +{ + GVariant* reply = NULL; + const char param0[] = "Timeservers"; + const char server[] = ""; + GVariant *params = NULL; + GVariantBuilder *builder; + + builder = g_variant_builder_new(G_VARIANT_TYPE("as")); + g_variant_builder_add(builder, "s", server); + + params = g_variant_new("(sv)", param0, g_variant_builder_end(builder)); + g_variant_builder_unref(builder); + + reply = netconfig_invoke_dbus_method(CONNMAN_SERVICE, + CONNMAN_MANAGER_PATH, CONNMAN_CLOCK_INTERFACE, + "SetProperty", params); + + if (reply == NULL) + ERR("Failed to clear NTP server"); + else + g_variant_unref(reply); + + return; +} + static void __netconfig_set_timeserver(void) { guint timeserver_clear_timer = 0; + 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); @@ -87,15 +119,20 @@ static void __netconfig_set_timeserver(void) NULL, ×erver_clear_timer); } -static void __netconfig_clock( - wifi_service_state_e state, void *user_data) +static void __network_changed_cb(keynode_t *node, void *user_data) { + int status = VCONFKEY_NETWORK_OFF; gboolean automatic_time_update = 0; - if (state != NETCONFIG_WIFI_CONNECTED) + if (node != NULL) + status = vconf_keynode_get_int(node); + else + netconfig_vconf_get_int(VCONFKEY_NETWORK_STATUS, &status); + + if (status == VCONFKEY_NETWORK_OFF) return; - vconf_get_bool( + netconfig_vconf_get_bool( VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, &automatic_time_update); @@ -107,46 +144,65 @@ static void __netconfig_clock( __netconfig_set_timeserver(); } -static wifi_state_notifier netconfig_clock_notifier = { - .wifi_state_changed = __netconfig_clock, - .user_data = NULL, -}; - static void __automatic_time_update_changed_cb(keynode_t *node, void *user_data) { + int status = VCONFKEY_NETWORK_OFF; gboolean automatic_time_update = FALSE; - wifi_service_state_e wifi_state = NETCONFIG_WIFI_UNKNOWN; if (node != NULL) automatic_time_update = vconf_keynode_get_bool(node); else - vconf_get_bool(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, &automatic_time_update); + netconfig_vconf_get_bool(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, &automatic_time_update); if (automatic_time_update == FALSE) { INFO("Automatic time update is changed to 'FALSE'"); + __netconfig_clock_unset_timeserver(); return; } - wifi_state = wifi_state_get_service_state(); + netconfig_vconf_get_int(VCONFKEY_NETWORK_STATUS, &status); - if (wifi_state != NETCONFIG_WIFI_CONNECTED) { - INFO("WiFi state is not NETCONFIG_WIFI_CONNECTED"); + if (status == VCONFKEY_NETWORK_OFF) { + INFO("There is no connection"); return; } __netconfig_set_timeserver(); } +static void __nitz_event_cb(keynode_t *node, void *user_data) +{ + int nitz_updated = 0; + + if (node != NULL) + nitz_updated = vconf_keynode_get_int(node); + else + netconfig_vconf_get_int(VCONFKEY_TELEPHONY_NITZ_EVENT_GMT, &nitz_updated); + + if (nitz_updated != 0) { + INFO("Time is updated by NITZ"); + __netconfig_clock_unset_timeserver(); + return; + } +} + void netconfig_clock_init(void) { INFO("netconfig_clock_init is called"); vconf_notify_key_changed(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, __automatic_time_update_changed_cb, NULL); - - wifi_state_notifier_register(&netconfig_clock_notifier); + vconf_notify_key_changed(VCONFKEY_TELEPHONY_NITZ_EVENT_GMT, + __nitz_event_cb, NULL); + vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS, + __network_changed_cb, NULL); } void netconfig_clock_deinit(void) { - wifi_state_notifier_unregister(&netconfig_clock_notifier); + vconf_ignore_key_changed(VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, + __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); }