aboutsummaryrefslogtreecommitdiff
path: root/src/adapter.c
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2011-05-04 10:13:47 -0400
committerJohan Hedberg <johan.hedberg@nokia.com>2011-05-05 12:14:37 +0300
commit0ee75941aac734811916cfcb332604062109f7d1 (patch)
treef7166733f371602f96e1bce821f9e2ab62bd62d4 /src/adapter.c
parentf7a55983ad22b25e8fdb56aaaf540a588f66824a (diff)
downloadbluez-0ee75941aac734811916cfcb332604062109f7d1.tar.gz
Remove connectable checking when creating a device
Kernel advertising cache will be used to infer the LE address type and if it is connectable. For kernels without cache patches, only LE public address is supported and if the remote is non-connectable, the connection will fail after the L2CAP timeout(~40s). Note: currently, CreateDevice misbehaves when LE Create Connection command times out for any reason (e.g. peer device left connectable mode). This is being investigated and will be fixed in a separate patch.
Diffstat (limited to 'src/adapter.c')
-rw-r--r--src/adapter.c30
1 files changed, 3 insertions, 27 deletions
diff --git a/src/adapter.c b/src/adapter.c
index 2f46b3d2..d8e49d51 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -68,9 +68,6 @@
#define EIR_SIM_HOST 0x10 /* Simultaneous LE and BR/EDR to Same
Device Capable (Host) */
-#define ADV_TYPE_IND 0x00
-#define ADV_TYPE_DIRECT_IND 0x01
-
#define IO_CAPABILITY_DISPLAYONLY 0x00
#define IO_CAPABILITY_DISPLAYYESNO 0x01
#define IO_CAPABILITY_KEYBOARDONLY 0x02
@@ -1621,21 +1618,9 @@ static device_type_t flags2type(uint8_t flags)
return DEVICE_TYPE_DUALMODE;
}
-static gboolean event_is_connectable(uint8_t type)
-{
- switch (type) {
- case ADV_TYPE_IND:
- case ADV_TYPE_DIRECT_IND:
- return TRUE;
- default:
- return FALSE;
- }
-}
-
static struct btd_device *create_device_internal(DBusConnection *conn,
struct btd_adapter *adapter,
- const gchar *address,
- gboolean force, int *err)
+ const gchar *address, int *err)
{
struct remote_dev_info *dev, match;
struct btd_device *device;
@@ -1651,14 +1636,6 @@ static struct btd_device *create_device_internal(DBusConnection *conn,
else
type = DEVICE_TYPE_BREDR;
- if (!force && type == DEVICE_TYPE_LE &&
- !event_is_connectable(dev->evt_type)) {
- if (err)
- *err = -ENOTCONN;
-
- return NULL;
- }
-
device = adapter_create_device(conn, adapter, address, type);
if (!device && err)
*err = -ENOMEM;
@@ -1690,7 +1667,7 @@ static DBusMessage *create_device(DBusConnection *conn,
DBG("%s", address);
- device = create_device_internal(conn, adapter, address, TRUE, &err);
+ device = create_device_internal(conn, adapter, address, &err);
if (!device)
goto failed;
@@ -1771,8 +1748,7 @@ static DBusMessage *create_paired_device(DBusConnection *conn,
device = adapter_find_device(adapter, address);
if (!device) {
- device = create_device_internal(conn, adapter, address,
- FALSE, &err);
+ device = create_device_internal(conn, adapter, address, &err);
if (!device)
return btd_error_failed(msg, strerror(-err));
}