Diff between b08fb7759ed6926cfc3b87f5fe8e2f659ca9736f and 9a7323f11101a03ad166715e51e42b5e55c952b3

Changed Files

File Additions Deletions Status
android/gatt.c +25 -0 modified

Full Patch

diff --git a/android/gatt.c b/android/gatt.c
index 89748d2..ae310f7 100644
--- a/android/gatt.c
+++ b/android/gatt.c
@@ -6496,10 +6496,34 @@ static bool start_listening(void)
 	return true;
 }
 
+static void gatt_unpaired_cb(const bdaddr_t *addr, uint8_t type)
+{
+	struct gatt_device *dev;
+	char address[18];
+
+	dev = find_device_by_addr(addr);
+	if (!dev)
+		return;
+
+	if (dev->bdaddr_type != type)
+		return;
+
+	ba2str(addr, address);
+	DBG("Unpaired device %s", address);
+
+	queue_remove(gatt_devices, dev);
+	destroy_device(dev);
+}
+
 bool bt_gatt_register(struct ipc *ipc, const bdaddr_t *addr)
 {
 	DBG("");
 
+	if (!bt_unpaired_register(gatt_unpaired_cb)) {
+		error("gatt: Could not register unpaired callback");
+		return false;
+	}
+
 	if (!start_listening())
 		return false;
 
@@ -6628,6 +6652,7 @@ void bt_gatt_unregister(void)
 	crypto = NULL;
 
 	bt_le_unregister();
+	bt_unpaired_unregister(gatt_unpaired_cb);
 }
 
 unsigned int bt_gatt_register_app(const char *uuid, gatt_type_t type,