From 1d11e23ebaf8a6dc2c025be09ac4915b4d291a50 Mon Sep 17 00:00:00 2001 From: Jinkun Jang Date: Sat, 16 Mar 2013 01:13:33 +0900 Subject: [PATCH] merge with master --- include/wifi-background-scan.h | 2 ++ packaging/net-config.spec | 3 +- src/signal-handler.c | 2 ++ src/wifi-background-scan.c | 52 ++++++++++++++++++++++++++++++++++ src/wifi.c | 1 + 5 files changed, 59 insertions(+), 1 deletion(-) diff --git a/include/wifi-background-scan.h b/include/wifi-background-scan.h index c1d3920..999400b 100644 --- a/include/wifi-background-scan.h +++ b/include/wifi-background-scan.h @@ -34,6 +34,8 @@ gboolean netconfig_wifi_get_scanning(void); void netconfig_wifi_set_scanning(gboolean scanning); gboolean netconfig_iface_wifi_set_bgscan(NetconfigWifi *wifi, guint scan_mode, GError **error); +void netconfig_wifi_init_bgscan(); +void netconfig_wifi_deinit_bgscan(); #ifdef __cplusplus } diff --git a/packaging/net-config.spec b/packaging/net-config.spec index d34aea6..99819e9 100644 --- a/packaging/net-config.spec +++ b/packaging/net-config.spec @@ -1,6 +1,6 @@ Name: net-config Summary: TIZEN Network Configuration Module -Version: 0.1.90_16 +Version: 0.1.90_17 Release: 1 Group: System/Network License: Apache License Version 2.0 @@ -64,6 +64,7 @@ cp LICENSE.APLv2 %{buildroot}%{_datadir}/license/net-config vconftool set -t int memory/dnet/state 0 -i vconftool set -t int memory/wifi/state 0 -i vconftool set -t int memory/wifi/strength 0 -i +vconftool set -t int memory/wifi/bgscan_mode 0 -i vconftool set -t int memory/dnet/cellular 0 -i vconftool set -t int memory/dnet/wifi 0 -i diff --git a/src/signal-handler.c b/src/signal-handler.c index 1aa7f10..3c0d781 100644 --- a/src/signal-handler.c +++ b/src/signal-handler.c @@ -391,4 +391,6 @@ void netconfig_deregister_signal(void) dbus_connection_unref(signal_connection); signal_connection = NULL; + + netconfig_wifi_deinit_bgscan(); } diff --git a/src/wifi-background-scan.c b/src/wifi-background-scan.c index 224c184..46e98e2 100644 --- a/src/wifi-background-scan.c +++ b/src/wifi-background-scan.c @@ -172,6 +172,36 @@ static gboolean __netconfig_wifi_bgscan_request_scan(gpointer data) return FALSE; } +static void __netconfig_wifi_bgscan_mode_cb(keynode_t* node, void* user_data) +{ + int value; + int wifi_state; + + if (vconf_get_int(VCONFKEY_WIFI_BGSCAN_MODE, &value) < 0) { + ERR("VCONFKEY_WIFI_BGSCAN_MODE get failed"); + return; + } + + DBG("Background scanning mode is changed : %d", value); + + __netconfig_wifi_bgscan_set_mode((guint)value); + + if (vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_state) < 0) { + ERR("VCONFKEY_WIFI_STATE get failed"); + return; + } + + if (wifi_state == VCONFKEY_WIFI_OFF) + return; + + struct bgscan_timer_data *timer_data = __netconfig_wifi_bgscan_get_bgscan_data(); + + if (timer_data->timer_id != 0) + netconfig_wifi_bgscan_stop(); + + netconfig_wifi_bgscan_start(); +} + void netconfig_wifi_bgscan_start(void) { struct bgscan_timer_data *timer_data = @@ -232,3 +262,25 @@ gboolean netconfig_iface_wifi_set_bgscan(NetconfigWifi *wifi, guint scan_mode, G return TRUE; } + +void netconfig_wifi_init_bgscan() +{ + guint scan_mode = __netconfig_wifi_bgscan_get_mode(); + + if (scan_mode == WIFI_BGSCAN_MODE_PERIODIC) + vconf_set_int(VCONFKEY_WIFI_BGSCAN_MODE, VCONFKEY_WIFI_BGSCAN_MODE_PERIODIC); + else + vconf_set_int(VCONFKEY_WIFI_BGSCAN_MODE, VCONFKEY_WIFI_BGSCAN_MODE_EXPONENTIAL); + + if (vconf_notify_key_changed(VCONFKEY_WIFI_BGSCAN_MODE, + __netconfig_wifi_bgscan_mode_cb, NULL)) + DBG("Failed to set notify callback"); +} + +void netconfig_wifi_deinit_bgscan() +{ + if (vconf_ignore_key_changed(VCONFKEY_WIFI_BGSCAN_MODE, + __netconfig_wifi_bgscan_mode_cb)) + DBG("Failed to unset notify callback"); +} + diff --git a/src/wifi.c b/src/wifi.c index baf3e12..e5e4ddb 100644 --- a/src/wifi.c +++ b/src/wifi.c @@ -167,6 +167,7 @@ gpointer netconfig_wifi_create_and_init(DBusGConnection *conn) INFO("wifi(%p) register DBus path(%s)", object, NETCONFIG_WIFI_PATH); netconfig_wifi_power_configuration(); + netconfig_wifi_init_bgscan(); return object; } -- 2.34.1