Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 45c63dde authored by Ajay Panicker's avatar Ajay Panicker
Browse files

Mark background and opportunistic scans in scan statistics

Bug: 27294154
Change-Id: I71d8f388aa83da581958d2169ca9a5eb6088a367
parent ac9407b0
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -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)       : " +
+2 −2
Original line number Diff line number Diff line
@@ -1390,7 +1390,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);
    }

@@ -1405,7 +1405,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);
    }