[Adapt: BluezHAL]Add APIs to get device conn state 32/87732/1
authorAtul Rai <a.rai@samsung.com>
Mon, 1 Aug 2016 09:09:11 +0000 (14:39 +0530)
committerAtul Rai <a.rai@samsung.com>
Wed, 31 Aug 2016 04:23:31 +0000 (09:53 +0530)
This patch adds following two APIs in Bluez HAL to get ACL connection
status and Profile connection status respectivelly.
1/ get_connection_state()
2/ get_service_connection_state()

Change-Id: I8be56cddd49fefb3797e3167b64a67e47abcbbc3
Signed-off-by: Atul Rai <a.rai@samsung.com>
bt-oal/bluez_hal/hardware/bluetooth.h
bt-oal/bluez_hal/inc/bt-hal-utils.h
bt-oal/bluez_hal/src/bt-hal-bluetooth.c
bt-oal/bluez_hal/src/bt-hal-device-dbus-handler.c
bt-oal/bluez_hal/src/bt-hal-device-dbus-handler.h
bt-oal/bluez_hal/src/bt-hal-utils.c
packaging/bluetooth-frwk.spec

index 02d0388..01c10a3 100755 (executable)
@@ -668,6 +668,14 @@ typedef struct {
 
      /** Set auto authorization for peer device. Should be a paired device */
      int (*set_authorization)(bt_bdaddr_t *bd_addr, uint8_t auth);
+#ifdef TIZEN_BT_HAL
+    /**
+     * get the service connection status for a given remote device.
+     * return value of 0 means the device is not connected,
+     * non-zero return status indicates an active connection.
+     */
+    int (*get_service_connection_state)(const bt_bdaddr_t *bd_addr, bt_service_id_t rem_svc_id);
+#endif
 } bt_interface_t;
 
 /** TODO: Need to add APIs for Service Discovery, Service authorization and
index cb7fa02..ca14b63 100644 (file)
@@ -71,4 +71,5 @@ const char *enum_defines(void *v, int i);
 const char *enum_strings(void *v, int i);
 const char *enum_one_string(void *v, int i);
 bt_service_id_t _bt_convert_uuid_string_to_service_id(const char *uuid);
+char *_bt_convert_service_id_to_uuid_string(bt_service_id_t service_id);
 #endif //_BT_HAL_UTILS_H_
index 22b8498..f4ef1e4 100644 (file)
@@ -270,7 +270,8 @@ static int config_hci_snoop_log(uint8_t enable)
 
 static int get_connection_state(const bt_bdaddr_t *bd_addr)
 {
-       return BT_STATUS_UNSUPPORTED;
+       DBG("");
+       return _bt_hal_device_get_connection_state(bd_addr);
 }
 
 static int set_os_callouts(bt_os_callouts_t *callouts)
@@ -300,6 +301,14 @@ int set_authorization(bt_bdaddr_t *bd_addr, uint8_t auth)
        return _bt_hal_device_set_trust(bd_addr, auth);
 }
 
+#ifdef TIZEN_BT_HAL
+static int get_service_connection_state(const bt_bdaddr_t *bd_addr, bt_service_id_t rem_svc_id)
+{
+       DBG("");
+       return _bt_hal_device_get_service_connection_state(bd_addr, rem_svc_id);
+}
+#endif
+
 static const bt_interface_t bluetooth_if = {
        .size = sizeof(bt_interface_t),
        .init = init,
@@ -332,6 +341,9 @@ static const bt_interface_t bluetooth_if = {
        /* Tizen Specific API's*/
        .authorize_response = authorize_response,
        .set_authorization = set_authorization,
+#ifdef TIZEN_BT_HAL
+       .get_service_connection_state = get_service_connection_state,
+#endif
 };
 
 static const bt_interface_t *get_bluetooth_interface(void)
index 0af9880..b2f4337 100644 (file)
@@ -38,6 +38,7 @@
 #include "bt-hal.h"
 #include "bt-hal-log.h"
 #include "bt-hal-msg.h"
+#include "bt-hal-utils.h"
 #include "bt-hal-internal.h"
 #include "bt-hal-event-receiver.h"
 #include "bt-hal-dbus-common-utils.h"
@@ -1145,3 +1146,166 @@ int _bt_hal_dbus_set_remote_device_property(
        DBG("-");
        return result;
 }
+
+int _bt_hal_device_get_connection_state(const bt_bdaddr_t *bd_addr)
+{
+       char address[BT_HAL_ADDRESS_STRING_SIZE];
+       gchar *device_path = NULL;
+       GDBusProxy *adapter_proxy;
+       GDBusProxy *device_proxy;
+       GError *error = NULL;
+       GDBusConnection *conn;
+       GVariant *result;
+       GVariant *tmp_value = NULL;
+       GVariant *value = NULL;
+       gboolean is_connected = FALSE;
+
+       if (!bd_addr) {
+               ERR("bd_addr is NULL");
+               return 0;
+       }
+
+       adapter_proxy = _bt_get_adapter_proxy();
+       if (!adapter_proxy) {
+               ERR("Could not get Adapter Proxy");
+               return 0;
+       }
+
+       conn = _bt_get_system_gconn();
+       if (!conn) {
+               ERR("_bt_get_system_gconn failed");
+               return 0;
+       }
+
+       _bt_convert_addr_type_to_string(address, bd_addr->address);
+       INFO("Address: %s", address);
+
+       device_path = _bt_get_device_object_path(address);
+       if (device_path == NULL) {
+               ERR("No paired device");
+               return 0;
+       }
+
+       device_proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
+                       NULL, BT_HAL_BLUEZ_NAME, device_path,
+                       BT_HAL_PROPERTIES_INTERFACE, NULL, NULL);
+       g_free(device_path);
+       if (!device_proxy) {
+               ERR("Error creating device_proxy");
+               return 0;
+       }
+
+       result = g_dbus_proxy_call_sync(device_proxy, "GetProperties",
+                       g_variant_new("(s)", address),
+                       G_DBUS_CALL_FLAGS_NONE,
+                       -1,
+                       NULL,
+                       &error);
+       g_object_unref(device_proxy);
+       if (!result) {
+               ERR("Error occured in Proxy call");
+               if (error != NULL) {
+                       ERR("Error occured in Proxy call (Error: %s)", error->message);
+                       g_clear_error(&error);
+               }
+               return 0;
+       }
+
+       g_variant_get(result , "(@a{sv})", &value);
+       g_variant_unref(result);
+
+       if (value) {
+               tmp_value = g_variant_lookup_value(value,
+                               "Connected",
+                               G_VARIANT_TYPE_BOOLEAN);
+               if (tmp_value) {
+                       is_connected = g_variant_get_boolean(tmp_value);
+                       g_variant_unref(tmp_value);
+               }
+               g_variant_unref(value);
+       }
+
+       if (!is_connected)
+               return 0;
+
+       return 1;
+}
+
+#ifdef TIZEN_BT_HAL
+int _bt_hal_device_get_service_connection_state(
+               const bt_bdaddr_t *bd_addr, bt_service_id_t rem_svc_id)
+{
+       char address[BT_HAL_ADDRESS_STRING_SIZE];
+       gchar *device_path = NULL;
+       GDBusProxy *adapter_proxy;
+       GDBusProxy *device_proxy;
+       GError *error = NULL;
+       GDBusConnection *conn;
+       GVariant *result;
+       gboolean is_connected;
+       char *uuid = NULL;
+
+       if (!bd_addr) {
+               ERR("bd_addr is NULL");
+               return 0;
+       }
+
+       adapter_proxy = _bt_get_adapter_proxy();
+       if (!adapter_proxy) {
+               ERR("Could not get Adapter Proxy");
+               return 0;
+       }
+
+       conn = _bt_get_system_gconn();
+       if (!conn) {
+               ERR("_bt_get_system_gconn failed");
+               return 0;
+       }
+
+       _bt_convert_addr_type_to_string(address, bd_addr->address);
+       INFO("Address: %s: Remote svc_id: %d", address, rem_svc_id);
+
+       device_path = _bt_get_device_object_path(address);
+       if (device_path == NULL) {
+               ERR("No paired device");
+               return 0;
+       }
+
+       device_proxy = g_dbus_proxy_new_sync(conn, G_DBUS_PROXY_FLAGS_NONE,
+                       NULL, BT_HAL_BLUEZ_NAME, device_path,
+                       BT_HAL_DEVICE_INTERFACE, NULL, NULL);
+       g_free(device_path);
+       if (!device_proxy) {
+               ERR("Error creating device_proxy");
+               return 0;
+       }
+
+       uuid = _bt_convert_service_id_to_uuid_string(rem_svc_id);
+       DBG("uuid: %s", uuid);
+
+       result = g_dbus_proxy_call_sync(device_proxy, "IsConnectedProfile",
+                       g_variant_new("(s)", uuid),
+                       G_DBUS_CALL_FLAGS_NONE,
+                       -1,
+                       NULL,
+                       &error);
+       g_free(uuid);
+       g_object_unref(device_proxy);
+       if (!result) {
+               ERR("Error occured in Proxy call");
+               if (error != NULL) {
+                       ERR("Error occured in Proxy call (Error: %s)", error->message);
+                       g_clear_error(&error);
+               }
+               return 0;
+       }
+
+       g_variant_get(result, "(b)", &is_connected);
+       g_variant_unref(result);
+
+       if (!is_connected)
+               return 0;
+
+       return 1;
+}
+#endif
index 1d83adc..35e7b92 100644 (file)
@@ -60,6 +60,13 @@ int _bt_hal_device_authorize_response(const bt_bdaddr_t *bd_addr, bt_service_id_
 
 int _bt_hal_device_set_trust(const bt_bdaddr_t *bd_addr, uint8_t trust);
 
+int _bt_hal_device_get_connection_state(const bt_bdaddr_t *bd_addr);
+
+#ifdef TIZEN_BT_HAL
+int _bt_hal_device_get_service_connection_state(
+               const bt_bdaddr_t *bd_addr, bt_service_id_t rem_svc_id);
+#endif
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
index d96efab..6be93c5 100644 (file)
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 
 #include <dlog.h>
+#include <glib.h>
 
 #include "bt-hal-msg.h"
 #include "bt-hal.h"
@@ -207,101 +208,101 @@ const char* bt_property_type_t2str(bt_property_type_t prop_type)
 {
        switch (prop_type) {
 
-               case BT_PROPERTY_BDNAME:
-                       return "[Bluetooth Name]";
-               case BT_PROPERTY_BDADDR:
-                       return "[Bluetooth Address]";
-               case BT_PROPERTY_UUIDS:
-                       return "[UUIDS]";
-               case BT_PROPERTY_CLASS_OF_DEVICE:
-                       return "[Class of Device]";
-               case BT_PROPERTY_TYPE_OF_DEVICE:
-                       return "[Bluetooth Type of Device]";
-               case BT_PROPERTY_SERVICE_RECORD:
-                       return "[Bluetooth Service record]";
-               case BT_PROPERTY_ADAPTER_SCAN_MODE:
-                       return "[Bluetooth Adapter Scan Mode]";
-               case BT_PROPERTY_ADAPTER_BONDED_DEVICES:
-                       return "[Bluetooth Bonded Devices]";
-               case BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT:
-                       return "[Bluetooth Adapter Discovery Timeout]";
-               case BT_PROPERTY_REMOTE_FRIENDLY_NAME:
-                       return "[Bluetooth Friendly Name]";
-               case BT_PROPERTY_REMOTE_RSSI:
-                       return "[Bluetooth Rmote RSSI]";
-               case BT_PROPERTY_REMOTE_VERSION_INFO:
-                       return "[Bluetooth Version Info]";
-               case BT_PROPERTY_LOCAL_LE_FEATURES:
-                       return "[Bluetooth LE Features]";
-               case BT_PROPERTY_REMOTE_DEVICE_TIMESTAMP:
-                       return "[Bluetooth Remote Device Timestamp]";
-               default:
-                       return "[Default Property]";
+       case BT_PROPERTY_BDNAME:
+               return "[Bluetooth Name]";
+       case BT_PROPERTY_BDADDR:
+               return "[Bluetooth Address]";
+       case BT_PROPERTY_UUIDS:
+               return "[UUIDS]";
+       case BT_PROPERTY_CLASS_OF_DEVICE:
+               return "[Class of Device]";
+       case BT_PROPERTY_TYPE_OF_DEVICE:
+               return "[Bluetooth Type of Device]";
+       case BT_PROPERTY_SERVICE_RECORD:
+               return "[Bluetooth Service record]";
+       case BT_PROPERTY_ADAPTER_SCAN_MODE:
+               return "[Bluetooth Adapter Scan Mode]";
+       case BT_PROPERTY_ADAPTER_BONDED_DEVICES:
+               return "[Bluetooth Bonded Devices]";
+       case BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT:
+               return "[Bluetooth Adapter Discovery Timeout]";
+       case BT_PROPERTY_REMOTE_FRIENDLY_NAME:
+               return "[Bluetooth Friendly Name]";
+       case BT_PROPERTY_REMOTE_RSSI:
+               return "[Bluetooth Rmote RSSI]";
+       case BT_PROPERTY_REMOTE_VERSION_INFO:
+               return "[Bluetooth Version Info]";
+       case BT_PROPERTY_LOCAL_LE_FEATURES:
+               return "[Bluetooth LE Features]";
+       case BT_PROPERTY_REMOTE_DEVICE_TIMESTAMP:
+               return "[Bluetooth Remote Device Timestamp]";
+       default:
+               return "[Default Property]";
        }
 }
 
 const char* bt_device_type_t2str(bt_device_type_t device_type)
 {
        switch (device_type) {
-               case BT_DEVICE_DEVTYPE_BREDR:
-                       return "BREDR Device";
-                       break;
-               case BT_DEVICE_DEVTYPE_BLE:
-                       return "BLE Device";
-                       break;
-               case BT_DEVICE_DEVTYPE_DUAL:
-                       return "Dual Device";
-                       break;
-               default:
-                       return "Unknown Device Type";
+       case BT_DEVICE_DEVTYPE_BREDR:
+               return "BREDR Device";
+               break;
+       case BT_DEVICE_DEVTYPE_BLE:
+               return "BLE Device";
+               break;
+       case BT_DEVICE_DEVTYPE_DUAL:
+               return "Dual Device";
+               break;
+       default:
+               return "Unknown Device Type";
        }
 }
 
 const char* bt_scan_mode_t2str(bt_scan_mode_t scan_mode)
 {
        switch(scan_mode) {
-               case BT_SCAN_MODE_NONE:
-                       return "Non Scannable";
-               case BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE:
-                       return "Connectable And Discoverable";
-               case BT_SCAN_MODE_CONNECTABLE:
-                       return "Connectable";
-               default:
-                       return "Unknown Scan Mode";
+       case BT_SCAN_MODE_NONE:
+               return "Non Scannable";
+       case BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE:
+               return "Connectable And Discoverable";
+       case BT_SCAN_MODE_CONNECTABLE:
+               return "Connectable";
+       default:
+               return "Unknown Scan Mode";
        }
 
 }
 
 static void local_le_feat2string(char *str, const bt_local_le_features_t *f)
 {
-        uint16_t scan_num;
+       uint16_t scan_num;
 
-        str += sprintf(str, "{\n");
+       str += sprintf(str, "{\n");
 
-        str += sprintf(str, "Privacy supported: %s,\n",
-                                f->local_privacy_enabled ? "TRUE" : "FALSE");
+       str += sprintf(str, "Privacy supported: %s,\n",
+                       f->local_privacy_enabled ? "TRUE" : "FALSE");
 
-        str += sprintf(str, "Num of advertising instances: %u,\n",
-                                                        f->max_adv_instance);
+       str += sprintf(str, "Num of advertising instances: %u,\n",
+                       f->max_adv_instance);
 
-        str += sprintf(str, "PRA offloading support: %s,\n",
-                                f->rpa_offload_supported ? "TRUE" : "FALSE");
+       str += sprintf(str, "PRA offloading support: %s,\n",
+                       f->rpa_offload_supported ? "TRUE" : "FALSE");
 
-        str += sprintf(str, "Num of offloaded IRKs: %u,\n",
-                                                        f->max_irk_list_size);
+       str += sprintf(str, "Num of offloaded IRKs: %u,\n",
+                       f->max_irk_list_size);
 
-        str += sprintf(str, "Num of offloaded scan filters: %u,\n",
-                                                f->max_adv_filter_supported);
+       str += sprintf(str, "Num of offloaded scan filters: %u,\n",
+                       f->max_adv_filter_supported);
 
-        scan_num = (f->scan_result_storage_size_hibyte << 8) +
-                                        f->scan_result_storage_size_lobyte;
+       scan_num = (f->scan_result_storage_size_hibyte << 8) +
+               f->scan_result_storage_size_lobyte;
 
-        str += sprintf(str, "Num of offloaded scan results: %u,\n", scan_num);
+       str += sprintf(str, "Num of offloaded scan results: %u,\n", scan_num);
 
-        str += sprintf(str, "Activity & energy report support: %s\n",
-                        f->activity_energy_info_supported ? "TRUE" : "FALSE");
+       str += sprintf(str, "Activity & energy report support: %s\n",
+                       f->activity_energy_info_supported ? "TRUE" : "FALSE");
 
-        sprintf(str, "}");
+       sprintf(str, "}");
 }
 
 const char *btproperty2str(const bt_property_t *property)
@@ -315,50 +316,50 @@ const char *btproperty2str(const bt_property_t *property)
                        property->len);
 
        switch (property->type) {
-               case BT_PROPERTY_BDNAME:
-               case BT_PROPERTY_REMOTE_FRIENDLY_NAME:
-                       snprintf(p, property->len + 1, "%s",
-                                       ((bt_bdname_t *) property->val)->name);
-                       break;
-               case BT_PROPERTY_BDADDR:
-                       sprintf(p, "%s", bdaddr2str((bt_bdaddr_t *) property->val));
-                       break;
-               case BT_PROPERTY_CLASS_OF_DEVICE:
-                       sprintf(p, "%06x", *((unsigned int *) property->val));
-                       break;
-               case BT_PROPERTY_TYPE_OF_DEVICE:
-                       sprintf(p, "%s", bt_device_type_t2str(
-                                               *((bt_device_type_t *) property->val)));
-                       break;
-               case BT_PROPERTY_REMOTE_RSSI:
-                       sprintf(p, "%d", *((char *) property->val));
-                       break;
-               case BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT:
-                       sprintf(p, "%d", *((unsigned int *) property->val));
-                       break;
-               case BT_PROPERTY_ADAPTER_SCAN_MODE:
-                       sprintf(p, "%s",
-                                       bt_scan_mode_t2str(*((bt_scan_mode_t *) property->val)));
-                       break;
-               case BT_PROPERTY_ADAPTER_BONDED_DEVICES:
-                       bonded_devices2string(p, property->val, property->len);
-                       break;
-               case BT_PROPERTY_UUIDS:
-                       uuids2string(p, property->val, property->len);
-                       break;
-               case BT_PROPERTY_SERVICE_RECORD:
-                       rec = property->val;
-                       sprintf(p, "{%s, %d, %s}", btuuid2str(rec->uuid.uu),
-                                       rec->channel, rec->name);
-                       break;
-               case BT_PROPERTY_LOCAL_LE_FEATURES:
-                       local_le_feat2string(p, property->val);
-                       break;
-               case BT_PROPERTY_REMOTE_VERSION_INFO:
-               case BT_PROPERTY_REMOTE_DEVICE_TIMESTAMP:
-               default:
-                       sprintf(p, "%p", property->val);
-                       break;
+       case BT_PROPERTY_BDNAME:
+       case BT_PROPERTY_REMOTE_FRIENDLY_NAME:
+               snprintf(p, property->len + 1, "%s",
+                               ((bt_bdname_t *) property->val)->name);
+               break;
+       case BT_PROPERTY_BDADDR:
+               sprintf(p, "%s", bdaddr2str((bt_bdaddr_t *) property->val));
+               break;
+       case BT_PROPERTY_CLASS_OF_DEVICE:
+               sprintf(p, "%06x", *((unsigned int *) property->val));
+               break;
+       case BT_PROPERTY_TYPE_OF_DEVICE:
+               sprintf(p, "%s", bt_device_type_t2str(
+                                       *((bt_device_type_t *) property->val)));
+               break;
+       case BT_PROPERTY_REMOTE_RSSI:
+               sprintf(p, "%d", *((char *) property->val));
+               break;
+       case BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT:
+               sprintf(p, "%d", *((unsigned int *) property->val));
+               break;
+       case BT_PROPERTY_ADAPTER_SCAN_MODE:
+               sprintf(p, "%s",
+                               bt_scan_mode_t2str(*((bt_scan_mode_t *) property->val)));
+               break;
+       case BT_PROPERTY_ADAPTER_BONDED_DEVICES:
+               bonded_devices2string(p, property->val, property->len);
+               break;
+       case BT_PROPERTY_UUIDS:
+               uuids2string(p, property->val, property->len);
+               break;
+       case BT_PROPERTY_SERVICE_RECORD:
+               rec = property->val;
+               sprintf(p, "{%s, %d, %s}", btuuid2str(rec->uuid.uu),
+                               rec->channel, rec->name);
+               break;
+       case BT_PROPERTY_LOCAL_LE_FEATURES:
+               local_le_feat2string(p, property->val);
+               break;
+       case BT_PROPERTY_REMOTE_VERSION_INFO:
+       case BT_PROPERTY_REMOTE_DEVICE_TIMESTAMP:
+       default:
+               sprintf(p, "%p", property->val);
+               break;
        }
 
        return buf;
@@ -366,44 +367,100 @@ const char *btproperty2str(const bt_property_t *property)
 
 bt_service_id_t _bt_convert_uuid_string_to_service_id(const char *uuid)
 {
-        bt_service_id_t service_id = BT_RES_SERVICE_ID;
-
-        DBG("+");
-
-        if (!strcasecmp(uuid, BT_HAL_HFP_AUDIO_GATEWAY_UUID))
-                service_id = BT_HFP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_HSP_AUDIO_GATEWAY_UUID))
-                service_id = BT_HSP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_A2DP_UUID))
-                service_id = BT_A2DP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_AVRCP_TARGET_UUID))
-                service_id = BT_AVRCP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_AVRCP_REMOTE_UUID))
-                service_id = BT_AVRCP_CT_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_OPP_UUID))
-                service_id = BT_OPP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_FTP_UUID))
-                service_id = BT_FTP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_SPP_UUID))
-                service_id = BT_SPP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_PBAP_UUID))
-                service_id = BT_PBAP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_MAP_UUID))
-                service_id = BT_MAP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_NAP_UUID))
-                service_id = BT_NAP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_GN_UUID))
-                service_id = BT_GN_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_HID_UUID))
-                service_id = BT_HID_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_SAP_UUID_OLD))
-                service_id = BT_SAP_SERVICE_ID;
-        else if (!strcasecmp(uuid, BT_HAL_SAP_UUID_NEW))
-                service_id = BT_SAP_SERVICE_ID;
-        else
-                ERR("Unknwon Service uuid, return BT_RES_SERVICE_ID");
-
-        DBG("service_id = [%d]", service_id);
-        DBG("-");
-        return service_id;
+       bt_service_id_t service_id = BT_RES_SERVICE_ID;
+
+       DBG("+");
+
+       if (!strcasecmp(uuid, BT_HAL_HFP_AUDIO_GATEWAY_UUID))
+               service_id = BT_HFP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_HSP_AUDIO_GATEWAY_UUID))
+               service_id = BT_HSP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_A2DP_UUID))
+               service_id = BT_A2DP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_AVRCP_TARGET_UUID))
+               service_id = BT_AVRCP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_AVRCP_REMOTE_UUID))
+               service_id = BT_AVRCP_CT_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_OPP_UUID))
+               service_id = BT_OPP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_FTP_UUID))
+               service_id = BT_FTP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_SPP_UUID))
+               service_id = BT_SPP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_PBAP_UUID))
+               service_id = BT_PBAP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_MAP_UUID))
+               service_id = BT_MAP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_NAP_UUID))
+               service_id = BT_NAP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_GN_UUID))
+               service_id = BT_GN_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_HID_UUID))
+               service_id = BT_HID_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_SAP_UUID_OLD))
+               service_id = BT_SAP_SERVICE_ID;
+       else if (!strcasecmp(uuid, BT_HAL_SAP_UUID_NEW))
+               service_id = BT_SAP_SERVICE_ID;
+       else
+               ERR("Unknwon Service uuid, return BT_RES_SERVICE_ID");
+
+       DBG("service_id = [%d]", service_id);
+       DBG("-");
+       return service_id;
+}
+
+char *_bt_convert_service_id_to_uuid_string(bt_service_id_t service_id)
+{
+       DBG("+");
+
+       switch (service_id) {
+       case BT_HFP_SERVICE_ID:
+               return g_strdup(BT_HAL_HFP_AUDIO_GATEWAY_UUID);
+       case BT_HSP_SERVICE_ID:
+               return g_strdup(BT_HAL_HSP_AUDIO_GATEWAY_UUID);
+       case BT_A2DP_SERVICE_ID:
+               return g_strdup(BT_HAL_A2DP_UUID);
+       case BT_AVRCP_SERVICE_ID:
+               return g_strdup(BT_HAL_AVRCP_TARGET_UUID);
+       case BT_AVRCP_CT_SERVICE_ID:
+               return g_strdup(BT_HAL_AVRCP_REMOTE_UUID);
+       case BT_OPP_SERVICE_ID:
+               return g_strdup(BT_HAL_OPP_UUID);
+       case BT_FTP_SERVICE_ID:
+               return g_strdup(BT_HAL_FTP_UUID);
+       case BT_SPP_SERVICE_ID:
+               return g_strdup(BT_HAL_SPP_UUID);
+       case BT_PBAP_SERVICE_ID:
+               return g_strdup(BT_HAL_PBAP_UUID);
+       case BT_MAP_SERVICE_ID:
+               return g_strdup(BT_HAL_MAP_UUID);
+       case BT_NAP_SERVICE_ID:
+               return g_strdup(BT_HAL_NAP_UUID);
+       case BT_GN_SERVICE_ID:
+               return g_strdup(BT_HAL_GN_UUID);
+       case BT_HID_SERVICE_ID:
+               return g_strdup(BT_HAL_HID_UUID);
+       case BT_SAP_SERVICE_ID:
+               return g_strdup(BT_HAL_SAP_UUID_NEW);
+       /* TODO: Add UUID for following service_ids */
+       case BT_DUN_SERVICE_ID:
+       case BT_A2DP_SRC_SERVICE_ID:
+       case BT_LAP_SERVICE_ID:
+       case BT_ICP_SERVICE_ID:
+       case BT_SYNC_SERVICE_ID:
+       case BT_BPP_SERVICE_ID:
+       case BT_BIP_SERVICE_ID:
+       case BT_PANU_SERVICE_ID:
+       case BT_VDP_SERVICE_ID:
+       case BT_HSP_HS_SERVICE_ID:
+       case BT_HFP_HS_SERVICE_ID:
+       case BT_MN_SERVICE_ID:
+       case BT_HDP_SERVICE_ID:
+       case BT_PCE_SERVICE_ID:
+       default:
+               ERR("Unknwon Service id: %d, return NULL");
+       }
+
+       DBG("-");
+       return NULL;
 }
index 855ffc9..41acfb2 100644 (file)
@@ -129,7 +129,7 @@ cp %{SOURCE1001} .
 
 
 %build
-export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
+export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE -DTIZEN_BT_HAL"
 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
 export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"