OSDN Git Service

Mark background and opportunistic scans in scan statistics
authorAjay Panicker <apanicke@google.com>
Wed, 24 Feb 2016 23:43:53 +0000 (15:43 -0800)
committerAjay Panicker <apanicke@google.com>
Fri, 26 Feb 2016 23:50:18 +0000 (15:50 -0800)
Bug: 27294154
Change-Id: I71d8f388aa83da581958d2169ca9a5eb6088a367

src/com/android/bluetooth/gatt/ContextMap.java
src/com/android/bluetooth/gatt/GattService.java

index d044e5c..88a29b1 100644 (file)
@@ -15,6 +15,7 @@
  */
 package com.android.bluetooth.gatt;
 
+import android.bluetooth.le.ScanSettings;
 import android.content.Context;
 import android.os.Binder;
 import android.os.IBinder;
@@ -63,6 +64,8 @@ import com.android.bluetooth.btservice.BluetoothProto;
         int scansStopped = 0;
         boolean isScanning = false;
         boolean isRegistered = false;
+        boolean isOpportunisticScan = false;
+        boolean isBackgroundScan = false;
         long minScanTime = Long.MAX_VALUE;
         long maxScanTime = 0;
         long totalScanTime = 0;
@@ -75,10 +78,14 @@ import com.android.bluetooth.btservice.BluetoothProto;
             appName = name;
         }
 
-        void startScan() {
+        void recordScanStart(ScanSettings settings) {
             this.scansStarted++;
             isScanning = true;
             startTime = System.currentTimeMillis();
+            if (settings != null) {
+                isOpportunisticScan = settings.getScanMode() == ScanSettings.SCAN_MODE_OPPORTUNISTIC;
+                isBackgroundScan = (settings.getCallbackType() & ScanSettings.CALLBACK_TYPE_FIRST_MATCH) != 0;
+            }
 
             BluetoothProto.ScanEvent scanEvent = new BluetoothProto.ScanEvent();
             scanEvent.setScanEventType(BluetoothProto.ScanEvent.SCAN_EVENT_START);
@@ -98,12 +105,15 @@ import com.android.bluetooth.btservice.BluetoothProto;
             }
         }
 
-        void stopScan() {
+        void recordScanStop() {
             this.scansStopped++;
             isScanning = false;
             stopTime = System.currentTimeMillis();
             long currTime = stopTime - startTime;
 
+            isOpportunisticScan = false;
+            isBackgroundScan = false;
+
             minScanTime = Math.min(currTime, minScanTime);
             maxScanTime = Math.max(currTime, maxScanTime);
             totalScanTime += currTime;
@@ -499,6 +509,8 @@ import com.android.bluetooth.btservice.BluetoothProto;
 
             sb.append("  " + name);
             if (scanStats.isRegistered) sb.append(" (Registered)");
+            if (scanStats.isOpportunisticScan) sb.append(" (Opportunistic)");
+            if (scanStats.isBackgroundScan) sb.append(" (Background)");
             sb.append("\n");
 
             sb.append("  LE scans (started/stopped)       : " +
index e07ef12..05d1d03 100644 (file)
@@ -1399,7 +1399,7 @@ public class GattService extends ProfileService {
         scanClient.hasPeersMacAddressPermission = Utils.checkCallerHasPeersMacAddressPermission(
                 this);
         scanClient.legacyForegroundApp = Utils.isLegacyForegroundApp(this, callingPackage);
-        mClientMap.getScanStatsById(appIf).startScan();
+        mClientMap.getScanStatsById(appIf).recordScanStart(settings);
         mScanManager.startScan(scanClient);
     }
 
@@ -1414,7 +1414,7 @@ public class GattService extends ProfileService {
         int scanQueueSize = mScanManager.getBatchScanQueue().size() +
                 mScanManager.getRegularScanQueue().size();
         if (DBG) Log.d(TAG, "stopScan() - queue size =" + scanQueueSize);
-        mClientMap.getScanStatsById(client.clientIf).stopScan();
+        mClientMap.getScanStatsById(client.clientIf).recordScanStop();
         mScanManager.stopScan(client);
     }