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);
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} };
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;
+}
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 */