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

Commit ee0a5030 authored by Ajay Panicker's avatar Ajay Panicker Committed by Android (Google) Code Review
Browse files

Merge "Add more statistics to scan logs" into nyc-dev

parents 79ff689d bf5458eb
Loading
Loading
Loading
Loading
+54 −22
Original line number Diff line number Diff line
@@ -57,6 +57,22 @@ import com.android.bluetooth.btservice.BluetoothProto;
     * on a per application basis.
     */
    class ScanStats {

        class LastScan {
            long durration;
            long timestamp;
            boolean opportunistic;
            boolean background;

            public LastScan(long timestamp, long durration,
                            boolean opportunistic, boolean background) {
                this.durration = durration;
                this.timestamp = timestamp;
                this.opportunistic = opportunistic;
                this.background = background;
            }
        }

        static final int NUM_SCAN_DURATIONS_KEPT = 5;

        String appName;
@@ -69,8 +85,7 @@ import com.android.bluetooth.btservice.BluetoothProto;
        long minScanTime = Long.MAX_VALUE;
        long maxScanTime = 0;
        long totalScanTime = 0;
        List<Long> lastScans = new ArrayList<Long>(NUM_SCAN_DURATIONS_KEPT + 1);
        List<Long> lastScanTimestamps = new ArrayList<Long>(NUM_SCAN_DURATIONS_KEPT + 1);
        List<LastScan> lastScans = new ArrayList<LastScan>(NUM_SCAN_DURATIONS_KEPT + 1);
        long startTime = 0;
        long stopTime = 0;

@@ -97,9 +112,11 @@ import com.android.bluetooth.btservice.BluetoothProto;
            scanEvent.setInitiator(appName);
            scanEvent.setEventTimeMillis(System.currentTimeMillis());

            lastScanTimestamps.add(startTime);
            if (lastScanTimestamps.size() > NUM_SCAN_DURATIONS_KEPT) {
                lastScanTimestamps.remove(0);
            lastScans.add(new LastScan(startTime, 0, false, false));

            if (settings != null) {
              isOpportunisticScan = settings.getScanMode() == ScanSettings.SCAN_MODE_OPPORTUNISTIC;
              isBackgroundScan = (settings.getCallbackType() & ScanSettings.CALLBACK_TYPE_FIRST_MATCH) != 0;
            }

            synchronized(mScanEvents) {
@@ -118,13 +135,18 @@ import com.android.bluetooth.btservice.BluetoothProto;
            stopTime = System.currentTimeMillis();
            long currTime = stopTime - startTime;

            isOpportunisticScan = false;
            isBackgroundScan = false;

            minScanTime = Math.min(currTime, minScanTime);
            maxScanTime = Math.max(currTime, maxScanTime);
            totalScanTime += currTime;
            lastScans.add(currTime);

            LastScan curr = lastScans.get(lastScans.size() - 1);
            curr.durration = currTime;
            curr.opportunistic = isOpportunisticScan;
            curr.background = isBackgroundScan;

            isOpportunisticScan = false;
            isBackgroundScan = false;

            if (lastScans.size() > NUM_SCAN_DURATIONS_KEPT) {
                lastScans.remove(0);
            }
@@ -176,19 +198,26 @@ import com.android.bluetooth.btservice.BluetoothProto;
            sb.append("  LE scans (started/stopped)         : " +
                      scansStarted + " / " +
                      scansStopped + "\n");
            sb.append("  Scan time in ms (min/max/avg)    : " +
            sb.append("  Scan time in ms (min/max/avg/total): " +
                      minScan + " / " +
                      maxScan + " / " +
                      avgScan + "\n");
                      avgScan + " / " +
                      totalScanTime + "\n");

            if (lastScans.size() != 0) {
                sb.append("  Last " + lastScans.size() +
                          " scans (timestamp - duration):\n");

                for (int i = 0; i < lastScans.size(); i++) {
                    Date timestamp = new Date(lastScanTimestamps.get(i));
                int lastScansSize = scansStopped < NUM_SCAN_DURATIONS_KEPT ?
                                    scansStopped : NUM_SCAN_DURATIONS_KEPT;
                sb.append("  Last " + lastScansSize +
                          " scans                       :\n");

                for (int i = 0; i < lastScansSize; i++) {
                    LastScan scan = lastScans.get(i);
                    Date timestamp = new Date(scan.timestamp);
                    sb.append("    " + dateFormat.format(timestamp) + " - ");
                    sb.append(lastScans.get(i) + "ms\n");
                    sb.append(scan.durration + "ms ");
                    if (scan.opportunistic) sb.append("Opp ");
                    if (scan.background) sb.append("Back");
                    sb.append("\n");
                }
            }

@@ -210,8 +239,9 @@ import com.android.bluetooth.btservice.BluetoothProto;
                Iterator<Connection> ii = connections.iterator();
                while(ii.hasNext()) {
                    Connection connection = ii.next();
                    long connectionTime = System.currentTimeMillis() - connection.startTime;
                    sb.append("    " + connection.connId + ": " +
                              connection.address + "\n");
                              connection.address + " " + connectionTime + "ms\n");
                }
            }
            sb.append("\n");
@@ -225,11 +255,13 @@ import com.android.bluetooth.btservice.BluetoothProto;
        int connId;
        String address;
        int appId;
        long startTime;

        Connection(int connId, String address,int appId) {
            this.connId = connId;
            this.address = address;
            this.appId = appId;
            this.startTime = System.currentTimeMillis();
        }
    }