Loading services/core/java/com/android/server/am/BatteryStatsService.java +1 −1 Original line number Diff line number Diff line Loading @@ -194,7 +194,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub @Override public MeasuredEnergyArray getEnergyConsumptionData() { final EnergyConsumerResult[] results = mPowerStatsHALWrapper.getEnergyConsumed(); final EnergyConsumerResult[] results = mPowerStatsHALWrapper.getEnergyConsumed(new int[0]); if (results == null) return null; final int size = results.length; final int[] subsystems = new int[size]; Loading services/core/java/com/android/server/powerstats/PowerStatsHALWrapper.java +89 −17 Original line number Diff line number Diff line Loading @@ -37,12 +37,42 @@ public final class PowerStatsHALWrapper { * IPowerStatsHALWrapper defines the interface to the PowerStatsHAL. */ public interface IPowerStatsHALWrapper { /** * Returns information related to all supported PowerEntity(s) for which state residency * data is available. * * A PowerEntity is defined as a platform subsystem, peripheral, or power domain that * impacts the total device power consumption. * * @return List of information on each PowerEntity. */ android.hardware.power.stats.PowerEntityInfo[] getPowerEntityInfo(); /** * Reports the accumulated state residency for each requested PowerEntity. * * Each PowerEntity may reside in one of multiple states. It may also transition from one * state to another. StateResidency is defined as an accumulation of time that a * PowerEntity resided in each of its possible states, the number of times that each state * was entered, and a timestamp corresponding to the last time that state was entered. * * Data is accumulated starting at device boot. * * @param powerEntityIds List of IDs of PowerEntities for which data is requested. Passing * an empty list will return state residency for all available * PowerEntities. ID of each PowerEntity is contained in * PowerEntityInfo. * * @return StateResidency since boot for each requested PowerEntity */ android.hardware.power.stats.StateResidencyResult[] getStateResidency(int[] powerEntityIds); /** * Returns the energy consumer IDs for all available energy consumers (power models) on the * device. Examples of subsystems for which energy consumer results (power models) * may be available are GPS, display, wifi, etc. The default list of energy * consumers can be found in the PowerStats HAL definition (EnergyConsumerId.aidl). * The availability of energy consumer IDs is hardware dependent. * device. Examples of subsystems for which energy consumer results (power models) may be * available are GPS, display, wifi, etc. The default list of energy consumers can be * found in the PowerStats HAL definition (EnergyConsumerId.aidl). The availability of * energy consumer IDs is hardware dependent. * * @return List of EnergyConsumerIds all available energy consumers. */ Loading @@ -50,14 +80,19 @@ public final class PowerStatsHALWrapper { /** * Returns the energy consumer result for all available energy consumers (power models). * Available consumers can be retrieved by calling getEnergyConsumerInfo(). The * subsystem corresponding to the energy consumer result is defined by the energy * consumer ID. * Available consumers can be retrieved by calling getEnergyConsumerInfo(). The subsystem * corresponding to the energy consumer result is defined by the energy consumer ID. * * @param energyConsumerIds Array of energy consumer IDs for which energy consumed is being * requested. Energy consumers available on the device can be * queried by calling getEnergyConsumerInfo(). Passing an empty * array will return results for all energy consumers. * * @return List of EnergyConsumerResult objects containing energy consumer results for all * available energy consumers (power models). */ android.hardware.power.stats.EnergyConsumerResult[] getEnergyConsumed(); android.hardware.power.stats.EnergyConsumerResult[] getEnergyConsumed( int[] energyConsumerIds); /** * Returns channel info for all available energy meters. Loading @@ -69,17 +104,21 @@ public final class PowerStatsHALWrapper { /** * Returns energy measurements for all available energy meters. Available channels can be * retrieved by calling getEnergyMeterInfo(). Energy measurements and channel info * can be linked through the channelId field. * retrieved by calling getEnergyMeterInfo(). Energy measurements and channel info can be * linked through the channelId field. * * @param channelIds Array of channel IDs for which energy measurements are being requested. * Channel IDs available on the device can be queried by calling * getEnergyMeterInfo(). Passing an empty array will return energy * measurements for all channels. * * @return List of EnergyMeasurement objects containing energy measurements for all * available energy meters. */ android.hardware.power.stats.EnergyMeasurement[] readEnergyMeters(); android.hardware.power.stats.EnergyMeasurement[] readEnergyMeters(int[] channelIds); /** * Returns boolean indicating if connection to power stats HAL was * established. * Returns boolean indicating if connection to power stats HAL was established. * * @return true if connection to power stats HAL was correctly established. */ Loading @@ -94,6 +133,38 @@ public final class PowerStatsHALWrapper { public static final class PowerStatsHALWrapperImpl implements IPowerStatsHALWrapper { private static Supplier<IPowerStats> sVintfPowerStats; @Override public android.hardware.power.stats.PowerEntityInfo[] getPowerEntityInfo() { android.hardware.power.stats.PowerEntityInfo[] powerEntityInfoHAL = null; if (sVintfPowerStats != null) { try { powerEntityInfoHAL = sVintfPowerStats.get().getPowerEntityInfo(); } catch (RemoteException e) { Slog.e(TAG, "Failed to get power entity info from PowerStats HAL"); } } return powerEntityInfoHAL; } @Override public android.hardware.power.stats.StateResidencyResult[] getStateResidency( int[] powerEntityIds) { android.hardware.power.stats.StateResidencyResult[] stateResidencyResultHAL = null; if (sVintfPowerStats != null) { try { stateResidencyResultHAL = sVintfPowerStats.get().getStateResidency(powerEntityIds); } catch (RemoteException e) { Slog.e(TAG, "Failed to get state residency from PowerStats HAL"); } } return stateResidencyResultHAL; } @Override public int[] getEnergyConsumerInfo() { int[] energyConsumerInfoHAL = null; Loading @@ -110,13 +181,14 @@ public final class PowerStatsHALWrapper { } @Override public android.hardware.power.stats.EnergyConsumerResult[] getEnergyConsumed() { public android.hardware.power.stats.EnergyConsumerResult[] getEnergyConsumed( int[] energyConsumerIds) { android.hardware.power.stats.EnergyConsumerResult[] energyConsumedHAL = null; if (sVintfPowerStats != null) { try { energyConsumedHAL = sVintfPowerStats.get().getEnergyConsumed(new int[0]); sVintfPowerStats.get().getEnergyConsumed(energyConsumerIds); } catch (RemoteException e) { Slog.e(TAG, "Failed to get energy consumer results from PowerStats HAL"); } Loading @@ -141,13 +213,13 @@ public final class PowerStatsHALWrapper { } @Override public android.hardware.power.stats.EnergyMeasurement[] readEnergyMeters() { public android.hardware.power.stats.EnergyMeasurement[] readEnergyMeters(int[] channelIds) { android.hardware.power.stats.EnergyMeasurement[] energyMeasurementHAL = null; if (sVintfPowerStats != null) { try { energyMeasurementHAL = sVintfPowerStats.get().readEnergyMeters(new int[0]); sVintfPowerStats.get().readEnergyMeters(channelIds); } catch (RemoteException e) { Slog.e(TAG, "Failed to get energy measurements from PowerStats HAL"); } Loading services/core/java/com/android/server/powerstats/PowerStatsLogger.java +3 −2 Original line number Diff line number Diff line Loading @@ -61,14 +61,15 @@ public final class PowerStatsLogger extends Handler { if (DEBUG) Slog.d(TAG, "Logging to data storage"); // Log power meter data. EnergyMeasurement[] energyMeasurements = mPowerStatsHALWrapper.readEnergyMeters(); EnergyMeasurement[] energyMeasurements = mPowerStatsHALWrapper.readEnergyMeters(new int[0]); mPowerStatsMeterStorage.write( EnergyMeasurementUtils.getProtoBytes(energyMeasurements)); if (DEBUG) EnergyMeasurementUtils.print(energyMeasurements); // Log power model data. EnergyConsumerResult[] energyConsumerResults = mPowerStatsHALWrapper.getEnergyConsumed(); mPowerStatsHALWrapper.getEnergyConsumed(new int[0]); mPowerStatsModelStorage.write( EnergyConsumerResultUtils.getProtoBytes(energyConsumerResults)); if (DEBUG) EnergyConsumerResultUtils.print(energyConsumerResults); Loading services/core/java/com/android/server/powerstats/PowerStatsService.java +6 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.powerstats; import android.annotation.Nullable; import android.content.Context; import android.hardware.power.stats.ChannelInfo; import android.hardware.power.stats.PowerEntityInfo; import android.os.Binder; import android.os.Environment; import android.os.UserHandle; Loading @@ -31,6 +32,7 @@ import com.android.server.powerstats.PowerStatsHALWrapper.IPowerStatsHALWrapper; import com.android.server.powerstats.PowerStatsHALWrapper.PowerStatsHALWrapperImpl; import com.android.server.powerstats.ProtoStreamUtils.ChannelInfoUtils; import com.android.server.powerstats.ProtoStreamUtils.EnergyConsumerIdUtils; import com.android.server.powerstats.ProtoStreamUtils.PowerEntityInfoUtils; import java.io.File; import java.io.FileDescriptor; Loading Loading @@ -110,6 +112,10 @@ public class PowerStatsService extends SystemService { mPowerStatsLogger.writeMeterDataToFile(fd); } } else if (args.length == 0) { pw.println("PowerStatsService dumpsys: available PowerEntityInfos"); PowerEntityInfo[] powerEntityInfo = mPowerStatsHALWrapper.getPowerEntityInfo(); PowerEntityInfoUtils.dumpsys(powerEntityInfo, pw); pw.println("PowerStatsService dumpsys: available ChannelInfos"); ChannelInfo[] channelInfo = mPowerStatsHALWrapper.getEnergyMeterInfo(); ChannelInfoUtils.dumpsys(channelInfo, pw); Loading services/core/java/com/android/server/powerstats/ProtoStreamUtils.java +56 −12 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.server.powerstats; import android.hardware.power.stats.ChannelInfo; import android.hardware.power.stats.EnergyConsumerResult; import android.hardware.power.stats.EnergyMeasurement; import android.hardware.power.stats.PowerEntityInfo; import android.hardware.power.stats.StateResidencyResult; import android.util.Slog; import android.util.proto.ProtoInputStream; import android.util.proto.ProtoOutputStream; Loading @@ -42,6 +44,48 @@ import java.util.List; public class ProtoStreamUtils { private static final String TAG = ProtoStreamUtils.class.getSimpleName(); static class PowerEntityInfoUtils { public static void print(PowerEntityInfo[] powerEntityInfo) { for (int i = 0; i < powerEntityInfo.length; i++) { Slog.d(TAG, "PowerEntityId: " + powerEntityInfo[i].powerEntityId + ", PowerEntityName: " + powerEntityInfo[i].powerEntityName); for (int j = 0; j < powerEntityInfo[i].states.length; j++) { Slog.d(TAG, " StateId: " + powerEntityInfo[i].states[j].stateId + ", StateName: " + powerEntityInfo[i].states[j].stateName); } } } public static void dumpsys(PowerEntityInfo[] powerEntityInfo, PrintWriter pw) { for (int i = 0; i < powerEntityInfo.length; i++) { pw.println("PowerEntityId: " + powerEntityInfo[i].powerEntityId + ", PowerEntityName: " + powerEntityInfo[i].powerEntityName); for (int j = 0; j < powerEntityInfo[i].states.length; j++) { pw.println(" StateId: " + powerEntityInfo[i].states[j].stateId + ", StateName: " + powerEntityInfo[i].states[j].stateName); } } } } static class StateResidencyResultUtils { public static void print(StateResidencyResult[] stateResidencyResult) { for (int i = 0; i < stateResidencyResult.length; i++) { Slog.d(TAG, "PowerEntityId: " + stateResidencyResult[i].powerEntityId); for (int j = 0; j < stateResidencyResult[i].stateResidencyData.length; j++) { Slog.d(TAG, " StateId: " + stateResidencyResult[i].stateResidencyData[j].stateId + ", TotalTimeInStateMs: " + stateResidencyResult[i].stateResidencyData[j].totalTimeInStateMs + ", TotalStateEntryCount: " + stateResidencyResult[i].stateResidencyData[j].totalStateEntryCount + ", LastEntryTimestampMs: " + stateResidencyResult[i].stateResidencyData[j].lastEntryTimestampMs); } } } } static class ChannelInfoUtils { public static void packProtoMessage(ChannelInfo[] channelInfo, ProtoOutputStream pos) { long token; Loading @@ -57,15 +101,15 @@ public class ProtoStreamUtils { public static void print(ChannelInfo[] channelInfo) { for (int i = 0; i < channelInfo.length; i++) { Slog.d(TAG, "ChannelId = " + channelInfo[i].channelId + ", ChannelName = " + channelInfo[i].channelName); Slog.d(TAG, "ChannelId: " + channelInfo[i].channelId + ", ChannelName: " + channelInfo[i].channelName); } } public static void dumpsys(ChannelInfo[] channelInfo, PrintWriter pw) { for (int i = 0; i < channelInfo.length; i++) { pw.println("ChannelId = " + channelInfo[i].channelId + ", ChannelName = " + channelInfo[i].channelName); pw.println("ChannelId: " + channelInfo[i].channelId + ", ChannelName: " + channelInfo[i].channelName); } } } Loading Loading @@ -157,9 +201,9 @@ public class ProtoStreamUtils { public static void print(EnergyMeasurement[] energyMeasurement) { for (int i = 0; i < energyMeasurement.length; i++) { Slog.d(TAG, "ChannelId = " + energyMeasurement[i].channelId + ", Timestamp (ms) = " + energyMeasurement[i].timestampMs + ", Energy (uWs) = " + energyMeasurement[i].energyUWs); Slog.d(TAG, "ChannelId: " + energyMeasurement[i].channelId + ", Timestamp (ms): " + energyMeasurement[i].timestampMs + ", Energy (uWs): " + energyMeasurement[i].energyUWs); } } } Loading @@ -177,13 +221,13 @@ public class ProtoStreamUtils { public static void print(int[] energyConsumerId) { for (int i = 0; i < energyConsumerId.length; i++) { Slog.d(TAG, "EnergyConsumerId = " + energyConsumerId[i]); Slog.d(TAG, "EnergyConsumerId: " + energyConsumerId[i]); } } public static void dumpsys(int[] energyConsumerId, PrintWriter pw) { for (int i = 0; i < energyConsumerId.length; i++) { pw.println("EnergyConsumerId = " + energyConsumerId[i]); pw.println("EnergyConsumerId: " + energyConsumerId[i]); } } } Loading Loading @@ -278,9 +322,9 @@ public class ProtoStreamUtils { public static void print(EnergyConsumerResult[] energyConsumerResult) { for (int i = 0; i < energyConsumerResult.length; i++) { Slog.d(TAG, "EnergyConsumerId = " + energyConsumerResult[i].energyConsumerId + ", Timestamp (ms) = " + energyConsumerResult[i].timestampMs + ", Energy (uWs) = " + energyConsumerResult[i].energyUWs); Slog.d(TAG, "EnergyConsumerId: " + energyConsumerResult[i].energyConsumerId + ", Timestamp (ms): " + energyConsumerResult[i].timestampMs + ", Energy (uWs): " + energyConsumerResult[i].energyUWs); } } } Loading Loading
services/core/java/com/android/server/am/BatteryStatsService.java +1 −1 Original line number Diff line number Diff line Loading @@ -194,7 +194,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub @Override public MeasuredEnergyArray getEnergyConsumptionData() { final EnergyConsumerResult[] results = mPowerStatsHALWrapper.getEnergyConsumed(); final EnergyConsumerResult[] results = mPowerStatsHALWrapper.getEnergyConsumed(new int[0]); if (results == null) return null; final int size = results.length; final int[] subsystems = new int[size]; Loading
services/core/java/com/android/server/powerstats/PowerStatsHALWrapper.java +89 −17 Original line number Diff line number Diff line Loading @@ -37,12 +37,42 @@ public final class PowerStatsHALWrapper { * IPowerStatsHALWrapper defines the interface to the PowerStatsHAL. */ public interface IPowerStatsHALWrapper { /** * Returns information related to all supported PowerEntity(s) for which state residency * data is available. * * A PowerEntity is defined as a platform subsystem, peripheral, or power domain that * impacts the total device power consumption. * * @return List of information on each PowerEntity. */ android.hardware.power.stats.PowerEntityInfo[] getPowerEntityInfo(); /** * Reports the accumulated state residency for each requested PowerEntity. * * Each PowerEntity may reside in one of multiple states. It may also transition from one * state to another. StateResidency is defined as an accumulation of time that a * PowerEntity resided in each of its possible states, the number of times that each state * was entered, and a timestamp corresponding to the last time that state was entered. * * Data is accumulated starting at device boot. * * @param powerEntityIds List of IDs of PowerEntities for which data is requested. Passing * an empty list will return state residency for all available * PowerEntities. ID of each PowerEntity is contained in * PowerEntityInfo. * * @return StateResidency since boot for each requested PowerEntity */ android.hardware.power.stats.StateResidencyResult[] getStateResidency(int[] powerEntityIds); /** * Returns the energy consumer IDs for all available energy consumers (power models) on the * device. Examples of subsystems for which energy consumer results (power models) * may be available are GPS, display, wifi, etc. The default list of energy * consumers can be found in the PowerStats HAL definition (EnergyConsumerId.aidl). * The availability of energy consumer IDs is hardware dependent. * device. Examples of subsystems for which energy consumer results (power models) may be * available are GPS, display, wifi, etc. The default list of energy consumers can be * found in the PowerStats HAL definition (EnergyConsumerId.aidl). The availability of * energy consumer IDs is hardware dependent. * * @return List of EnergyConsumerIds all available energy consumers. */ Loading @@ -50,14 +80,19 @@ public final class PowerStatsHALWrapper { /** * Returns the energy consumer result for all available energy consumers (power models). * Available consumers can be retrieved by calling getEnergyConsumerInfo(). The * subsystem corresponding to the energy consumer result is defined by the energy * consumer ID. * Available consumers can be retrieved by calling getEnergyConsumerInfo(). The subsystem * corresponding to the energy consumer result is defined by the energy consumer ID. * * @param energyConsumerIds Array of energy consumer IDs for which energy consumed is being * requested. Energy consumers available on the device can be * queried by calling getEnergyConsumerInfo(). Passing an empty * array will return results for all energy consumers. * * @return List of EnergyConsumerResult objects containing energy consumer results for all * available energy consumers (power models). */ android.hardware.power.stats.EnergyConsumerResult[] getEnergyConsumed(); android.hardware.power.stats.EnergyConsumerResult[] getEnergyConsumed( int[] energyConsumerIds); /** * Returns channel info for all available energy meters. Loading @@ -69,17 +104,21 @@ public final class PowerStatsHALWrapper { /** * Returns energy measurements for all available energy meters. Available channels can be * retrieved by calling getEnergyMeterInfo(). Energy measurements and channel info * can be linked through the channelId field. * retrieved by calling getEnergyMeterInfo(). Energy measurements and channel info can be * linked through the channelId field. * * @param channelIds Array of channel IDs for which energy measurements are being requested. * Channel IDs available on the device can be queried by calling * getEnergyMeterInfo(). Passing an empty array will return energy * measurements for all channels. * * @return List of EnergyMeasurement objects containing energy measurements for all * available energy meters. */ android.hardware.power.stats.EnergyMeasurement[] readEnergyMeters(); android.hardware.power.stats.EnergyMeasurement[] readEnergyMeters(int[] channelIds); /** * Returns boolean indicating if connection to power stats HAL was * established. * Returns boolean indicating if connection to power stats HAL was established. * * @return true if connection to power stats HAL was correctly established. */ Loading @@ -94,6 +133,38 @@ public final class PowerStatsHALWrapper { public static final class PowerStatsHALWrapperImpl implements IPowerStatsHALWrapper { private static Supplier<IPowerStats> sVintfPowerStats; @Override public android.hardware.power.stats.PowerEntityInfo[] getPowerEntityInfo() { android.hardware.power.stats.PowerEntityInfo[] powerEntityInfoHAL = null; if (sVintfPowerStats != null) { try { powerEntityInfoHAL = sVintfPowerStats.get().getPowerEntityInfo(); } catch (RemoteException e) { Slog.e(TAG, "Failed to get power entity info from PowerStats HAL"); } } return powerEntityInfoHAL; } @Override public android.hardware.power.stats.StateResidencyResult[] getStateResidency( int[] powerEntityIds) { android.hardware.power.stats.StateResidencyResult[] stateResidencyResultHAL = null; if (sVintfPowerStats != null) { try { stateResidencyResultHAL = sVintfPowerStats.get().getStateResidency(powerEntityIds); } catch (RemoteException e) { Slog.e(TAG, "Failed to get state residency from PowerStats HAL"); } } return stateResidencyResultHAL; } @Override public int[] getEnergyConsumerInfo() { int[] energyConsumerInfoHAL = null; Loading @@ -110,13 +181,14 @@ public final class PowerStatsHALWrapper { } @Override public android.hardware.power.stats.EnergyConsumerResult[] getEnergyConsumed() { public android.hardware.power.stats.EnergyConsumerResult[] getEnergyConsumed( int[] energyConsumerIds) { android.hardware.power.stats.EnergyConsumerResult[] energyConsumedHAL = null; if (sVintfPowerStats != null) { try { energyConsumedHAL = sVintfPowerStats.get().getEnergyConsumed(new int[0]); sVintfPowerStats.get().getEnergyConsumed(energyConsumerIds); } catch (RemoteException e) { Slog.e(TAG, "Failed to get energy consumer results from PowerStats HAL"); } Loading @@ -141,13 +213,13 @@ public final class PowerStatsHALWrapper { } @Override public android.hardware.power.stats.EnergyMeasurement[] readEnergyMeters() { public android.hardware.power.stats.EnergyMeasurement[] readEnergyMeters(int[] channelIds) { android.hardware.power.stats.EnergyMeasurement[] energyMeasurementHAL = null; if (sVintfPowerStats != null) { try { energyMeasurementHAL = sVintfPowerStats.get().readEnergyMeters(new int[0]); sVintfPowerStats.get().readEnergyMeters(channelIds); } catch (RemoteException e) { Slog.e(TAG, "Failed to get energy measurements from PowerStats HAL"); } Loading
services/core/java/com/android/server/powerstats/PowerStatsLogger.java +3 −2 Original line number Diff line number Diff line Loading @@ -61,14 +61,15 @@ public final class PowerStatsLogger extends Handler { if (DEBUG) Slog.d(TAG, "Logging to data storage"); // Log power meter data. EnergyMeasurement[] energyMeasurements = mPowerStatsHALWrapper.readEnergyMeters(); EnergyMeasurement[] energyMeasurements = mPowerStatsHALWrapper.readEnergyMeters(new int[0]); mPowerStatsMeterStorage.write( EnergyMeasurementUtils.getProtoBytes(energyMeasurements)); if (DEBUG) EnergyMeasurementUtils.print(energyMeasurements); // Log power model data. EnergyConsumerResult[] energyConsumerResults = mPowerStatsHALWrapper.getEnergyConsumed(); mPowerStatsHALWrapper.getEnergyConsumed(new int[0]); mPowerStatsModelStorage.write( EnergyConsumerResultUtils.getProtoBytes(energyConsumerResults)); if (DEBUG) EnergyConsumerResultUtils.print(energyConsumerResults); Loading
services/core/java/com/android/server/powerstats/PowerStatsService.java +6 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.powerstats; import android.annotation.Nullable; import android.content.Context; import android.hardware.power.stats.ChannelInfo; import android.hardware.power.stats.PowerEntityInfo; import android.os.Binder; import android.os.Environment; import android.os.UserHandle; Loading @@ -31,6 +32,7 @@ import com.android.server.powerstats.PowerStatsHALWrapper.IPowerStatsHALWrapper; import com.android.server.powerstats.PowerStatsHALWrapper.PowerStatsHALWrapperImpl; import com.android.server.powerstats.ProtoStreamUtils.ChannelInfoUtils; import com.android.server.powerstats.ProtoStreamUtils.EnergyConsumerIdUtils; import com.android.server.powerstats.ProtoStreamUtils.PowerEntityInfoUtils; import java.io.File; import java.io.FileDescriptor; Loading Loading @@ -110,6 +112,10 @@ public class PowerStatsService extends SystemService { mPowerStatsLogger.writeMeterDataToFile(fd); } } else if (args.length == 0) { pw.println("PowerStatsService dumpsys: available PowerEntityInfos"); PowerEntityInfo[] powerEntityInfo = mPowerStatsHALWrapper.getPowerEntityInfo(); PowerEntityInfoUtils.dumpsys(powerEntityInfo, pw); pw.println("PowerStatsService dumpsys: available ChannelInfos"); ChannelInfo[] channelInfo = mPowerStatsHALWrapper.getEnergyMeterInfo(); ChannelInfoUtils.dumpsys(channelInfo, pw); Loading
services/core/java/com/android/server/powerstats/ProtoStreamUtils.java +56 −12 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.server.powerstats; import android.hardware.power.stats.ChannelInfo; import android.hardware.power.stats.EnergyConsumerResult; import android.hardware.power.stats.EnergyMeasurement; import android.hardware.power.stats.PowerEntityInfo; import android.hardware.power.stats.StateResidencyResult; import android.util.Slog; import android.util.proto.ProtoInputStream; import android.util.proto.ProtoOutputStream; Loading @@ -42,6 +44,48 @@ import java.util.List; public class ProtoStreamUtils { private static final String TAG = ProtoStreamUtils.class.getSimpleName(); static class PowerEntityInfoUtils { public static void print(PowerEntityInfo[] powerEntityInfo) { for (int i = 0; i < powerEntityInfo.length; i++) { Slog.d(TAG, "PowerEntityId: " + powerEntityInfo[i].powerEntityId + ", PowerEntityName: " + powerEntityInfo[i].powerEntityName); for (int j = 0; j < powerEntityInfo[i].states.length; j++) { Slog.d(TAG, " StateId: " + powerEntityInfo[i].states[j].stateId + ", StateName: " + powerEntityInfo[i].states[j].stateName); } } } public static void dumpsys(PowerEntityInfo[] powerEntityInfo, PrintWriter pw) { for (int i = 0; i < powerEntityInfo.length; i++) { pw.println("PowerEntityId: " + powerEntityInfo[i].powerEntityId + ", PowerEntityName: " + powerEntityInfo[i].powerEntityName); for (int j = 0; j < powerEntityInfo[i].states.length; j++) { pw.println(" StateId: " + powerEntityInfo[i].states[j].stateId + ", StateName: " + powerEntityInfo[i].states[j].stateName); } } } } static class StateResidencyResultUtils { public static void print(StateResidencyResult[] stateResidencyResult) { for (int i = 0; i < stateResidencyResult.length; i++) { Slog.d(TAG, "PowerEntityId: " + stateResidencyResult[i].powerEntityId); for (int j = 0; j < stateResidencyResult[i].stateResidencyData.length; j++) { Slog.d(TAG, " StateId: " + stateResidencyResult[i].stateResidencyData[j].stateId + ", TotalTimeInStateMs: " + stateResidencyResult[i].stateResidencyData[j].totalTimeInStateMs + ", TotalStateEntryCount: " + stateResidencyResult[i].stateResidencyData[j].totalStateEntryCount + ", LastEntryTimestampMs: " + stateResidencyResult[i].stateResidencyData[j].lastEntryTimestampMs); } } } } static class ChannelInfoUtils { public static void packProtoMessage(ChannelInfo[] channelInfo, ProtoOutputStream pos) { long token; Loading @@ -57,15 +101,15 @@ public class ProtoStreamUtils { public static void print(ChannelInfo[] channelInfo) { for (int i = 0; i < channelInfo.length; i++) { Slog.d(TAG, "ChannelId = " + channelInfo[i].channelId + ", ChannelName = " + channelInfo[i].channelName); Slog.d(TAG, "ChannelId: " + channelInfo[i].channelId + ", ChannelName: " + channelInfo[i].channelName); } } public static void dumpsys(ChannelInfo[] channelInfo, PrintWriter pw) { for (int i = 0; i < channelInfo.length; i++) { pw.println("ChannelId = " + channelInfo[i].channelId + ", ChannelName = " + channelInfo[i].channelName); pw.println("ChannelId: " + channelInfo[i].channelId + ", ChannelName: " + channelInfo[i].channelName); } } } Loading Loading @@ -157,9 +201,9 @@ public class ProtoStreamUtils { public static void print(EnergyMeasurement[] energyMeasurement) { for (int i = 0; i < energyMeasurement.length; i++) { Slog.d(TAG, "ChannelId = " + energyMeasurement[i].channelId + ", Timestamp (ms) = " + energyMeasurement[i].timestampMs + ", Energy (uWs) = " + energyMeasurement[i].energyUWs); Slog.d(TAG, "ChannelId: " + energyMeasurement[i].channelId + ", Timestamp (ms): " + energyMeasurement[i].timestampMs + ", Energy (uWs): " + energyMeasurement[i].energyUWs); } } } Loading @@ -177,13 +221,13 @@ public class ProtoStreamUtils { public static void print(int[] energyConsumerId) { for (int i = 0; i < energyConsumerId.length; i++) { Slog.d(TAG, "EnergyConsumerId = " + energyConsumerId[i]); Slog.d(TAG, "EnergyConsumerId: " + energyConsumerId[i]); } } public static void dumpsys(int[] energyConsumerId, PrintWriter pw) { for (int i = 0; i < energyConsumerId.length; i++) { pw.println("EnergyConsumerId = " + energyConsumerId[i]); pw.println("EnergyConsumerId: " + energyConsumerId[i]); } } } Loading Loading @@ -278,9 +322,9 @@ public class ProtoStreamUtils { public static void print(EnergyConsumerResult[] energyConsumerResult) { for (int i = 0; i < energyConsumerResult.length; i++) { Slog.d(TAG, "EnergyConsumerId = " + energyConsumerResult[i].energyConsumerId + ", Timestamp (ms) = " + energyConsumerResult[i].timestampMs + ", Energy (uWs) = " + energyConsumerResult[i].energyUWs); Slog.d(TAG, "EnergyConsumerId: " + energyConsumerResult[i].energyConsumerId + ", Timestamp (ms): " + energyConsumerResult[i].timestampMs + ", Energy (uWs): " + energyConsumerResult[i].energyUWs); } } } Loading