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

Commit 2b954d39 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Move AppScanStats from package `gatt` to `le_scan`" into main

parents b32fc3ed c6a03f89
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.util.Log;
import androidx.annotation.VisibleForTesting;

import com.android.bluetooth.BluetoothMethodProxy;
import com.android.bluetooth.le_scan.AppScanStats;
import com.android.internal.annotations.GuardedBy;

import com.google.common.collect.EvictingQueue;
@@ -56,7 +57,7 @@ public class ContextMap<C, T> {
    /**
     * Connection class helps map connection IDs to device addresses.
     */
    static class Connection {
    public static class Connection {
        public int connId;
        public String address;
        public int appId;
@@ -73,7 +74,7 @@ public class ContextMap<C, T> {
    /**
     * Application entry mapping UUIDs to appIDs and callbacks.
     */
    class App {
    public class App {
        /** The UUID of the application */
        public UUID uuid;

@@ -403,7 +404,7 @@ public class ContextMap<C, T> {
    /**
     * Get an application context by the calling Apps name.
     */
    App getByName(String name) {
    public App getByName(String name) {
        synchronized (mAppsLock) {
            Iterator<App> i = mApps.iterator();
            while (i.hasNext()) {
@@ -656,7 +657,7 @@ public class ContextMap<C, T> {
        return null;
    }

    List<Connection> getConnectionByApp(int appId) {
    public List<Connection> getConnectionByApp(int appId) {
        List<Connection> currentConnections = new ArrayList<Connection>();
        synchronized (mConnectionsLock) {
            Iterator<Connection> i = mConnections.iterator();
+2 −1
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ import com.android.bluetooth.btservice.ProfileService;
import com.android.bluetooth.flags.FeatureFlags;
import com.android.bluetooth.flags.FeatureFlagsImpl;
import com.android.bluetooth.flags.Flags;
import com.android.bluetooth.le_scan.AppScanStats;
import com.android.bluetooth.le_scan.PeriodicScanManager;
import com.android.bluetooth.le_scan.ScanManager;
import com.android.bluetooth.util.NumberUtils;
@@ -5136,7 +5137,7 @@ public class GattService extends ProfileService {
        mHandleMap.dump(sb);
    }

    void addScanEvent(BluetoothMetricsProto.ScanEvent event) {
    public void addScanEvent(BluetoothMetricsProto.ScanEvent event) {
        synchronized (mScanEvents) {
            if (mScanEvents.size() == NUM_SCAN_EVENTS_KEPT) {
                mScanEvents.remove();
+2 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.bluetooth.le.ScanSettings;
import android.os.Binder;
import android.os.UserHandle;

import com.android.bluetooth.le_scan.AppScanStats;

import java.util.List;
import java.util.Objects;

+37 −34
Original line number Diff line number Diff line
@@ -13,7 +13,8 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.bluetooth.gatt;

package com.android.bluetooth.le_scan;

import android.bluetooth.BluetoothProtoEnums;
import android.bluetooth.le.ScanFilter;
@@ -27,6 +28,8 @@ import com.android.bluetooth.BluetoothMetricsProto;
import com.android.bluetooth.BluetoothStatsLog;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.MetricsLogger;
import com.android.bluetooth.gatt.ContextMap;
import com.android.bluetooth.gatt.GattService;
import com.android.bluetooth.util.WorkSourceUtil;
import com.android.internal.annotations.GuardedBy;

@@ -52,11 +55,11 @@ public class AppScanStats {

    // Weight is the duty cycle of the scan mode
    static final int OPPORTUNISTIC_WEIGHT = 0;
    public static final int SCREEN_OFF_LOW_POWER_WEIGHT = 5;
    public static final int LOW_POWER_WEIGHT = 10;
    public static final int AMBIENT_DISCOVERY_WEIGHT = 25;
    public static final int BALANCED_WEIGHT = 25;
    public static final int LOW_LATENCY_WEIGHT = 100;
    static final int SCREEN_OFF_LOW_POWER_WEIGHT = 5;
    static final int LOW_POWER_WEIGHT = 10;
    static final int AMBIENT_DISCOVERY_WEIGHT = 25;
    static final int BALANCED_WEIGHT = 25;
    static final int LOW_LATENCY_WEIGHT = 100;

    static final int LARGE_SCAN_TIME_GAP_MS = 24000;

@@ -121,8 +124,8 @@ public class AppScanStats {
        }
    }
    public String appName;
    public WorkSource mWorkSource; // Used for BatteryStatsManager
    public final WorkSourceUtil mWorkSourceUtil; // Used for BluetoothStatsLog
    private WorkSource mWorkSource; // Used for BatteryStatsManager
    private final WorkSourceUtil mWorkSourceUtil; // Used for BluetoothStatsLog
    private int mScansStarted = 0;
    private int mScansStopped = 0;
    public boolean isRegistered = false;
@@ -142,9 +145,9 @@ public class AppScanStats {
    private int mAmbientDiscoveryScan = 0;
    private List<LastScan> mLastScans = new ArrayList<LastScan>();
    private HashMap<Integer, LastScan> mOngoingScans = new HashMap<Integer, LastScan>();
    public long startTime = 0;
    public long stopTime = 0;
    public int results = 0;
    private long startTime = 0;
    private long stopTime = 0;
    private int results = 0;

    public AppScanStats(String name, WorkSource source, ContextMap map, GattService service) {
        appName = name;
@@ -161,7 +164,7 @@ public class AppScanStats {
        mAdapterService = Objects.requireNonNull(AdapterService.getAdapterService());
    }

    synchronized void addResult(int scannerId) {
    public synchronized void addResult(int scannerId) {
        LastScan scan = getScanFromScannerId(scannerId);
        if (scan != null) {
            scan.results++;
@@ -186,7 +189,7 @@ public class AppScanStats {
        return mOngoingScans.get(scannerId);
    }

    public synchronized boolean isScanTimeout(int scannerId) {
    synchronized boolean isScanTimeout(int scannerId) {
        LastScan scan = getScanFromScannerId(scannerId);
        if (scan == null) {
            return false;
@@ -194,7 +197,7 @@ public class AppScanStats {
        return scan.isTimeout;
    }

    public synchronized boolean isScanDowngraded(int scannerId) {
    synchronized boolean isScanDowngraded(int scannerId) {
        LastScan scan = getScanFromScannerId(scannerId);
        if (scan == null) {
            return false;
@@ -202,7 +205,7 @@ public class AppScanStats {
        return scan.isDowngraded;
    }

    public synchronized boolean isAutoBatchScan(int scannerId) {
    synchronized boolean isAutoBatchScan(int scannerId) {
        LastScan scan = getScanFromScannerId(scannerId);
        if (scan == null) {
            return false;
@@ -277,7 +280,7 @@ public class AppScanStats {
        mOngoingScans.put(scannerId, scan);
    }

    synchronized void recordScanStop(int scannerId) {
    public synchronized void recordScanStop(int scannerId) {
        LastScan scan = getScanFromScannerId(scannerId);
        if (scan == null) {
            return;
@@ -374,30 +377,30 @@ public class AppScanStats {
        }
    }

    public synchronized void recordScanTimeoutCountMetrics() {
    synchronized void recordScanTimeoutCountMetrics() {
        MetricsLogger.getInstance()
                .cacheCount(BluetoothProtoEnums.LE_SCAN_ABUSE_COUNT_SCAN_TIMEOUT, 1);
    }

    public synchronized void recordHwFilterNotAvailableCountMetrics() {
    synchronized void recordHwFilterNotAvailableCountMetrics() {
        MetricsLogger.getInstance()
                .cacheCount(BluetoothProtoEnums.LE_SCAN_ABUSE_COUNT_HW_FILTER_NOT_AVAILABLE, 1);
    }

    public synchronized void recordTrackingHwFilterNotAvailableCountMetrics() {
    synchronized void recordTrackingHwFilterNotAvailableCountMetrics() {
        MetricsLogger.getInstance()
                .cacheCount(
                        BluetoothProtoEnums.LE_SCAN_ABUSE_COUNT_TRACKING_HW_FILTER_NOT_AVAILABLE,
                        1);
    }

    public static void initScanRadioState() {
    static void initScanRadioState() {
        synchronized (sLock) {
            sIsRadioStarted = false;
        }
    }

    public static boolean recordScanRadioStart(int scanMode) {
    static boolean recordScanRadioStart(int scanMode) {
        synchronized (sLock) {
            if (sIsRadioStarted) {
                return false;
@@ -409,7 +412,7 @@ public class AppScanStats {
        return true;
    }

    public static boolean recordScanRadioStop() {
    static boolean recordScanRadioStop() {
        synchronized (sLock) {
            if (!sIsRadioStarted) {
                return false;
@@ -474,7 +477,7 @@ public class AppScanStats {
        }
    }

    static void recordScanRadioResultCount() {
    public static void recordScanRadioResultCount() {
        synchronized (sLock) {
            if (!sIsRadioStarted) {
                return;
@@ -489,7 +492,7 @@ public class AppScanStats {
        }
    }

    static void recordBatchScanRadioResultCount(int numRecords) {
    public static void recordBatchScanRadioResultCount(int numRecords) {
        boolean isScreenOn;
        synchronized (sLock) {
            isScreenOn = sIsScreenOn;
@@ -508,7 +511,7 @@ public class AppScanStats {
        }
    }

    public static void setScreenState(boolean isScreenOn) {
    static void setScreenState(boolean isScreenOn) {
        synchronized (sLock) {
            if (sIsScreenOn == isScreenOn) {
                return;
@@ -522,7 +525,7 @@ public class AppScanStats {
        }
    }

    public synchronized void recordScanSuspend(int scannerId) {
    synchronized void recordScanSuspend(int scannerId) {
        LastScan scan = getScanFromScannerId(scannerId);
        if (scan == null || scan.isSuspended) {
            return;
@@ -531,7 +534,7 @@ public class AppScanStats {
        scan.isSuspended = true;
    }

    public synchronized void recordScanResume(int scannerId) {
    synchronized void recordScanResume(int scannerId) {
        LastScan scan = getScanFromScannerId(scannerId);
        long suspendDuration = 0;
        if (scan == null || !scan.isSuspended) {
@@ -544,7 +547,7 @@ public class AppScanStats {
        mTotalSuspendTime += suspendDuration;
    }

    public synchronized void setScanTimeout(int scannerId) {
    synchronized void setScanTimeout(int scannerId) {
        if (!isScanning()) {
            return;
        }
@@ -555,7 +558,7 @@ public class AppScanStats {
        }
    }

    public synchronized void setScanDowngrade(int scannerId, boolean isDowngrade) {
    synchronized void setScanDowngrade(int scannerId, boolean isDowngrade) {
        if (!isScanning()) {
            return;
        }
@@ -566,14 +569,14 @@ public class AppScanStats {
        }
    }

    public synchronized void setAutoBatchScan(int scannerId, boolean isBatchScan) {
    synchronized void setAutoBatchScan(int scannerId, boolean isBatchScan) {
        LastScan scan = getScanFromScannerId(scannerId);
        if (scan != null) {
            scan.isAutoBatchScan = isBatchScan;
        }
    }

    synchronized boolean isScanningTooFrequently() {
    public synchronized boolean isScanningTooFrequently() {
        if (mLastScans.size() < mAdapterService.getScanQuotaCount()) {
            return false;
        }
@@ -582,7 +585,7 @@ public class AppScanStats {
                < mAdapterService.getScanQuotaWindowMillis();
    }

    public synchronized boolean isScanningTooLong() {
    synchronized boolean isScanningTooLong() {
        if (!isScanning()) {
            return false;
        }
@@ -590,7 +593,7 @@ public class AppScanStats {
                >= mAdapterService.getScanTimeoutMillis();
    }

    public synchronized boolean hasRecentScan() {
    synchronized boolean hasRecentScan() {
        if (!isScanning() || mLastScans.isEmpty()) {
            return false;
        }
@@ -696,7 +699,7 @@ public class AppScanStats {
        }
    }

    synchronized void dumpToString(StringBuilder sb) {
    public synchronized void dumpToString(StringBuilder sb) {
        long currentTime = System.currentTimeMillis();
        long currTime = SystemClock.elapsedRealtime();
        long Score = 0;
+0 −1
Original line number Diff line number Diff line
@@ -47,7 +47,6 @@ import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.AdapterService;
import com.android.bluetooth.btservice.BluetoothAdapterProxy;
import com.android.bluetooth.flags.FeatureFlags;
import com.android.bluetooth.gatt.AppScanStats;
import com.android.bluetooth.gatt.FilterParams;
import com.android.bluetooth.gatt.GattObjectsFactory;
import com.android.bluetooth.gatt.GattService;
Loading