[Adapt]Added support for is_device_connected API 34/87734/1
authorAtul Rai <a.rai@samsung.com>
Mon, 1 Aug 2016 09:33:21 +0000 (15:03 +0530)
committerAtul Rai <a.rai@samsung.com>
Wed, 31 Aug 2016 04:24:56 +0000 (09:54 +0530)
This patch adds support for is_device_connected API in bt-api and
bt-service.

Change-Id: Id557503e4b4e8f68a0c99a72bb3a703fde50b367
Signed-off-by: Atul Rai <a.rai@samsung.com>
bt-api/bt-device.c
bt-service-adaptation/services/bt-request-handler.c
bt-service-adaptation/services/device/bt-service-core-device.c
bt-service-adaptation/services/include/bt-service-core-device.h

index 7f93e87..b7c0da4 100644 (file)
@@ -299,15 +299,15 @@ BT_EXPORT_API int bluetooth_is_device_connected(const bluetooth_device_address_t
        BT_CHECK_PARAMETER(is_connected, return);
        BT_CHECK_ENABLED_ANY(return);
 
-#ifdef RFCOMM_DIRECT
        if (type & BLUETOOTH_RFCOMM_SERVICE) {
                result = bluetooth_rfcomm_client_is_connected(device_address, is_connected);
+               /* TODO: Enable below code once rfcomm server implementation is done */
+#if 0
                if (*is_connected == FALSE)
                        result = bluetooth_rfcomm_server_is_connected(device_address, is_connected);
-
+#endif
                return result;
        }
-#endif
 
        BT_INIT_PARAMS();
        BT_ALLOC_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
index 677b909..7d5994d 100644 (file)
@@ -627,6 +627,21 @@ int __bt_bluez_request(int function_name,
                result = _bt_set_authorization(&address, authorize);
                break;
        }
+       case BT_IS_DEVICE_CONNECTED: {
+               bluetooth_device_address_t address = { {0} };
+               gboolean connected = FALSE;
+               int service_type;
+
+               __bt_service_get_parameters(in_param1,
+                               &address, sizeof(bluetooth_device_address_t));
+               __bt_service_get_parameters(in_param2,
+                               &service_type, sizeof(int));
+
+               connected = _bt_is_device_connected(&address, service_type);
+               BT_DBG("is_connected: %d", connected);
+               g_array_append_vals(*out_param1, &connected, sizeof(gboolean));
+               break;
+       }
        case BT_HID_CONNECT: {
                bluetooth_device_address_t address = { {0} };
 
index 25f1574..3fa979a 100644 (file)
@@ -1586,3 +1586,31 @@ int _bt_set_authorization(bluetooth_device_address_t *device_address,
 
        return BLUETOOTH_ERROR_NONE;
 }
+
+gboolean _bt_is_device_connected(bluetooth_device_address_t *device_address, int svc_type)
+{
+       gboolean is_connected;
+       oal_service_t svc_id;
+
+       retv_if(device_address == NULL, BLUETOOTH_ERROR_INVALID_PARAM);
+
+       /*
+        * TODO: While adding support for new profiles, need to add more
+        * <svc_type, svc_id> mapping here.
+        */
+       switch (svc_type) {
+       case BT_PROFILE_CONN_HID:
+               svc_id = HID_SERVICE_ID;
+               break;
+       default:
+               BT_DBG("Unknown svc_type: %d", svc_type);
+               return FALSE;
+       }
+
+       is_connected = device_get_svc_conn_state((bt_address_t*)device_address, svc_id);
+
+       BT_DBG("svc_type: %d, is_connected: %s",
+                       svc_type, is_connected ? "TRUE" : "FALSE");
+
+       return is_connected;
+}
index 9534599..6eac2d5 100755 (executable)
@@ -60,6 +60,9 @@ int _bt_passkey_confirmation_reply(gboolean confirmation_reply);
 
 int _bt_set_authorization(bluetooth_device_address_t *device_address,
                                gboolean authorize);
+
+gboolean _bt_is_device_connected(bluetooth_device_address_t *device_address, int svc_type);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */