66
66
import android.telephony.CellSignalStrength;
67
67
import android.telephony.DataConnectionRealTimeInfo;
68
68
import android.telephony.ModemActivityInfo;
69
- import android.telephony.ModemActivityInfo.TransmitPower;
70
69
import android.telephony.ServiceState;
71
70
import android.telephony.SignalStrength;
72
71
import android.telephony.TelephonyManager;
@@ -7205,7 +7204,7 @@ public ControllerActivityCounterImpl getOrCreateBluetoothControllerActivityLocke
7205
7204
public ControllerActivityCounterImpl getOrCreateModemControllerActivityLocked() {
7206
7205
if (mModemControllerActivity == null) {
7207
7206
mModemControllerActivity = new ControllerActivityCounterImpl(mBsi.mOnBatteryTimeBase,
7208
- ModemActivityInfo.TX_POWER_LEVELS );
7207
+ ModemActivityInfo.getNumTxPowerLevels() );
7209
7208
}
7210
7209
return mModemControllerActivity;
7211
7210
}
@@ -8687,7 +8686,7 @@ void readFromParcelLocked(TimeBase timeBase, TimeBase screenOffTimeBase, Parcel
8687
8686
8688
8687
if (in.readInt() != 0) {
8689
8688
mModemControllerActivity = new ControllerActivityCounterImpl(mBsi.mOnBatteryTimeBase,
8690
- ModemActivityInfo.TX_POWER_LEVELS , in);
8689
+ ModemActivityInfo.getNumTxPowerLevels() , in);
8691
8690
} else {
8692
8691
mModemControllerActivity = null;
8693
8692
}
@@ -9953,7 +9952,7 @@ private BatteryStatsImpl(Clocks clocks, File systemDir, Handler handler,
9953
9952
mBluetoothActivity = new ControllerActivityCounterImpl(mOnBatteryTimeBase,
9954
9953
NUM_BT_TX_LEVELS);
9955
9954
mModemActivity = new ControllerActivityCounterImpl(mOnBatteryTimeBase,
9956
- ModemActivityInfo.TX_POWER_LEVELS );
9955
+ ModemActivityInfo.getNumTxPowerLevels() );
9957
9956
mMobileRadioActiveTimer = new StopwatchTimer(mClocks, null, -400, null, mOnBatteryTimeBase);
9958
9957
mMobileRadioActivePerAppTimer = new StopwatchTimer(mClocks, null, -401, null,
9959
9958
mOnBatteryTimeBase);
@@ -11131,26 +11130,7 @@ public void updateWifiState(@Nullable final WifiActivityEnergyInfo info) {
11131
11130
}
11132
11131
}
11133
11132
11134
- private ModemActivityInfo mLastModemActivityInfo =
11135
- new ModemActivityInfo(0, 0, 0, new int[0], 0);
11136
-
11137
- private ModemActivityInfo getDeltaModemActivityInfo(ModemActivityInfo activityInfo) {
11138
- if (activityInfo == null) {
11139
- return null;
11140
- }
11141
- int[] txTimeMs = new int[ModemActivityInfo.TX_POWER_LEVELS];
11142
- for (int i = 0; i < ModemActivityInfo.TX_POWER_LEVELS; i++) {
11143
- txTimeMs[i] = activityInfo.getTransmitPowerInfo().get(i).getTimeInMillis()
11144
- - mLastModemActivityInfo.getTransmitPowerInfo().get(i).getTimeInMillis();
11145
- }
11146
- ModemActivityInfo deltaInfo = new ModemActivityInfo(activityInfo.getTimestamp(),
11147
- activityInfo.getSleepTimeMillis() - mLastModemActivityInfo.getSleepTimeMillis(),
11148
- activityInfo.getIdleTimeMillis() - mLastModemActivityInfo.getIdleTimeMillis(),
11149
- txTimeMs,
11150
- activityInfo.getReceiveTimeMillis() - mLastModemActivityInfo.getReceiveTimeMillis());
11151
- mLastModemActivityInfo = activityInfo;
11152
- return deltaInfo;
11153
- }
11133
+ private ModemActivityInfo mLastModemActivityInfo = null;
11154
11134
11155
11135
/**
11156
11136
* Distribute Cell radio energy info and network traffic to apps.
@@ -11159,7 +11139,9 @@ public void updateMobileRadioState(@Nullable final ModemActivityInfo activityInf
11159
11139
if (DEBUG_ENERGY) {
11160
11140
Slog.d(TAG, "Updating mobile radio stats with " + activityInfo);
11161
11141
}
11162
- ModemActivityInfo deltaInfo = getDeltaModemActivityInfo(activityInfo);
11142
+ ModemActivityInfo deltaInfo = mLastModemActivityInfo == null ? activityInfo
11143
+ : mLastModemActivityInfo.getDelta(activityInfo);
11144
+ mLastModemActivityInfo = activityInfo;
11163
11145
11164
11146
// Add modem tx power to history.
11165
11147
addModemTxPowerToHistory(deltaInfo);
@@ -11191,10 +11173,9 @@ public void updateMobileRadioState(@Nullable final ModemActivityInfo activityInf
11191
11173
mModemActivity.getSleepTimeCounter().addCountLocked(
11192
11174
deltaInfo.getSleepTimeMillis());
11193
11175
mModemActivity.getRxTimeCounter().addCountLocked(deltaInfo.getReceiveTimeMillis());
11194
- for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS ; lvl++) {
11176
+ for (int lvl = 0; lvl < ModemActivityInfo.getNumTxPowerLevels() ; lvl++) {
11195
11177
mModemActivity.getTxTimeCounters()[lvl]
11196
- .addCountLocked(deltaInfo.getTransmitPowerInfo()
11197
- .get(lvl).getTimeInMillis());
11178
+ .addCountLocked(deltaInfo.getTransmitDurationMillisAtPowerLevel(lvl));
11198
11179
}
11199
11180
11200
11181
// POWER_MODEM_CONTROLLER_OPERATING_VOLTAGE is measured in mV, so convert to V.
@@ -11208,11 +11189,11 @@ public void updateMobileRadioState(@Nullable final ModemActivityInfo activityInf
11208
11189
mPowerProfile.getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_IDLE)
11209
11190
+ deltaInfo.getReceiveTimeMillis() *
11210
11191
mPowerProfile.getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_RX);
11211
- List<TransmitPower> txPowerInfo = deltaInfo.getTransmitPowerInfo();
11212
- for (int i = 0; i < Math.min(txPowerInfo.size(),
11192
+ for (int i = 0; i < Math.min(ModemActivityInfo.getNumTxPowerLevels(),
11213
11193
CellSignalStrength.getNumSignalStrengthLevels()); i++) {
11214
- energyUsed += txPowerInfo.get(i).getTimeInMillis() * mPowerProfile
11215
- .getAveragePower(PowerProfile.POWER_MODEM_CONTROLLER_TX, i);
11194
+ energyUsed += deltaInfo.getTransmitDurationMillisAtPowerLevel(i)
11195
+ * mPowerProfile.getAveragePower(
11196
+ PowerProfile.POWER_MODEM_CONTROLLER_TX, i);
11216
11197
}
11217
11198
11218
11199
// We store the power drain as mAms.
@@ -11307,10 +11288,10 @@ public void updateMobileRadioState(@Nullable final ModemActivityInfo activityInf
11307
11288
}
11308
11289
11309
11290
if (totalTxPackets > 0 && entry.txPackets > 0) {
11310
- for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) {
11311
- long txMs =
11312
- entry.txPackets * deltaInfo.getTransmitPowerInfo()
11313
- .get (lvl).getTimeInMillis( );
11291
+ for (int lvl = 0; lvl < ModemActivityInfo.getNumTxPowerLevels();
11292
+ lvl++) {
11293
+ long txMs = entry.txPackets
11294
+ * deltaInfo.getTransmitDurationMillisAtPowerLevel (lvl);
11314
11295
txMs /= totalTxPackets;
11315
11296
activityCounter.getTxTimeCounters()[lvl].addCountLocked(txMs);
11316
11297
}
@@ -11341,20 +11322,16 @@ private synchronized void addModemTxPowerToHistory(final ModemActivityInfo activ
11341
11322
if (activityInfo == null) {
11342
11323
return;
11343
11324
}
11344
- List<TransmitPower> txPowerInfo = activityInfo.getTransmitPowerInfo();
11345
- if (txPowerInfo == null || txPowerInfo.size() != ModemActivityInfo.TX_POWER_LEVELS) {
11346
- return;
11347
- }
11348
11325
final long elapsedRealtime = mClocks.elapsedRealtime();
11349
11326
final long uptime = mClocks.uptimeMillis();
11350
11327
int levelMaxTimeSpent = 0;
11351
- for (int i = 1; i < txPowerInfo.size (); i++) {
11352
- if (txPowerInfo.get(i).getTimeInMillis() > txPowerInfo.get(levelMaxTimeSpent )
11353
- .getTimeInMillis( )) {
11328
+ for (int i = 1; i < ModemActivityInfo.getNumTxPowerLevels (); i++) {
11329
+ if (activityInfo.getTransmitDurationMillisAtPowerLevel(i )
11330
+ > activityInfo.getTransmitDurationMillisAtPowerLevel(levelMaxTimeSpent )) {
11354
11331
levelMaxTimeSpent = i;
11355
11332
}
11356
11333
}
11357
- if (levelMaxTimeSpent == ModemActivityInfo.TX_POWER_LEVELS - 1) {
11334
+ if (levelMaxTimeSpent == ModemActivityInfo.getNumTxPowerLevels() - 1) {
11358
11335
mHistoryCur.states2 |= HistoryItem.STATE2_CELLULAR_HIGH_TX_POWER_FLAG;
11359
11336
addHistoryRecordLocked(elapsedRealtime, uptime);
11360
11337
}
@@ -12771,7 +12748,7 @@ public CellularBatteryStats getCellularBatteryStats() {
12771
12748
timeInRxSignalStrengthLevelMs[i]
12772
12749
= getPhoneSignalStrengthTime(i, rawRealTime, which) / 1000;
12773
12750
}
12774
- long[] txTimeMs = new long[Math.min(ModemActivityInfo.TX_POWER_LEVELS ,
12751
+ long[] txTimeMs = new long[Math.min(ModemActivityInfo.getNumTxPowerLevels() ,
12775
12752
counter.getTxTimeCounters().length)];
12776
12753
long totalTxTimeMs = 0;
12777
12754
for (int i = 0; i < txTimeMs.length; i++) {
@@ -14817,7 +14794,7 @@ void readFromParcelLocked(Parcel in) {
14817
14794
mBluetoothActivity = new ControllerActivityCounterImpl(mOnBatteryTimeBase,
14818
14795
NUM_BT_TX_LEVELS, in);
14819
14796
mModemActivity = new ControllerActivityCounterImpl(mOnBatteryTimeBase,
14820
- ModemActivityInfo.TX_POWER_LEVELS , in);
14797
+ ModemActivityInfo.getNumTxPowerLevels() , in);
14821
14798
mHasWifiReporting = in.readInt() != 0;
14822
14799
mHasBluetoothReporting = in.readInt() != 0;
14823
14800
mHasModemReporting = in.readInt() != 0;
0 commit comments