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

Commit e9c0bd9f authored by Jayden Kim's avatar Jayden Kim Committed by Gerrit Code Review
Browse files

Merge "Records LE Scan Activity Count" into main

parents 2b256a65 59026d4a
Loading
Loading
Loading
Loading
+66 −10
Original line number Diff line number Diff line
@@ -272,6 +272,7 @@ import java.util.Objects;
                mWorkSourceUtil.getUids(), mWorkSourceUtil.getTags(),
                BluetoothStatsLog.BLE_SCAN_STATE_CHANGED__STATE__ON,
                scan.isFilterScan, scan.isBackgroundScan, scan.isOpportunisticScan);
        recordScanAppCountMetricsStart(scan);

        mOngoingScans.put(scannerId, scan);
    }
@@ -338,6 +339,44 @@ import java.util.Objects;
                mWorkSourceUtil.getUids(), mWorkSourceUtil.getTags(),
                BluetoothStatsLog.BLE_SCAN_STATE_CHANGED__STATE__OFF,
                scan.isFilterScan, scan.isBackgroundScan, scan.isOpportunisticScan);
        recordScanAppCountMetricsStop(scan);
    }

    private void recordScanAppCountMetricsStart(LastScan scan) {
        MetricsLogger logger = MetricsLogger.getInstance();
        logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_TOTAL_ENABLE, 1);
        if (scan.isAutoBatchScan) {
            logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_AUTO_BATCH_ENABLE, 1);
        } else if (scan.isBatchScan) {
            logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_BATCH_ENABLE, 1);
        } else {
            if (scan.isFilterScan) {
                logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_FILTERED_ENABLE, 1);
            } else {
                logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_UNFILTERED_ENABLE, 1);
            }
        }
    }

    private void recordScanAppCountMetricsStop(LastScan scan) {
        MetricsLogger logger = MetricsLogger.getInstance();
        logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_TOTAL_DISABLE, 1);
        if (scan.isAutoBatchScan) {
            logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_AUTO_BATCH_DISABLE, 1);
        } else if (scan.isBatchScan) {
            logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_BATCH_DISABLE, 1);
        } else {
            if (scan.isFilterScan) {
                logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_FILTERED_DISABLE, 1);
            } else {
                logger.cacheCount(BluetoothProtoEnums.LE_SCAN_COUNT_UNFILTERED_DISABLE, 1);
            }
        }
    }

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

    static void initScanRadioState() {
@@ -374,20 +413,20 @@ import java.util.Objects;
        if (!sIsRadioStarted) {
            return;
        }
        MetricsLogger logger = MetricsLogger.getInstance();
        long currentTime = SystemClock.elapsedRealtime();
        long radioScanDuration = currentTime - sRadioStartTime;
        double scanWeight = getScanWeight(sRadioScanMode) * 0.01;
        long weightedDuration = (long) (radioScanDuration * scanWeight);

        if (weightedDuration > 0) {
            MetricsLogger.getInstance().cacheCount(
                    BluetoothProtoEnums.LE_SCAN_RADIO_DURATION_REGULAR, weightedDuration);
            logger.cacheCount(BluetoothProtoEnums.LE_SCAN_RADIO_DURATION_REGULAR, weightedDuration);
            if (sIsScreenOn) {
                MetricsLogger.getInstance().cacheCount(
                logger.cacheCount(
                        BluetoothProtoEnums.LE_SCAN_RADIO_DURATION_REGULAR_SCREEN_ON,
                        weightedDuration);
            } else {
                MetricsLogger.getInstance().cacheCount(
                logger.cacheCount(
                        BluetoothProtoEnums.LE_SCAN_RADIO_DURATION_REGULAR_SCREEN_OFF,
                        weightedDuration);
            }
@@ -427,15 +466,32 @@ import java.util.Objects;
            if (!sIsRadioStarted) {
                return;
            }
            MetricsLogger.getInstance().cacheCount(
                    BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_REGULAR, 1);
            MetricsLogger logger = MetricsLogger.getInstance();
            logger.cacheCount(BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_REGULAR, 1);
            if (sIsScreenOn) {
                MetricsLogger.getInstance().cacheCount(
                        BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_REGULAR_SCREEN_ON, 1);
                logger.cacheCount(BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_REGULAR_SCREEN_ON, 1);
            } else {
                MetricsLogger.getInstance().cacheCount(
                        BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_REGULAR_SCREEN_OFF, 1);
                logger.cacheCount(BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_REGULAR_SCREEN_OFF, 1);
            }
        }
    }

    static void recordBatchScanRadioResultCount(int numRecords) {
        boolean isScreenOn;
        synchronized (sLock) {
            isScreenOn = sIsScreenOn;
        }
        MetricsLogger logger = MetricsLogger.getInstance();
        logger.cacheCount(BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_BATCH_BUNDLE, 1);
        logger.cacheCount(BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_BATCH, numRecords);
        if (isScreenOn) {
            logger.cacheCount(BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_BATCH_BUNDLE_SCREEN_ON, 1);
            logger.cacheCount(
                    BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_BATCH_SCREEN_ON, numRecords);
        } else {
            logger.cacheCount(BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_BATCH_BUNDLE_SCREEN_OFF, 1);
            logger.cacheCount(
                    BluetoothProtoEnums.LE_SCAN_RESULTS_COUNT_BATCH_SCREEN_OFF, numRecords);
        }
    }

+10 −10
Original line number Diff line number Diff line
@@ -187,10 +187,9 @@ public class GattService extends ProfileService {
            UUID.fromString("00001846-0000-1000-8000-00805F9B34FB"), // CSIS
    };

    /**
     * Example raw beacons captured from a Blue Charm BC011
     */
    private static final String[] TEST_MODE_BEACONS = new String[] {
    /** Example raw beacons captured from a Blue Charm BC011 */
    private static final String[] TEST_MODE_BEACONS =
            new String[] {
                "020106",
                "0201060303AAFE1716AAFE10EE01626C7565636861726D626561636F6E730009168020691E0EFE13551109426C7565436861726D5F313639363835000000",
                "0201060303AAFE1716AAFE00EE626C7565636861726D31000000000001000009168020691E0EFE13551109426C7565436861726D5F313639363835000000",
@@ -2719,6 +2718,7 @@ public class GattService extends ProfileService {
        // When in testing mode, ignore all real-world events
        if (isTestModeEnabled()) return;

        AppScanStats.recordBatchScanRadioResultCount(numRecords);
        onBatchScanReportsInternal(status, scannerId, reportType, numRecords, recordData);
    }

+3 −2
Original line number Diff line number Diff line
@@ -1365,14 +1365,15 @@ public class ScanManager {
                                    + client.scannerId + ")");
                    setOpportunisticScanClient(client);
                    removeScanFilters(client.scannerId);
                    client.stats.setScanTimeout(client.scannerId);

                } else {
                    Log.w(TAG,
                            "Moving filtered scan client to downgraded scan (scannerId "
                                    + client.scannerId + ")");
                    client.updateScanMode(ScanSettings.SCAN_MODE_LOW_POWER);
                    client.stats.setScanTimeout(client.scannerId);
                }
                client.stats.setScanTimeout(client.scannerId);
                client.stats.recordScanTimeoutCountMetrics();
            }

            // The scan should continue for background scans