OSDN Git Service

Do not downgrade filtered scans to opportunistic
authorAndre Eisenbach <eisenbach@google.com>
Mon, 19 Sep 2016 19:23:15 +0000 (12:23 -0700)
committerAndre Eisenbach <eisenbach@google.com>
Wed, 21 Sep 2016 00:57:59 +0000 (00:57 +0000)
Change-Id: I0d8bcffef9951c03607f7f3b25b79557062a9bec
Fixes: 31308591

src/com/android/bluetooth/gatt/ScanManager.java

index 0db565c..5eb31e1 100644 (file)
@@ -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();
                 }