diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-20 17:42:21 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-20 17:42:21 -0700 |
commit | ef1a92abe1bebe4feba4ba33cd0c7e25ee83fcc0 (patch) | |
tree | ba43c1b40c48a78ec881e493261eb216ea683df1 | |
parent | 890231f1d5912f5b71371e73f44df2db2e741b1b (diff) | |
parent | 3f7e35c2c7d3d7f08f50c1d93cd16b1f49354ccc (diff) | |
download | frameworks_base-ef1a92abe1bebe4feba4ba33cd0c7e25ee83fcc0.zip frameworks_base-ef1a92abe1bebe4feba4ba33cd0c7e25ee83fcc0.tar.gz frameworks_base-ef1a92abe1bebe4feba4ba33cd0c7e25ee83fcc0.tar.bz2 |
Merge change 7961 into donut
* changes:
Bluetooth at command tracking.
4 files changed, 87 insertions, 9 deletions
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index 528def5..e203fd5 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -508,6 +508,19 @@ public abstract class BatteryStats implements Parcelable { public abstract long getBatteryUptime(long curTime); /** + * @deprecated use getRadioDataUptime + */ + public long getRadioDataUptimeMs() { + return getRadioDataUptime() / 1000; + } + + /** + * Returns the time that the radio was on for data transfers. + * @return the uptime in microseconds while unplugged + */ + public abstract long getRadioDataUptime(); + + /** * Returns the current battery realtime in microseconds. * * @param curTime the amount of elapsed realtime in microseconds. @@ -1128,7 +1141,14 @@ public abstract class BatteryStats implements Parcelable { } if (!didOne) sb.append("No activity"); pw.println(sb.toString()); - + + sb.setLength(0); + sb.append(prefix); + sb.append(" Radio data uptime when unplugged: "); + sb.append(getRadioDataUptime() / 1000); + sb.append(" ms"); + pw.println(sb.toString()); + sb.setLength(0); sb.append(prefix); sb.append(" Wifi on: "); formatTimeMs(sb, wifiOnTime / 1000); diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index a03802d..a449e5f 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -16,6 +16,7 @@ package com.android.internal.os; +import android.bluetooth.BluetoothHeadset; import android.os.BatteryStats; import android.os.NetStat; import android.os.Parcel; @@ -128,7 +129,10 @@ public final class BatteryStatsImpl extends BatteryStats { boolean mBluetoothOn; StopwatchTimer mBluetoothOnTimer; - + + /** Bluetooth headset object */ + BluetoothHeadset mBtHeadset; + /** * These provide time bases that discount the time the device is plugged * in to power. @@ -160,6 +164,9 @@ public final class BatteryStatsImpl extends BatteryStats { private long mRadioDataUptime; private long mRadioDataStart; + private int mBluetoothPingCount; + private int mBluetoothPingStart = -1; + /* * Holds a SamplingTimer associated with each kernel wakelock name being tracked. */ @@ -920,14 +927,18 @@ public final class BatteryStatsImpl extends BatteryStats { dataTransfer[STATS_UNPLUGGED] = currentBytes; } - private long getCurrentRadioDataUptimeMs() { + /** + * Radio uptime in microseconds when transferring data. This value is very approximate. + * @return + */ + private long getCurrentRadioDataUptime() { try { File awakeTimeFile = new File("/sys/devices/virtual/net/rmnet0/awake_time_ms"); if (!awakeTimeFile.exists()) return 0; BufferedReader br = new BufferedReader(new FileReader(awakeTimeFile)); String line = br.readLine(); br.close(); - return Long.parseLong(line); + return Long.parseLong(line) * 1000; } catch (NumberFormatException nfe) { // Nothing } catch (IOException ioe) { @@ -936,14 +947,44 @@ public final class BatteryStatsImpl extends BatteryStats { return 0; } + /** + * @deprecated use getRadioDataUptime + */ public long getRadioDataUptimeMs() { + return getRadioDataUptime() / 1000; + } + + /** + * Returns the duration that the cell radio was up for data transfers. + */ + public long getRadioDataUptime() { if (mRadioDataStart == -1) { return mRadioDataUptime; } else { - return getCurrentRadioDataUptimeMs() - mRadioDataStart; + return getCurrentRadioDataUptime() - mRadioDataStart; } } + private int getCurrentBluetoothPingCount() { + if (mBtHeadset != null) { + return mBtHeadset.getBatteryUsageHint(); + } + return -1; + } + + public int getBluetoothPingCount() { + if (mBluetoothPingStart == -1) { + return mBluetoothPingCount; + } else if (mBtHeadset != null) { + return getCurrentBluetoothPingCount() - mBluetoothPingStart; + } + return -1; + } + + public void setBtHeadset(BluetoothHeadset headset) { + mBtHeadset = headset; + } + public void doUnplug(long batteryUptime, long batteryRealtime) { for (int iu = mUidStats.size() - 1; iu >= 0; iu--) { Uid u = mUidStats.valueAt(iu); @@ -961,8 +1002,11 @@ public final class BatteryStatsImpl extends BatteryStats { doDataUnplug(mTotalDataRx, NetStat.getTotalRxBytes()); doDataUnplug(mTotalDataTx, NetStat.getTotalTxBytes()); // Track radio awake time - mRadioDataStart = getCurrentRadioDataUptimeMs(); + mRadioDataStart = getCurrentRadioDataUptime(); mRadioDataUptime = 0; + // Track bt headset ping count + mBluetoothPingStart = getCurrentBluetoothPingCount(); + mBluetoothPingCount = 0; } public void doPlug(long batteryUptime, long batteryRealtime) { @@ -985,8 +1029,12 @@ public final class BatteryStatsImpl extends BatteryStats { doDataPlug(mTotalDataRx, NetStat.getTotalRxBytes()); doDataPlug(mTotalDataTx, NetStat.getTotalTxBytes()); // Track radio awake time - mRadioDataUptime = getRadioDataUptimeMs(); + mRadioDataUptime = getRadioDataUptime(); mRadioDataStart = -1; + + // Track bt headset ping count + mBluetoothPingCount = getBluetoothPingCount(); + mBluetoothPingStart = -1; } public void noteStartGps(int uid) { @@ -3335,6 +3383,9 @@ public final class BatteryStatsImpl extends BatteryStats { mRadioDataUptime = in.readLong(); mRadioDataStart = -1; + mBluetoothPingCount = in.readInt(); + mBluetoothPingStart = -1; + mKernelWakelockStats.clear(); int NKW = in.readInt(); for (int ikw = 0; ikw < NKW; ikw++) { @@ -3415,7 +3466,9 @@ public final class BatteryStatsImpl extends BatteryStats { out.writeLong(getTotalTcpBytesSent(STATS_UNPLUGGED)); // Write radio uptime for data - out.writeLong(getRadioDataUptimeMs()); + out.writeLong(getRadioDataUptime()); + + out.writeInt(getBluetoothPingCount()); out.writeInt(mKernelWakelockStats.size()); for (Map.Entry<String, SamplingTimer> ent : mKernelWakelockStats.entrySet()) { diff --git a/core/java/com/android/internal/os/PowerProfile.java b/core/java/com/android/internal/os/PowerProfile.java index 4a8d8b1..94f703a 100644 --- a/core/java/com/android/internal/os/PowerProfile.java +++ b/core/java/com/android/internal/os/PowerProfile.java @@ -87,6 +87,11 @@ public class PowerProfile { public static final String POWER_BLUETOOTH_ACTIVE = "bluetooth.active"; /** + * Power consumption when Bluetooth driver gets an AT command. + */ + public static final String POWER_BLUETOOTH_AT_CMD = "bluetooth.at"; + + /** * Power consumption when screen is on, not including the backlight power. */ public static final String POWER_SCREEN_ON = "screen.on"; diff --git a/services/java/com/android/server/am/BatteryStatsService.java b/services/java/com/android/server/am/BatteryStatsService.java index 39a1ee0..c834b34 100644 --- a/services/java/com/android/server/am/BatteryStatsService.java +++ b/services/java/com/android/server/am/BatteryStatsService.java @@ -41,7 +41,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub { final BatteryStatsImpl mStats; Context mContext; - + BatteryStatsService(String filename) { mStats = new BatteryStatsImpl(filename); } |