From 8d6abb0a65bd4e9f4726a9c565b0c74fb6aed1a1 Mon Sep 17 00:00:00 2001 From: Andre Eisenbach Date: Mon, 19 Sep 2016 12:23:15 -0700 Subject: [PATCH] Do not downgrade filtered scans to opportunistic Change-Id: I0d8bcffef9951c03607f7f3b25b79557062a9bec Fixes: 31308591 --- src/com/android/bluetooth/gatt/ScanManager.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/com/android/bluetooth/gatt/ScanManager.java b/src/com/android/bluetooth/gatt/ScanManager.java index 0db565c7..5eb31e17 100644 --- a/src/com/android/bluetooth/gatt/ScanManager.java +++ b/src/com/android/bluetooth/gatt/ScanManager.java @@ -230,7 +230,7 @@ public class ScanManager { if (!mScanNative.isOpportunisticScanClient(client)) { mScanNative.configureRegularScanParams(); - if (!mScanNative.isFirstMatchScanClient(client)) { + if (!mScanNative.isExemptFromScanDowngrade(client)) { Message msg = mHandler.obtainMessage(MSG_SCAN_TIMEOUT); msg.obj = client; // Only one timeout message should exist at any time @@ -526,6 +526,12 @@ public class ScanManager { } } + private boolean isExemptFromScanDowngrade(ScanClient client) { + return isOpportunisticScanClient(client) + || isFirstMatchScanClient(client) + || !shouldUseAllPassFilter(client); + } + private boolean isOpportunisticScanClient(ScanClient client) { return client.settings.getScanMode() == ScanSettings.SCAN_MODE_OPPORTUNISTIC; } @@ -675,8 +681,9 @@ public class ScanManager { void regularScanTimeout() { for (ScanClient client : mRegularScanClients) { - if (!isOpportunisticScanClient(client) && !isFirstMatchScanClient(client)) { - logd("clientIf set to scan opportunisticly: " + client.clientIf); + if (!isExemptFromScanDowngrade(client)) { + Log.w(TAG, "Moving scan client to opportunistic (clientIf " + + client.clientIf + ")"); setOpportunisticScanClient(client); client.stats.setScanTimeout(); } -- 2.11.0