Fix for [TCM-3097] - Wifi turns off automatically 90/164690/1 accepted/tizen/unified/20171222.062624 submit/tizen/20171221.235332
authorAbhishek Sansanwal <abhishek.s94@samsung.com>
Wed, 20 Dec 2017 10:04:36 +0000 (15:34 +0530)
committerAbhishek Sansanwal <abhishek.s94@samsung.com>
Wed, 20 Dec 2017 10:11:57 +0000 (15:41 +0530)
Description: The WiFi state was not remembered so when the
application was started again the state was always off in
case of emulator. Also in case of emulator the radio button
was on initially on for a short duration and then turned to
off for every time the application was started.

The solution was to use a vconf key and set/get the key
in case of emulator instead of using wifi-manager calls
as in the case of hardware device. When the application
is launched we get the vconf key value and restore the
state again.

Change-Id: I0a9c3355a80d298864374a122bad69588f1df96a
Signed-off-by: Abhishek Sansanwal <abhishek.s94@samsung.com>
sources/libraries/WlanManager/WlanManager/wlan_manager.c
sources/ui-gadget/viewers-layout/viewer_manager.c

index 58f8781..13579fd 100755 (executable)
@@ -547,10 +547,16 @@ int wlan_manager_get_connected_ap(wifi_manager_ap_h *ap)
 
 int wlan_manager_state_get(void)
 {
+       int value = VCONFKEY_WIFI_OFF;
        int ret_val = 0;
 
        if (_is_emulator()) {
-               if (wifi_emulator_state == WIFI_MANAGER_DEVICE_STATE_ACTIVATED)
+               value = common_util_get_system_registry(VCONFKEY_WIFI_STATE);
+               if (value == -1) {
+                       ERROR_LOG(COMMON_NAME_ERR, "fail to get vconf key!");
+                       return VCONFKEY_WIFI_OFF;
+               }
+               if (value == VCONFKEY_WIFI_UNCONNECTED)
                        ret_val = WLAN_MANAGER_UNCONNECTED;
                else
                        ret_val = WLAN_MANAGER_OFF;
@@ -645,6 +651,8 @@ int wlan_manager_power_on(void)
                        __COMMON_FUNC_EXIT__;
                        return WLAN_MANAGER_ERR_UNKNOWN;
                }
+       } else {
+               common_util_set_system_registry(VCONFKEY_WIFI_STATE, VCONFKEY_WIFI_UNCONNECTED);
        }
 
        __COMMON_FUNC_EXIT__;
@@ -668,6 +676,8 @@ int wlan_manager_power_off(void)
                        __COMMON_FUNC_EXIT__;
                        return WLAN_MANAGER_ERR_UNKNOWN;
                }
+       } else {
+               common_util_set_system_registry(VCONFKEY_WIFI_STATE, VCONFKEY_WIFI_OFF);
        }
 
        __COMMON_FUNC_EXIT__;
index 96e6834..1b59771 100755 (executable)
@@ -1144,6 +1144,19 @@ Evas_Object *viewer_manager_create(Evas_Object *_parent, Evas_Object *_win_main)
        else
                __viewer_manager_create_wifi_ug_content(view_content, _win_main);
 
+       if(_is_emulator()) {
+               int state = wlan_manager_state_get();
+               if(state == WLAN_MANAGER_UNCONNECTED) {
+                       viewer_manager_header_mode_set(HEADER_MODE_ON);
+                       wifi_emulator_create_event_timer(WIFI_EMUL_EVENT_TIMER_ACTIVATE,
+                                       1000, wlan_manager_emulator_power_on, NULL);
+               } else {
+                       viewer_manager_header_mode_set(HEADER_MODE_OFF);
+                       wifi_emulator_create_event_timer(WIFI_EMUL_EVENT_TIMER_DEACTIVATE,
+                                       500, wlan_manager_emulator_power_off, NULL);
+               }
+       }
+
        evas_object_show(layout);
        elm_object_focus_set(layout, EINA_TRUE);