Record bytes transferred for bluetooth
Bug:26039657
Change-Id: Iec42459d12f4106d5733f55313e8544d58930285
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index bce38f4..9180506 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -378,6 +378,16 @@
public abstract long getWifiControllerActivity(int type, int which);
/**
+ * Returns the time in milliseconds that this app kept the Bluetooth controller in the
+ * specified state <code>type</code>.
+ * @param type one of {@link #CONTROLLER_IDLE_TIME}, {@link #CONTROLLER_RX_TIME}, or
+ * {@link #CONTROLLER_TX_TIME}.
+ * @param which one of {@link #STATS_CURRENT}, {@link #STATS_SINCE_CHARGED}, or
+ * {@link #STATS_SINCE_UNPLUGGED}.
+ */
+ public abstract long getBluetoothControllerActivity(int type, int which);
+
+ /**
* {@hide}
*/
public abstract int getUid();
@@ -2014,7 +2024,9 @@
public static final int NETWORK_MOBILE_TX_DATA = 1;
public static final int NETWORK_WIFI_RX_DATA = 2;
public static final int NETWORK_WIFI_TX_DATA = 3;
- public static final int NUM_NETWORK_ACTIVITY_TYPES = NETWORK_WIFI_TX_DATA + 1;
+ public static final int NETWORK_BT_RX_DATA = 4;
+ public static final int NETWORK_BT_TX_DATA = 5;
+ public static final int NUM_NETWORK_ACTIVITY_TYPES = NETWORK_BT_TX_DATA + 1;
public abstract long getNetworkActivityBytes(int type, int which);
public abstract long getNetworkActivityPackets(int type, int which);
@@ -3284,6 +3296,8 @@
final long mobileTxTotalPackets = getNetworkActivityPackets(NETWORK_MOBILE_TX_DATA, which);
final long wifiRxTotalPackets = getNetworkActivityPackets(NETWORK_WIFI_RX_DATA, which);
final long wifiTxTotalPackets = getNetworkActivityPackets(NETWORK_WIFI_TX_DATA, which);
+ final long btRxTotalBytes = getNetworkActivityBytes(NETWORK_BT_RX_DATA, which);
+ final long btTxTotalBytes = getNetworkActivityBytes(NETWORK_BT_TX_DATA, which);
if (fullWakeLockTimeTotalMicros != 0) {
sb.setLength(0);
@@ -3517,6 +3531,10 @@
sb.append("mAh");
pw.println(sb.toString());
+ pw.print(prefix);
+ pw.print(" Bluetooth total received: "); pw.print(formatBytesLocked(btRxTotalBytes));
+ pw.print(", sent: "); pw.println(formatBytesLocked(btTxTotalBytes));
+
final long bluetoothIdleTimeMs =
getBluetoothControllerActivity(CONTROLLER_IDLE_TIME, which);
final long bluetoothRxTimeMs = getBluetoothControllerActivity(CONTROLLER_RX_TIME, which);
@@ -3838,12 +3856,17 @@
final long mobileTxBytes = u.getNetworkActivityBytes(NETWORK_MOBILE_TX_DATA, which);
final long wifiRxBytes = u.getNetworkActivityBytes(NETWORK_WIFI_RX_DATA, which);
final long wifiTxBytes = u.getNetworkActivityBytes(NETWORK_WIFI_TX_DATA, which);
+ final long btRxBytes = u.getNetworkActivityBytes(NETWORK_BT_RX_DATA, which);
+ final long btTxBytes = u.getNetworkActivityBytes(NETWORK_BT_TX_DATA, which);
+
final long mobileRxPackets = u.getNetworkActivityPackets(NETWORK_MOBILE_RX_DATA, which);
final long mobileTxPackets = u.getNetworkActivityPackets(NETWORK_MOBILE_TX_DATA, which);
- final long uidMobileActiveTime = u.getMobileRadioActiveTime(which);
- final int uidMobileActiveCount = u.getMobileRadioActiveCount(which);
final long wifiRxPackets = u.getNetworkActivityPackets(NETWORK_WIFI_RX_DATA, which);
final long wifiTxPackets = u.getNetworkActivityPackets(NETWORK_WIFI_TX_DATA, which);
+
+ final long uidMobileActiveTime = u.getMobileRadioActiveTime(which);
+ final int uidMobileActiveCount = u.getMobileRadioActiveCount(which);
+
final long fullWifiLockOnTime = u.getFullWifiLockTime(rawRealtime, which);
final long wifiScanTime = u.getWifiScanTime(rawRealtime, which);
final int wifiScanCount = u.getWifiScanCount(which);
@@ -3923,6 +3946,37 @@
pw.println(sb.toString());
}
+ if (btRxBytes > 0 || btTxBytes > 0) {
+ pw.print(prefix); pw.print(" Bluetooth network: ");
+ pw.print(formatBytesLocked(btRxBytes)); pw.print(" received, ");
+ pw.print(formatBytesLocked(btTxBytes));
+ pw.println(" sent");
+ }
+
+ final long uidBtIdleTimeMs = u.getBluetoothControllerActivity(CONTROLLER_IDLE_TIME,
+ which);
+ final long uidBtRxTimeMs = u.getBluetoothControllerActivity(CONTROLLER_RX_TIME, which);
+ final long uidBtTxTimeMs = u.getBluetoothControllerActivity(CONTROLLER_TX_TIME, which);
+ final long uidBtTotalTimeMs = uidBtIdleTimeMs + uidBtRxTimeMs + uidBtTxTimeMs;
+ if (uidBtTotalTimeMs > 0) {
+ sb.setLength(0);
+ sb.append(prefix).append(" Bluetooth Idle time: ");
+ formatTimeMs(sb, uidBtIdleTimeMs);
+ sb.append("(").append(formatRatioLocked(uidBtIdleTimeMs, uidBtTotalTimeMs))
+ .append(")\n");
+
+ sb.append(prefix).append(" Bluetooth Rx time: ");
+ formatTimeMs(sb, uidBtRxTimeMs);
+ sb.append("(").append(formatRatioLocked(uidBtRxTimeMs, uidBtTotalTimeMs))
+ .append(")\n");
+
+ sb.append(prefix).append(" Bluetooth Tx time: ");
+ formatTimeMs(sb, uidBtTxTimeMs);
+ sb.append("(").append(formatRatioLocked(uidBtTxTimeMs, uidBtTotalTimeMs))
+ .append(")");
+ pw.println(sb.toString());
+ }
+
if (u.hasUserActivity()) {
boolean hasData = false;
for (int i=0; i<Uid.NUM_USER_ACTIVITY_TYPES; i++) {