Fix wifi auto connection on rebooting 03/128803/2 accepted/tizen/unified/20170511.173503 submit/tizen/20170511.113107 tizen_4.0.m1_release
authorSangkoo Kim <sangkoo.kim@samsung.com>
Thu, 11 May 2017 11:20:28 +0000 (20:20 +0900)
committerSangkoo Kim <sangkoo.kim@samsung.com>
Thu, 11 May 2017 11:21:16 +0000 (20:21 +0900)
Change-Id: I83150bf8430117497ca45580bcbccb0b6b00e568
Signed-off-by: Sangkoo Kim <sangkoo.kim@samsung.com>
CMakeLists.txt
packaging/ua-client.spec
src/ua_client.cpp

index df20ae14a28374a7d1891fc592ffaa5a592ac65c..8e4602d65bb2ca559f024eb6c2e0b0fe8ae07109 100755 (executable)
@@ -37,7 +37,7 @@ set(SOURCES
 
 #set(dependents "boost dlog glib-2.0 iotivity libcurl uuid json-glib-1.0 capi-network-connection")
 #set(dependents "boost dlog glib-2.0 libcurl uuid json-glib-1.0 capi-network-connection capi-network-wifi)
-set(dependents "boost dlog glib-2.0 libcurl uuid json-glib-1.0 capi-network-connection capi-network-wifi capi-network-wifi-manager")
+set(dependents "boost dlog glib-2.0 libcurl uuid json-glib-1.0 capi-network-connection capi-network-wifi capi-network-wifi-manager vconf")
 include(FindPkgConfig)
 pkg_check_modules(${PROJECT_NAME} REQUIRED ${dependents})
 
index dee289176e3520e57e01bf29489472c807639fd9..b2950b82e8ea21e97d97c8c35a071953925be0b4 100755 (executable)
@@ -1,5 +1,5 @@
 Name:           ua-client
-Version:        0.0.2
+Version:        0.0.3
 Release:        1
 License:        Apache-2.0
 Summary:        Upgrade agent client
@@ -26,6 +26,7 @@ BuildRequires: pkgconfig(libcurl)
 #BuildRequires: pkgconfig(libssl)
 BuildRequires: pkgconfig(uuid)
 BuildRequires: pkgconfig(capi-network-wifi-manager)
+BuildRequires: pkgconfig(vconf)
 
 %description
 Description: Firmware Upgrade agent client using OCF
index 30266ccbb994b88a4fc1af397a01f0d55abceaa0..0f81bf3c5f314a3b8335770e3573680986700598 100755 (executable)
@@ -23,6 +23,8 @@
 
 #include <net_connection.h>
 #include <wifi-manager.h>
+#include <vconf.h>
+#include <vconf-internal-keys.h>
 
 #if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
 #include "ocprovisioningmanager.h"
@@ -962,12 +964,21 @@ void _wifi_scan_finished_cb(wifi_manager_error_e result, void *user_data)
 }
 
 
+void _wifi_state_changed_cb(wifi_manager_device_state_e state, void *user_data)
+{
+       UA_LOG("_wifi_state_changed_cb() state=[%d]", state);
+
+       if (state == WIFI_MANAGER_DEVICE_STATE_ACTIVATED) {
+               wifi_manager_scan(wifi_h, _wifi_scan_finished_cb, user_data);
+               wifi_manager_unset_device_state_changed_cb(wifi_h);
+       }
+}
+
 void _wifi_activate_cb(wifi_manager_error_e result, void *user_data)
 {
        UA_LOG("_wifi_activate_cb() result=[%s]", __test_convert_error_to_string(result));
 }
 
-
 void _wifi_auto_connect(ua_wifi_info_s *wifi_info)
 {
        UA_LOG("Enter");
@@ -987,10 +998,11 @@ void _wifi_auto_connect(ua_wifi_info_s *wifi_info)
        }
 
        if (wifi_info->ap_name && strlen(wifi_info->ap_name) > 0) {
+#if 0
                wifi_manager_is_activated(wifi_h, &wifi_state);
                UA_LOG("Wifi activate state = [%s]", wifi_state?"TRUE":"FALSE");
-
                if (wifi_state == false) {
+
                        wifi_manager_set_background_scan_cb(wifi_h, _wifi_scan_finished_cb, (void *)wifi_info);
 
                        rv = wifi_manager_activate(wifi_h, _wifi_activate_cb, NULL);
@@ -998,6 +1010,33 @@ void _wifi_auto_connect(ua_wifi_info_s *wifi_info)
                } else {
                        wifi_manager_scan(wifi_h, _wifi_scan_finished_cb, (void *)wifi_info);
                }
+#else
+               int vconf_val = 0;
+               vconf_get_int("file/private/wifi/last_power_state", &vconf_val);
+               UA_LOG("wifi last power state = [%d]", vconf_val);
+               if (vconf_val > VCONFKEY_WIFI_OFF) { // auto activated
+                       wifi_manager_connection_state_e connection_state;
+                       wifi_manager_get_connection_state(wifi_h, &connection_state);
+                       UA_LOG("Wifi connection state = [%d]", connection_state);
+                       if (connection_state == WIFI_MANAGER_CONNECTION_STATE_CONNECTED) {
+                               pthread_mutex_lock(&thd_mutex);
+                               g_wifi_connected = true;
+                               pthread_mutex_unlock(&thd_mutex);
+                       } else {
+                               wifi_manager_set_connection_state_changed_cb(wifi_h, _wifi_connection_state_changed_cb, NULL);
+                       }
+               } else {
+                       wifi_manager_is_activated(wifi_h, &wifi_state);
+                       UA_LOG("Wifi activate state = [%s]", wifi_state?"TRUE":"FALSE");
+                       if (wifi_state == false) {
+                               wifi_manager_set_device_state_changed_cb(wifi_h, _wifi_state_changed_cb, (void *)wifi_info);
+                               rv = wifi_manager_activate(wifi_h, _wifi_activate_cb, NULL);
+                               UA_LOG("wifi_manager_activate() return=[%s]", __test_convert_error_to_string((wifi_manager_error_e)rv));
+                       } else {
+                               wifi_manager_scan(wifi_h, _wifi_scan_finished_cb, (void *)wifi_info);
+                       }
+               }
+#endif
        } else {
                wifi_manager_connection_state_e connection_state;
                wifi_manager_get_connection_state(wifi_h, &connection_state);