wifi: load initial rssi strength from vconf 28/134628/1 accepted/tizen/4.0/unified/20170816.015516 accepted/tizen/unified/20170703.063904 submit/tizen/20170619.144130 submit/tizen/20170626.073051 submit/tizen/20170703.054946 submit/tizen_4.0/20170811.094300 submit/tizen_4.0/20170814.115522 submit/tizen_4.0_unified/20170814.115522
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Mon, 19 Jun 2017 13:36:33 +0000 (15:36 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Mon, 19 Jun 2017 13:36:33 +0000 (15:36 +0200)
indicator uses wifi_manager rssi changed callback
to obtain new value of rssi. However initial value
could not have been set if wifi was initialized before
indicator started. This lead to indicator showing
improper rssi level (0).

To solve it indicator will load intial value from
vconf VCONFKEY_WIFI_STRENGTH key.

Change-Id: I4f1a31220af71d55a8649de6186a3b65cd4b27dd

src/modules/connection/wifi.c

index 4eaac4d..7cbacba 100644 (file)
@@ -236,6 +236,25 @@ static void _wifi_changed_cb(keynode_t *node, void *user_data)
        _wifi_view_update(user_data);
 }
 
+static void _load_rssi_level()
+{
+       int level;
+       int err = vconf_get_int(VCONFKEY_WIFI_STRENGTH, &level);
+       if (err != 0)
+       {
+               _E("vconf_get_int failed: %s", get_error_message(err));
+               return;
+       }
+
+       if ((level >= WIFI_MANAGER_RSSI_LEVEL_0) &&
+               (level <= WIFI_MANAGER_RSSI_LEVEL_4))
+               rssi_level = level;
+       else
+               _E("VCONFKEY_WIFI_STRENGTH value not compatible with wifi_manager_rssi_level_e");
+
+       _D("Rssi level: %d", rssi_level);
+}
+
 static int register_wifi_module(void *data)
 {
        retv_if(!data, 0);
@@ -289,6 +308,9 @@ static int register_wifi_module(void *data)
                return FAIL;
        }
 
+       if (connection_state == WIFI_MANAGER_CONNECTION_STATE_CONNECTED)
+               _load_rssi_level();
+
        _wifi_view_update(data);
 
        return OK;