Replace wifi api with wifi-manager api. 99/101199/5
authorRadoslaw Czerski <r.czerski@samsung.com>
Wed, 7 Dec 2016 14:41:17 +0000 (15:41 +0100)
committerRadoslaw Czerski <r.czerski@samsung.com>
Wed, 7 Dec 2016 14:41:17 +0000 (15:41 +0100)
Wifi api is deprecated since Tizen 3.0.

Change-Id: I302042e5fdcf8571a9e5c512263066c086875962
Signed-off-by: Radoslaw Czerski <r.czerski@samsung.com>
CMake/CMakeLists.txt
inc/util.h
packaging/org.tizen.indicator.spec
src/modules/connection/wifi.c
src/util.c

index 6cf5bd07dfa5b4561090f14527d1d2fc9c406d7d..473fdb08065371b258e5c367eff1ca29459c41b0 100644 (file)
@@ -26,6 +26,7 @@ pkg_check_modules(pkgs REQUIRED
        capi-media-sound-manager
        capi-media-metadata-extractor
        capi-network-wifi
+       capi-network-wifi-manager
        capi-ui-efl-util
        appcore-common
        dlog
index 5b5d39bf26433fce7d60c5c9827db49beaaef8df..f961280753c2fcf8892dbe2f628d474dbb53a3db 100644 (file)
@@ -18,6 +18,7 @@
 #define __INDICATOR_UTIL_H__
 #include <Ecore.h>
 #include <wifi.h>
+#include <wifi-manager.h>
 #include <system_settings.h>
 #include <runtime_info.h>
 #include <network/wifi.h>
@@ -250,13 +251,14 @@ const char *util_get_file_path(enum app_subdir dir, const char *relative);
  * @return 0 on success, other value on failure
  */
 int util_wifi_initialize(void);
-
+int util_wifi_manager_initialize(wifi_manager_h *handle);
 /**
  * @brief Deinitializes WiFi using wifi_deinitialize API
  * @remarks Only last call of that function is effective to avoid unwanted deinitialization.
  * @return 0 on success, other value on failure
  */
 int util_wifi_deinitialize(void);
+int util_wifi_manager_deinitialize(wifi_manager_h handle);
 
 /**
  * @brief Allows to set multiple callbacks using wifi_set_connection_state_changed_cb API
@@ -266,6 +268,7 @@ int util_wifi_deinitialize(void);
  * @return 0 on success, other value on failure
  */
 int util_wifi_set_connection_state_changed_cb(wifi_connection_state_changed_cb cb, void *data);
+int util_wifi_manager_set_connection_state_changed_cb(wifi_manager_h wifi, wifi_manager_connection_state_changed_cb cb, void *data);
 
 /**
  * @brief Unregisters callback set with util_wifi_set_connection_state_changed_cb.
@@ -273,6 +276,7 @@ int util_wifi_set_connection_state_changed_cb(wifi_connection_state_changed_cb c
  * @param cb callback
  */
 void util_wifi_unset_connection_state_changed_cb(wifi_connection_state_changed_cb cb);
+void util_wifi_manager_unset_connection_state_changed_cb(wifi_manager_h wifi, wifi_manager_connection_state_changed_cb cb);
 
 /**
  * @brief Allows to set multiple callbacks using wifi_set_device_state_changed_cb API
@@ -282,6 +286,8 @@ void util_wifi_unset_connection_state_changed_cb(wifi_connection_state_changed_c
  * @return 0 on success, other value on failure
  */
 int util_wifi_set_device_state_changed_cb(wifi_device_state_changed_cb cb, void *data);
+int util_wifi_manager_set_device_state_changed_cb(wifi_manager_h wifi, wifi_manager_device_state_changed_cb cb, void *data);
+
 
 /**
  * @brief Unregisters callback set with util_wifi_set_device_state_changed_cb.
@@ -289,6 +295,7 @@ int util_wifi_set_device_state_changed_cb(wifi_device_state_changed_cb cb, void
  * @param cb callback
  */
 void util_wifi_unset_device_state_changed_cb(wifi_device_state_changed_cb cb);
+void util_wifi_manager_unset_device_state_changed_cb(wifi_manager_h wifi, wifi_manager_device_state_changed_cb cb);
 
 
 /**
index a556bde4e552586fa100abdca1934d87a6517373..cf19a4748ec84d6d7a590f51dc29d2beef90d6e1 100644 (file)
@@ -16,6 +16,7 @@ BuildRequires: pkgconfig(capi-media-player)
 BuildRequires: pkgconfig(capi-media-sound-manager)
 BuildRequires: pkgconfig(capi-media-metadata-extractor)
 BuildRequires: pkgconfig(capi-network-wifi)
+BuildRequires: pkgconfig(capi-network-wifi-manager)
 BuildRequires: pkgconfig(capi-ui-efl-util)
 BuildRequires: pkgconfig(appcore-common)
 BuildRequires: pkgconfig(dlog)
index 3babc65bb37e9b98f1a0d9ffb7dded8d9c88ff4b..9be221b9c57cdd44c35180c2c354b74cbce0a153 100644 (file)
@@ -18,7 +18,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <vconf.h>
-#include <wifi.h>
+#include <wifi-manager.h>
 
 #include "common.h"
 #include "indicator.h"
@@ -67,7 +67,8 @@ static const char *icon_path[LEVEL_WIFI_MAX] = {
 static int transfer_state = -1;
 static int updated_while_lcd_off = 0;
 static int prevIndex = -1;
-static wifi_rssi_level_e rssi_level;
+static wifi_manager_rssi_level_e rssi_level;
+static wifi_manager_h wifi_manager;
 
 static void set_app_state(void *data)
 {
@@ -80,6 +81,7 @@ static void show_image_icon(void *data, int index)
                return;
        }
 
+       _D("WiFi icon show");
        wifi.img_obj.data = icon_path[index];
        icon_show(&wifi);
 
@@ -89,8 +91,12 @@ static void show_image_icon(void *data, int index)
 
 static void hide_image_icon(void)
 {
+       if (prevIndex == -1) {
+               return;
+       }
        transfer_state = -1;
 
+       _D("WiFi icon hide");
        icon_hide(&wifi);
 
        prevIndex = -1;
@@ -149,13 +155,13 @@ static void show_wifi_transfer_icon(void *data)
        }
 }
 
-static int _rssi_level_to_strength(wifi_rssi_level_e level)
+static int _rssi_level_to_strength(wifi_manager_rssi_level_e level)
 {
        switch (level) {
                case WIFI_RSSI_LEVEL_0:
+               case WIFI_RSSI_LEVEL_1:
                        return LEVEL_WIFI_01;
                case WIFI_RSSI_LEVEL_2:
-               case WIFI_RSSI_LEVEL_1:
                        return LEVEL_WIFI_02;
                case WIFI_RSSI_LEVEL_3:
                        return LEVEL_WIFI_03;
@@ -166,10 +172,10 @@ static int _rssi_level_to_strength(wifi_rssi_level_e level)
        }
 }
 
-static void _wifi_view_update(void *data)
+void _wifi_view_update(void *data)
 {
        bool activated;
-       wifi_connection_state_e state;
+       wifi_manager_connection_state_e state;
        int ret;
 
        ret_if(!data);
@@ -180,18 +186,19 @@ static void _wifi_view_update(void *data)
        }
        updated_while_lcd_off = 0;
 
-       ret = wifi_is_activated(&activated);
-       retm_if(ret != WIFI_ERROR_NONE, "wifi_is_activated failed: %s", get_error_message(ret));
-       _D("wifi_state : %d", activated);
+       ret = wifi_manager_is_activated(wifi_manager, &activated);
+       retm_if(ret != WIFI_MANAGER_ERROR_NONE, "wifi_manager_is_activated failed: %s",
+                       get_error_message(ret));
 
        if (!activated) {
                hide_image_icon();
                return;
        }
 
-       ret = wifi_get_connection_state(&state);
-       retm_if(ret != WIFI_ERROR_NONE, "wifi_get_connection_state failed: %s", get_error_message(ret));
-       if (state != WIFI_CONNECTION_STATE_CONNECTED) {
+       ret = wifi_manager_get_connection_state(wifi_manager, &state);
+       retm_if(ret != WIFI_MANAGER_ERROR_NONE, "wifi_manager_get_connection_state failed: %s",
+                       get_error_message(ret));
+       if (state != WIFI_MANAGER_CONNECTION_STATE_CONNECTED) {
                hide_image_icon();
                return;
        }
@@ -202,20 +209,21 @@ static void _wifi_view_update(void *data)
        return;
 }
 
-static void _wifi_rssi_level_changed(wifi_rssi_level_e level, void *data)
+static void _wifi_manager_rssi_level_changed(wifi_manager_rssi_level_e level, void *data)
 {
        rssi_level = level;
        _wifi_view_update(data);
        return;
 }
 
-static void _wifi_connection_state_changed(wifi_connection_state_e state, wifi_ap_h ap, void *data)
+static void _wifi_manager_connection_state_changed(wifi_manager_connection_state_e state,
+               wifi_manager_ap_h ap, void *data)
 {
        _wifi_view_update(data);
        return;
 }
 
-static void _wifi_device_state_changed(wifi_device_state_e state, void *data)
+static void _wifi_manager_device_state_changed(wifi_manager_device_state_e state, void *data)
 {
        _wifi_view_update(data);
        return;
@@ -242,32 +250,32 @@ static int register_wifi_module(void *data)
 
        set_app_state(data);
 
-       int ret = util_wifi_initialize();
-       retvm_if(ret != WIFI_ERROR_NONE, FAIL, "util_wifi_initialize failed : %s", get_error_message(ret));
+       int ret = util_wifi_manager_initialize(&wifi_manager);
+       retvm_if(ret != WIFI_MANAGER_ERROR_NONE, FAIL, "util_wifi_manager_initialize failed : %s", get_error_message(ret));
 
-       ret = util_wifi_set_device_state_changed_cb(_wifi_device_state_changed, data);
-       if (ret != WIFI_ERROR_NONE) {
-               _E("util_wifi_set_device_state_changed_cb failed: %s", get_error_message(ret));
+       ret = util_wifi_manager_set_device_state_changed_cb(wifi_manager, _wifi_manager_device_state_changed, data);
+       if (ret != WIFI_MANAGER_ERROR_NONE) {
+               _E("util_wifi_manager_set_device_state_changed_cb failed: %s", get_error_message(ret));
                unregister_wifi_module();
                return FAIL;
        }
 
-       ret = util_wifi_set_connection_state_changed_cb(_wifi_connection_state_changed, data);
+       ret = util_wifi_manager_set_connection_state_changed_cb(wifi_manager, _wifi_manager_connection_state_changed, data);
        if (ret != 0) {
-               _E("util_wifi_set_connection_state_changed_cb failed");
+               _E("util_wifi_manager_set_connection_state_changed_cb failed: %s", get_error_message(ret));
                unregister_wifi_module();
                return FAIL;
        }
 
-       ret = wifi_set_rssi_level_changed_cb(_wifi_rssi_level_changed, data);
-       if (ret != WIFI_ERROR_NONE) {
-               _E("wifi_set_rssi_level_changed_cb failed: %s", get_error_message(ret));
+       ret = wifi_manager_set_rssi_level_changed_cb(wifi_manager, _wifi_manager_rssi_level_changed, data);
+       if (ret != WIFI_MANAGER_ERROR_NONE) {
+               _E("wifi_manager_set_rssi_level_changed_cb failed: %s", get_error_message(ret));
                unregister_wifi_module();
                return FAIL;
        }
 
        ret = vconf_notify_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, _wifi_changed_cb, data);
-       if (ret != WIFI_ERROR_NONE) {
+       if (ret != WIFI_MANAGER_ERROR_NONE) {
                _E("vconf_notify_key_changed failed: %s", get_error_message(ret));
                unregister_wifi_module();
                return FAIL;
@@ -280,14 +288,14 @@ static int register_wifi_module(void *data)
 
 static int unregister_wifi_module(void)
 {
-       util_wifi_unset_device_state_changed_cb(_wifi_device_state_changed);
-       util_wifi_unset_connection_state_changed_cb(_wifi_connection_state_changed);
-       wifi_unset_rssi_level_changed_cb();
+       util_wifi_manager_unset_device_state_changed_cb(wifi_manager, _wifi_manager_device_state_changed);
+       util_wifi_manager_unset_connection_state_changed_cb(wifi_manager, _wifi_manager_connection_state_changed);
+       wifi_manager_unset_rssi_level_changed_cb(wifi_manager);
        vconf_ignore_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, _wifi_changed_cb);
 
-       int ret = util_wifi_deinitialize();
-       if (ret != WIFI_ERROR_NONE) {
-               _E("util_wifi_deinitialize failed : %s", get_error_message(ret));
+       int ret = util_wifi_manager_deinitialize(wifi_manager);
+       if (ret != WIFI_MANAGER_ERROR_NONE) {
+               _E("util_wifi_manager_deinitialize failed : %s", get_error_message(ret));
        }
 
        return OK;
index e5efdf6336433031ee1ed2e1296b83939922f6f9..6a304331a95962ec6369d70e230438de73bc39c4 100644 (file)
@@ -50,11 +50,23 @@ typedef struct {
        void *data;
 } wifi_handler_t;
 
+typedef struct {
+       wifi_manager_connection_state_changed_cb cb;
+       void *data;
+} wifi_manager_handler_t;
+
+
 typedef struct {
        wifi_device_state_changed_cb cb;
        void *data;
 } wifi_device_handler_t;
 
+typedef struct {
+       wifi_manager_device_state_changed_cb cb;
+       void *data;
+} wifi_manager_device_handler_t;
+
+
 typedef struct {
        system_settings_key_e key;
        system_settings_changed_cb cb;
@@ -73,10 +85,13 @@ typedef struct {
 } reserved_t;
 
 static Eina_List *wifi_callbacks;
+static Eina_List *wifi_manager_callbacks;
 static Eina_List *wifi_device_callbacks;
+static Eina_List *wifi_manager_device_callbacks;
 static Eina_List *ss_callbacks;
 static Eina_List *ri_callbacks;
-static int wifi_init_cnt = 0;
+static int wifi_init_cnt;
+static int wifi_manager_init_cnt;
 
 const reserved_t reserved_paths[] = {
        {MSG_NORMAL_STATUS_ICON, "Notify/b03_notify_message.png"},
@@ -456,7 +471,7 @@ int util_wifi_initialize(void)
 {
        _D("util_wifi_initialize");
 
-       wifi_init_cnt++;
+       ++wifi_init_cnt;
 
        int ret = wifi_initialize();
        if (ret == WIFI_ERROR_INVALID_OPERATION) {
@@ -472,7 +487,7 @@ int util_wifi_deinitialize(void)
 {
        _D("util_wifi_deinitialize");
 
-       wifi_init_cnt--;
+       --wifi_init_cnt;
 
        if (wifi_init_cnt == 0) {
                int ret = wifi_deinitialize();
@@ -481,6 +496,39 @@ int util_wifi_deinitialize(void)
        return OK;
 }
 
+int util_wifi_manager_initialize(wifi_manager_h *handle)
+{
+       _D("util_wifi_manager_initialize");
+
+       static wifi_manager_h wifi = NULL;
+       ++wifi_manager_init_cnt;
+
+       int ret = wifi_manager_initialize(&wifi);
+       if (ret == WIFI_MANAGER_ERROR_ALREADY_INITIALIZED) {
+               _W("WiFi manager already initialized");
+               *handle = wifi;
+               return OK;
+       }
+       retv_if(ret != WIFI_MANAGER_ERROR_NONE, ret);
+
+       *handle = wifi;
+
+       return OK;
+}
+
+int util_wifi_manager_deinitialize(wifi_manager_h handle)
+{
+       _D("util_wifi_deinitialize");
+
+       --wifi_manager_init_cnt;
+
+       if (wifi_manager_init_cnt == 0) {
+               int ret = wifi_manager_deinitialize(handle);
+               retv_if(ret != WIFI_ERROR_NONE, ret);
+       }
+       return OK;
+}
+
 static void _wifi_state_cb(wifi_connection_state_e state, wifi_ap_h ap, void *user_data)
 {
        Eina_List *l;
@@ -528,6 +576,55 @@ void util_wifi_unset_connection_state_changed_cb(wifi_connection_state_changed_c
                wifi_unset_connection_state_changed_cb();
 }
 
+
+
+static void _wifi_manager_state_cb(wifi_manager_connection_state_e state, wifi_manager_ap_h ap, void *user_data)
+{
+       Eina_List *l;
+       wifi_manager_handler_t *hdl;
+
+       EINA_LIST_FOREACH(wifi_manager_callbacks, l, hdl) {
+               if (hdl->cb)
+                       hdl->cb(state, ap, hdl->data);
+       }
+}
+
+int util_wifi_manager_set_connection_state_changed_cb(wifi_manager_h wifi, wifi_manager_connection_state_changed_cb cb, void *data)
+{
+       wifi_manager_handler_t *hdl = malloc(sizeof(wifi_manager_handler_t));
+       if (!hdl)
+               return -1;
+
+       if (!wifi_manager_callbacks) {
+               int err = wifi_manager_set_connection_state_changed_cb(wifi, _wifi_manager_state_cb, NULL);
+               if (err != WIFI_ERROR_NONE) {
+                       free(hdl);
+                       return -1;
+               }
+       }
+
+       hdl->cb = cb;
+       hdl->data = data;
+       wifi_manager_callbacks = eina_list_append(wifi_manager_callbacks, hdl);
+
+       return 0;
+}
+
+void util_wifi_manager_unset_connection_state_changed_cb(wifi_manager_h wifi, wifi_manager_connection_state_changed_cb cb)
+{
+       Eina_List *l, *l2;
+       wifi_manager_handler_t *hdl;
+
+       EINA_LIST_FOREACH_SAFE(wifi_manager_callbacks, l, l2, hdl) {
+               if (hdl->cb == cb) {
+                       wifi_manager_callbacks = eina_list_remove_list(wifi_manager_callbacks, l);
+                       free(hdl);
+                       break;
+               }
+       }
+       if (!wifi_manager_callbacks)
+               wifi_manager_unset_connection_state_changed_cb(wifi);
+}
 /** WIFI DEVICE STATE CB **/
 
 static void _wifi_device_state_cb(wifi_device_state_e state, void *user_data)
@@ -581,6 +678,58 @@ void util_wifi_unset_device_state_changed_cb(wifi_device_state_changed_cb cb)
                wifi_unset_device_state_changed_cb();
 }
 
+
+
+static void _wifi_manager_device_state_cb(wifi_manager_device_state_e state, void *user_data)
+{
+       Eina_List *l;
+       wifi_manager_device_handler_t *hdl;
+
+       EINA_LIST_FOREACH(wifi_manager_device_callbacks, l, hdl) {
+               if (hdl->cb)
+                       hdl->cb(state, hdl->data);
+       }
+}
+
+int util_wifi_manager_set_device_state_changed_cb(wifi_manager_h wifi, wifi_manager_device_state_changed_cb cb, void *data)
+{
+       wifi_manager_device_handler_t *hdl = malloc(sizeof(wifi_manager_device_handler_t));
+       if (!hdl) {
+               _D("malloc failed");
+               return WIFI_MANAGER_ERROR_OUT_OF_MEMORY;
+       }
+
+       if (!wifi_manager_device_callbacks) {
+               int err = wifi_manager_set_device_state_changed_cb(wifi, _wifi_manager_device_state_cb, NULL);
+               if (err != WIFI_MANAGER_ERROR_NONE) {
+                       _D("wifi_manager_set_device_state_changed_cb failed[%d]:%s", err, get_error_message(err));
+                       free(hdl);
+                       return err;
+               }
+       }
+       hdl->cb = cb;
+       hdl->data = data;
+       wifi_manager_device_callbacks = eina_list_append(wifi_manager_device_callbacks, hdl);
+
+       return 0;
+}
+
+void util_wifi_manager_unset_device_state_changed_cb(wifi_manager_h wifi, wifi_manager_device_state_changed_cb cb)
+{
+       Eina_List *l, *l2;
+       wifi_manager_device_handler_t *hdl;
+
+       EINA_LIST_FOREACH_SAFE(wifi_manager_device_callbacks, l, l2, hdl) {
+               if (hdl->cb == cb) {
+                       wifi_manager_device_callbacks = eina_list_remove_list(wifi_manager_device_callbacks, l);
+                       free(hdl);
+                       break;
+               }
+       }
+       if (!wifi_manager_device_callbacks)
+               wifi_manager_unset_device_state_changed_cb(wifi);
+}
+
 /** SYSTEM SETTINGS CB **/
 
 static void _system_settings_cb(system_settings_key_e key, void *data)