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

Commit 5c07523b authored by Ajay Panicker's avatar Ajay Panicker
Browse files

Add timestamps to last LE scan log

Ex:
  no.nordicsemi.android.mcp (Registered)
  LE scans (started/stopped)       : 5 / 4
  Scan time in ms (min/max/avg)    : 97 / 1476 / 897
  Last 4 scans (timestamp - duration):
    1970/02/13 21:10:19 - 1476ms
    1970/02/13 21:10:21 - 97ms
    1970/02/13 21:10:23 - 929ms
    1970/02/13 21:10:25 - 531ms
  Application ID                   : 5
  UUID                             : f77437a1-5e86-4e2d-8223-6193a095c7f5
  Current scan duration in ms      : 1452
  Connections: 0


Bug: 27294154
Change-Id: I66ba6b4bc2d45ced7d6414db007394a16a30956e
parent bcc88d63
Loading
Loading
Loading
Loading
+24 −11
Original line number Original line Diff line number Diff line
@@ -22,7 +22,10 @@ import android.os.IBinder.DeathRecipient;
import android.os.IInterface;
import android.os.IInterface;
import android.os.RemoteException;
import android.os.RemoteException;
import android.util.Log;
import android.util.Log;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.LinkedList;
@@ -43,6 +46,7 @@ import com.android.bluetooth.btservice.BluetoothProto;
/*package*/ class ContextMap<T> {
/*package*/ class ContextMap<T> {
    private static final String TAG = GattServiceConfig.TAG_PREFIX + "ContextMap";
    private static final String TAG = GattServiceConfig.TAG_PREFIX + "ContextMap";


    static final DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    static final int NUM_SCAN_EVENTS_KEPT = 20;
    static final int NUM_SCAN_EVENTS_KEPT = 20;
    ArrayList<BluetoothProto.ScanEvent> mScanEvents =
    ArrayList<BluetoothProto.ScanEvent> mScanEvents =
      new ArrayList<BluetoothProto.ScanEvent>(NUM_SCAN_EVENTS_KEPT);
      new ArrayList<BluetoothProto.ScanEvent>(NUM_SCAN_EVENTS_KEPT);
@@ -63,6 +67,7 @@ import com.android.bluetooth.btservice.BluetoothProto;
        long maxScanTime = 0;
        long maxScanTime = 0;
        long totalScanTime = 0;
        long totalScanTime = 0;
        List<Long> lastScans = new ArrayList<Long>(NUM_SCAN_DURATIONS_KEPT + 1);
        List<Long> lastScans = new ArrayList<Long>(NUM_SCAN_DURATIONS_KEPT + 1);
        List<Long> lastScanTimestamps = new ArrayList<Long>(NUM_SCAN_DURATIONS_KEPT + 1);
        long startTime = 0;
        long startTime = 0;
        long stopTime = 0;
        long stopTime = 0;


@@ -80,6 +85,12 @@ import com.android.bluetooth.btservice.BluetoothProto;
            scanEvent.setScanTechnologyType(BluetoothProto.ScanEvent.SCAN_TECH_TYPE_LE);
            scanEvent.setScanTechnologyType(BluetoothProto.ScanEvent.SCAN_TECH_TYPE_LE);
            scanEvent.setInitiator(appName);
            scanEvent.setInitiator(appName);
            scanEvent.setEventTimeMillis(System.currentTimeMillis());
            scanEvent.setEventTimeMillis(System.currentTimeMillis());

            lastScanTimestamps.add(startTime);
            if (lastScanTimestamps.size() > NUM_SCAN_DURATIONS_KEPT) {
                lastScanTimestamps.remove(0);
            }

            synchronized(mScanEvents) {
            synchronized(mScanEvents) {
                if(mScanEvents.size() == NUM_SCAN_EVENTS_KEPT)
                if(mScanEvents.size() == NUM_SCAN_EVENTS_KEPT)
                    mScanEvents.remove(0);
                    mScanEvents.remove(0);
@@ -454,9 +465,9 @@ import com.android.bluetooth.btservice.BluetoothProto;


        sb.append("  Entries: " + mScanStats.size() + "\n\n");
        sb.append("  Entries: " + mScanStats.size() + "\n\n");


        Iterator<Map.Entry<String,ScanStats>> i = mScanStats.entrySet().iterator();
        Iterator<Map.Entry<String,ScanStats>> it = mScanStats.entrySet().iterator();
        while (i.hasNext()) {
        while (it.hasNext()) {
            Map.Entry<String, ScanStats> entry = i.next();
            Map.Entry<String, ScanStats> entry = it.next();


            String name = entry.getKey();
            String name = entry.getKey();
            ScanStats scanStats = entry.getValue();
            ScanStats scanStats = entry.getValue();
@@ -486,7 +497,7 @@ import com.android.bluetooth.btservice.BluetoothProto;
                              scanStats.scansStarted;
                              scanStats.scansStarted;
            }
            }


            sb.append("  Application Name: " + name);
            sb.append("  " + name);
            if (scanStats.isRegistered) sb.append(" (Registered)");
            if (scanStats.isRegistered) sb.append(" (Registered)");
            sb.append("\n");
            sb.append("\n");


@@ -498,14 +509,16 @@ import com.android.bluetooth.btservice.BluetoothProto;
                      maxScanTime + " / " +
                      maxScanTime + " / " +
                      avgScanTime + "\n");
                      avgScanTime + "\n");


            sb.append("  Time since last scan ended in ms : " + lastScan + "\n");
            if (scanStats.lastScans.size() != 0) {

                sb.append("  Last " + scanStats.lastScans.size() +
                sb.append("  Last " + scanStats.lastScans.size() +
                      " scans in ms (oldest first): ");
                          " scans (timestamp - duration):\n");
            for (Long time : scanStats.lastScans) {

                sb.append(time + " ");
                for (int i = 0; i < scanStats.lastScans.size(); i++) {
                    Date timestamp = new Date(scanStats.lastScanTimestamps.get(i));
                    sb.append("    " + dateFormat.format(timestamp) + " - ");
                    sb.append(scanStats.lastScans.get(i) + "ms\n");
                }
            }
            }
            sb.append("\n");


            if (scanStats.isRegistered) {
            if (scanStats.isRegistered) {
                App appEntry = getByName(name);
                App appEntry = getByName(name);
@@ -515,7 +528,7 @@ import com.android.bluetooth.btservice.BluetoothProto;
                          appEntry.uuid + "\n");
                          appEntry.uuid + "\n");


                if (scanStats.isScanning) {
                if (scanStats.isScanning) {
                    sb.append("  Current scan duration            : " +
                    sb.append("  Current scan duration in ms      : " +
                              currScanTime + "\n");
                              currScanTime + "\n");
                }
                }