summaryrefslogtreecommitdiff
path: root/android/bluetooth.c
diff options
context:
space:
mode:
authorLukasz Rymanowski <lukasz.rymanowski@tieto.com>2014-12-18 12:47:56 +0100
committerSzymon Janc <szymon.janc@tieto.com>2014-12-18 18:10:21 +0100
commit49e25b927e3317ab17bcf867b2eca55a6ddc428a (patch)
treecf8f57657130bf472814ff5c57aa2217ee2c841e /android/bluetooth.c
parenta34cba5926241e9e59e1ecd17c139c211573fe11 (diff)
downloadbluez-49e25b927e3317ab17bcf867b2eca55a6ddc428a.tar.gz
android/gatt: Add connectable flag to device found callback
GATT is interested in advertising event type i.e if it is connectable or not. It is because GATT does not want to trigger connection to devices doing non-connectable advertising. This patch add such support.
Diffstat (limited to 'android/bluetooth.c')
-rw-r--r--android/bluetooth.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/android/bluetooth.c b/android/bluetooth.c
index 48085e9a7..96808b713 100644
--- a/android/bluetooth.c
+++ b/android/bluetooth.c
@@ -1917,6 +1917,7 @@ static bool is_new_device(const struct device *dev, unsigned int flags,
static void update_found_device(const bdaddr_t *bdaddr, uint8_t bdaddr_type,
int8_t rssi, bool confirm,
+ bool connectable,
const uint8_t *data, uint8_t data_len)
{
struct eir_data eir;
@@ -1964,7 +1965,7 @@ static void update_found_device(const bdaddr_t *bdaddr, uint8_t bdaddr_type,
}
gatt_device_found_cb(addr, addr_type, rssi, data_len, data,
- dev->le_bonded);
+ connectable, dev->le_bonded);
}
if (!dev->bredr_paired && !dev->le_paired)
@@ -2000,6 +2001,7 @@ static void mgmt_device_found_event(uint16_t index, uint16_t length,
uint16_t eir_len;
uint32_t flags;
bool confirm_name;
+ bool connectable;
char addr[18];
if (length < sizeof(*ev)) {
@@ -2026,9 +2028,10 @@ static void mgmt_device_found_event(uint16_t index, uint16_t length,
index, addr, ev->rssi, flags, eir_len);
confirm_name = flags & MGMT_DEV_FOUND_CONFIRM_NAME;
+ connectable = !(flags & MGMT_DEV_FOUND_NOT_CONNECTABLE);
update_found_device(&ev->addr.bdaddr, ev->addr.type, ev->rssi,
- confirm_name, eir, eir_len);
+ confirm_name, connectable, eir, eir_len);
}
static void mgmt_device_connected_event(uint16_t index, uint16_t length,
@@ -2043,7 +2046,7 @@ static void mgmt_device_connected_event(uint16_t index, uint16_t length,
return;
}
- update_found_device(&ev->addr.bdaddr, ev->addr.type, 0, false,
+ update_found_device(&ev->addr.bdaddr, ev->addr.type, 0, false, false,
&ev->eir[0], le16_to_cpu(ev->eir_len));
hal_ev.status = HAL_STATUS_SUCCESS;