From 2b680f5a8493ef8af600d621537ea835aafa73ea Mon Sep 17 00:00:00 2001 From: Arman Uguray Date: Wed, 14 Jan 2015 19:52:13 -0800 Subject: [PATCH] core: device: Fix connect bearer selection For dual-mode devices created from storage, trying to connect without a scan sometimes causes the incorrect bearer to be connected. This patch modifies device.c:select_conn_bearer so that it simply returns the stored bdaddr_type of a device if neither bredr nor le have been seen in a while. --- src/device.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/device.c b/src/device.c index 1e1356504..b5c19dd9a 100644 --- a/src/device.c +++ b/src/device.c @@ -1537,6 +1537,9 @@ static uint8_t select_conn_bearer(struct btd_device *dev) le_last = NVAL_TIME; } + if (le_last == NVAL_TIME && bredr_last == NVAL_TIME) + return dev->bdaddr_type; + if (dev->bredr && (!dev->le || le_last == NVAL_TIME)) return BDADDR_BREDR; -- 2.47.3