diff --git a/android/bluetooth.c b/android/bluetooth.c
index 48085e9..96808b7 100644
--- a/android/bluetooth.c
+++ b/android/bluetooth.c
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;
}
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)
uint16_t eir_len;
uint32_t flags;
bool confirm_name;
+ bool connectable;
char addr[18];
if (length < sizeof(*ev)) {
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,
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;
diff --git a/android/bluetooth.h b/android/bluetooth.h
index 4b7a70d..d09b6f2 100644
--- a/android/bluetooth.h
+++ b/android/bluetooth.h
typedef void (*bt_le_device_found)(const bdaddr_t *addr, uint8_t addr_type,
int rssi, uint16_t eir_len,
- const void *eir, bool bonded);
+ const void *eir, bool connectable,
+ bool bonded);
bool bt_le_register(bt_le_device_found cb);
void bt_le_unregister(void);
diff --git a/android/gatt.c b/android/gatt.c
index 08811f8..0258d91 100644
--- a/android/gatt.c
+++ b/android/gatt.c
static void le_device_found_handler(const bdaddr_t *addr, uint8_t addr_type,
int rssi, uint16_t eir_len,
- const void *eir, bool bonded)
+ const void *eir,
+ bool connectable, bool bonded)
{
uint8_t buf[IPC_MTU];
struct hal_ev_gatt_client_scan_result *ev = (void *) buf;
char bda[18];
if (!scanning)
- goto connect;
+ goto done;
ba2str(addr, bda);
DBG("LE Device found: %s, rssi: %d, adv_data: %d", bda, rssi, !!eir);
HAL_EV_GATT_CLIENT_SCAN_RESULT,
sizeof(*ev) + ev->len, ev);
-connect:
+done:
+ if (!connectable)
+ return;
+
/* We use auto connect feature from kernel if possible */
if (bt_kernel_conn_control())
return;