Wifi api is deprecated since Tizen 3.0.
Change-Id: I302042e5fdcf8571a9e5c512263066c086875962
Signed-off-by: Radoslaw Czerski <r.czerski@samsung.com>
capi-media-sound-manager
capi-media-metadata-extractor
capi-network-wifi
+ capi-network-wifi-manager
capi-ui-efl-util
appcore-common
dlog
#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>
* @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
* @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.
* @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
* @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.
* @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);
/**
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)
#include <stdio.h>
#include <stdlib.h>
#include <vconf.h>
-#include <wifi.h>
+#include <wifi-manager.h>
#include "common.h"
#include "indicator.h"
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)
{
return;
}
+ _D("WiFi icon show");
wifi.img_obj.data = icon_path[index];
icon_show(&wifi);
static void hide_image_icon(void)
{
+ if (prevIndex == -1) {
+ return;
+ }
transfer_state = -1;
+ _D("WiFi icon hide");
icon_hide(&wifi);
prevIndex = -1;
}
}
-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;
}
}
-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);
}
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;
}
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;
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;
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;
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;
} 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"},
{
_D("util_wifi_initialize");
- wifi_init_cnt++;
+ ++wifi_init_cnt;
int ret = wifi_initialize();
if (ret == WIFI_ERROR_INVALID_OPERATION) {
{
_D("util_wifi_deinitialize");
- wifi_init_cnt--;
+ --wifi_init_cnt;
if (wifi_init_cnt == 0) {
int ret = wifi_deinitialize();
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;
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)
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)