diff --git a/android/bluetooth.c b/android/bluetooth.c
index 99e2aab..2f3a6d6 100644
--- a/android/bluetooth.c
+++ b/android/bluetooth.c
bool le_paired;
bool le_bonded;
+ bool in_white_list;
+
char *name;
char *friendly_name;
return false;
}
+ if (dev->in_white_list) {
+ DBG("Device already in white list");
+ return true;
+ }
+
memset(&cp, 0, sizeof(cp));
bacpy(&cp.addr.bdaddr, addr);
cp.addr.type = dev->bdaddr_type;
cp.action = 0x02;
if (mgmt_send(mgmt_if, MGMT_OP_ADD_DEVICE, adapter.index, sizeof(cp),
- &cp, NULL, NULL, NULL) > 0)
+ &cp, NULL, NULL, NULL) > 0) {
+ dev->in_white_list = true;
return true;
+ }
error("Failed to add device");
return;
}
+ if (!dev->in_white_list) {
+ DBG("Device already removed from white list");
+ return;
+ }
+
memset(&cp, 0, sizeof(cp));
bacpy(&cp.addr.bdaddr, addr);
cp.addr.type = dev->bdaddr_type;
if (mgmt_send(mgmt_if, MGMT_OP_REMOVE_DEVICE, adapter.index,
- sizeof(cp), &cp, NULL, NULL, NULL) > 0)
+ sizeof(cp), &cp, NULL, NULL, NULL) > 0) {
+ dev->in_white_list = false;
return;
+ }
error("Failed to remove device");
}
update_device_state(dev, ev->addr.type, HAL_STATUS_SUCCESS, false,
false, false);
+
+ /* Unpaired device is removed from the white list */
+ dev->in_white_list = false;
}
static void store_ltk(const bdaddr_t *dst, uint8_t bdaddr_type, bool master,