bluetooth: Vconf revert. 80/91080/12
authorRadoslaw Czerski <r.czerski@samsung.com>
Fri, 21 Oct 2016 13:22:10 +0000 (15:22 +0200)
committerRadoslaw Czerski <r.czerski@samsung.com>
Fri, 21 Oct 2016 13:22:48 +0000 (06:22 -0700)
vconf was reverted due to bt_device_set_connection_state_changed_cb
not registers callback for every device connected via BT.

Change-Id: I916647fc627075e9bfd0bafa4ec3466776b99fe7
Signed-off-by: Radoslaw Czerski <r.czerski@samsung.com>
src/modules/setting/bluetooth.c

index 85aa532..94d4fd1 100644 (file)
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <bluetooth.h>
+#include <vconf.h>
 #include "common.h"
 #include "indicator.h"
 #include "icon.h"
@@ -63,6 +64,11 @@ icon_s bluetooth = {
 #endif
 };
 
+#define NO_DEVICE                      (0x00)
+#define HEADSET_CONNECTED      (0x01)
+#define DEVICE_CONNECTED       (0x02)
+#define DATA_TRANSFER          (0x04)
+
 enum {
        LEVEL_MIN = 0,
        LEVEL_BT_NOT_CONNECTED = LEVEL_MIN,
@@ -91,9 +97,8 @@ static void show_image_icon(void *data, int index)
                index = LEVEL_MIN;
 
        if(prevIndex == index)
-       {
                return;
-       }
+
        bluetooth.img_obj.data = icon_path[index];
        icon_show(&bluetooth);
 
@@ -108,11 +113,6 @@ static void hide_image_icon(void)
        util_signal_emit(bluetooth.ad,"indicator.bluetooth.hide","indicator.prog");
 }
 
-#define NO_DEVICE                      (0x00)
-#define HEADSET_CONNECTED      (0x01)
-#define DEVICE_CONNECTED       (0x02)
-#define DATA_TRANSFER          (0x04)
-
 static void show_bluetooth_icon(void *data, int status)
 {
        if (status == NO_DEVICE) {
@@ -120,58 +120,25 @@ static void show_bluetooth_icon(void *data, int status)
                return;
        }
 
-       if (status & HEADSET_CONNECTED) {
+       if (status & HEADSET_CONNECTED)
                show_image_icon(data, LEVEL_BT_HEADSET);
-       }
-       else if (status & DEVICE_CONNECTED) {
-               show_image_icon(data, LEVEL_BT_CONNECTED);
-       }
-       return;
-}
 
-static void indicator_bluetooth_adapter_state_changed_cb(int result, bt_adapter_state_e adapter_state, void *user_data)
-{
-       _D("BT STATUS: %d", adapter_state);
-       if (adapter_state != BT_ADAPTER_ENABLED) {    // If adapter_state is NULL. hide_image_icon().
-               _D("BT is not enabled. So hide BT icon.");
-               hide_image_icon();
-       } else
-               show_bluetooth_icon(user_data, NO_DEVICE);
-}
-
-static bool _connected_cb(bt_profile_e profile, void *user_data)
-{
-       int *result = (int *)user_data;
-
-       if (profile == BT_PROFILE_HSP) {
-               *result = (*result | HEADSET_CONNECTED);
-               _D("BT_HEADSET_CONNECTED(%x)", result);
-       }
-       else {
-               *result = (*result | DEVICE_CONNECTED);
-               _D("BT_DEVICE_CONNECTED(%x)", result);
-       }
+       else if (status & DEVICE_CONNECTED)
+               show_image_icon(data, LEVEL_BT_CONNECTED);
 
-       return true;
+       return;
 }
 
-static bool _bt_cb(bt_device_info_s *device_info, void *user_data)
-{
-       // For every paired device check if it's connected with any profile
-       int ret = bt_device_foreach_connected_profiles(device_info->remote_address, _connected_cb, user_data);
-       retvm_if(ret != BT_ERROR_NONE, true, "bt_device_foreach_connected_profiles failed[%d]", ret);
 
-       return true;
-}
-
-static void indicator_bluetooth_change_cb(bool connected, bt_device_connection_info_s *conn_info, void *data)
+static void indicator_bluetooth_change_cb(keynode_t *node, void *data)
 {
        _D("indicator_bluetooth_change_cb");
+       int dev = 0;
        int ret = 0;
        int result = NO_DEVICE;
        bt_adapter_state_e adapter_state = BT_ADAPTER_DISABLED;
 
-       retm_if(data == NULL, "Invalid parameter!");
+       retm_if(!data, "Invalid parameter!");
 
        if (icon_get_update_flag() == 0) {
                updated_while_lcd_off = 1;
@@ -182,14 +149,34 @@ static void indicator_bluetooth_change_cb(bool connected, bt_device_connection_i
        ret = bt_adapter_get_state(&adapter_state);
        retm_if(ret != BT_ERROR_NONE, "bt_adapter_get_state failed");
        if (adapter_state != BT_ADAPTER_ENABLED) {  // If adapter_state is NULL. hide_image_icon().
-               _D("BT is not enabled. So don't need to update BT icon.");
+               _D("BT is not enabled.");
+               hide_image_icon();
                return;
        }
 
-       ret = bt_adapter_foreach_bonded_device(_bt_cb, (void *)&result);
-       retm_if(ret != BT_ERROR_NONE, "bt_adapter_foreach_bonded_device failed");
-       show_bluetooth_icon(data, result);
-
+       ret = vconf_get_int(VCONFKEY_BT_DEVICE, &dev);
+       if (ret == OK) {
+               DBG("Show BT ICON (BT DEVICE: %d)", dev);
+
+               if (dev == VCONFKEY_BT_DEVICE_NONE) {
+                       show_bluetooth_icon(data, NO_DEVICE);
+                       return;
+               }
+               if ((dev & VCONFKEY_BT_DEVICE_HEADSET_CONNECTED) ||
+                   (dev & VCONFKEY_BT_DEVICE_A2DP_HEADSET_CONNECTED)) {
+                       result = HEADSET_CONNECTED;
+                       DBG("BT_HEADSET_CONNECTED(%x)", result);
+               }
+               if ((dev & VCONFKEY_BT_DEVICE_SAP_CONNECTED)
+               || (dev & VCONFKEY_BT_DEVICE_PBAP_CONNECTED)
+               || (dev & VCONFKEY_BT_DEVICE_HID_CONNECTED)
+               || (dev & VCONFKEY_BT_DEVICE_PAN_CONNECTED)) {
+                       result = (result | DEVICE_CONNECTED);
+                       DBG("BT_DEVICE_CONNECTED(%x)", result);
+               }
+               show_bluetooth_icon(data, result);
+       } else
+               hide_image_icon();
        return;
 }
 
@@ -199,7 +186,7 @@ static int wake_up_cb(void *data)
                return OK;
        }
 
-       indicator_bluetooth_change_cb(false, NULL, data);
+       indicator_bluetooth_change_cb(NULL, data);
        return OK;
 }
 
@@ -228,43 +215,33 @@ static char *access_info_cb(void *data, Evas_Object *obj)
 }
 #endif
 
+
 static int register_bluetooth_module(void *data)
 {
-       int r = 0, ret = -1;
-       bt_adapter_state_e adapter_state = BT_ADAPTER_DISABLED;
+       int ret = -1;
 
-       retvm_if(data == NULL, FAIL, "Invalid parameter!");
+       retvm_if(!data, FAIL, "Invalid parameter!");
 
        set_app_state(data);
 
-       // Register bluetooth adapter state call-back.
-       ret = bt_initialize();
-       if(ret != BT_ERROR_NONE) _E("bt_initialize failed");
-       ret = bt_adapter_set_state_changed_cb(indicator_bluetooth_adapter_state_changed_cb, data);
-       if(ret != BT_ERROR_NONE) _E("bt_adapter_set_state_changed_cb failed");
-
-       ret = bt_device_set_connection_state_changed_cb(indicator_bluetooth_change_cb, data);
-       if (ret != BT_ERROR_NONE)
-               r = -1;
-
-       ret = bt_adapter_get_state(&adapter_state);
-       retvm_if(ret != BT_ERROR_NONE, -1, "bt_adapter_get_state failed");
+       ret = vconf_notify_key_changed(VCONFKEY_BT_DEVICE, indicator_bluetooth_change_cb, data);
+       if(ret != OK) {
+               _E("vconf_notify_key_changed failed");
+               return FAIL;
+       }
 
-       indicator_bluetooth_change_cb(false, NULL, data);
-       indicator_bluetooth_adapter_state_changed_cb(0, adapter_state, data);
+       indicator_bluetooth_change_cb(NULL, data);
 
-       return r;
+       return OK;
 }
 
 static int unregister_bluetooth_module(void)
 {
+       _E("unregister_bluetooth_module");
        int ret = 0;
 
-       // Unregister bluetooth adapter state call-back.
-       ret = bt_adapter_unset_state_changed_cb();
-       if(ret != BT_ERROR_NONE) _E("bt_adapter_unset_state_changed_cb failed");
-       ret = bt_deinitialize();
-       if(ret != BT_ERROR_NONE) _E("bt_deinitialize failed");
+       ret = vconf_ignore_key_changed(VCONFKEY_BT_DEVICE, indicator_bluetooth_change_cb);
+       if(ret != OK) _E("vconf_ignore_key_changed failed");
 
        return ret;
 }