Skip to content
Snippets Groups Projects
Commit 6fed387e authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Fix IllegalStateException in getSupportedPowerMonitors API

Bug: 309070737
Test: atest PowerStatsTests
Change-Id: Ie2e49e7488dc8b6ef8b1f44f9a56ebe5c95c5a00
parent e619e972
No related branches found
No related tags found
No related merge requests found
......@@ -603,40 +603,51 @@ public class PowerStatsService extends SystemService {
@NonNull
private String getEnergyConsumerName(EnergyConsumer consumer,
EnergyConsumer[] energyConsumers) {
if (consumer.type != EnergyConsumerType.OTHER) {
StringBuilder sb = new StringBuilder();
sb.append(energyConsumerTypeToString(consumer.type));
boolean hasOrdinal = consumer.ordinal != 0;
if (!hasOrdinal) {
// See if any other EnergyConsumer of the same type has an ordinal
for (EnergyConsumer aConsumer : energyConsumers) {
if (aConsumer.type == consumer.type && aConsumer.ordinal != 0) {
hasOrdinal = true;
break;
}
StringBuilder sb = new StringBuilder();
switch (consumer.type) {
case EnergyConsumerType.BLUETOOTH:
sb.append("BLUETOOTH");
break;
case EnergyConsumerType.CPU_CLUSTER:
sb.append("CPU");
break;
case EnergyConsumerType.DISPLAY:
sb.append("DISPLAY");
break;
case EnergyConsumerType.GNSS:
sb.append("GNSS");
break;
case EnergyConsumerType.MOBILE_RADIO:
sb.append("MOBILE_RADIO");
break;
case EnergyConsumerType.WIFI:
sb.append("WIFI");
break;
case EnergyConsumerType.CAMERA:
sb.append("CAMERA");
break;
default:
if (consumer.name != null && !consumer.name.isBlank()) {
sb.append(consumer.name.toUpperCase(Locale.ENGLISH));
} else {
sb.append("CONSUMER_").append(consumer.type);
}
break;
}
boolean hasOrdinal = consumer.ordinal != 0;
if (!hasOrdinal) {
// See if any other EnergyConsumer of the same type has an ordinal
for (EnergyConsumer aConsumer : energyConsumers) {
if (aConsumer.type == consumer.type && aConsumer.ordinal != 0) {
hasOrdinal = true;
break;
}
}
if (hasOrdinal) {
sb.append('/').append(consumer.ordinal);
}
return sb.toString();
} else {
return consumer.name;
}
}
private static String energyConsumerTypeToString(int type) {
switch(type) {
case EnergyConsumerType.BLUETOOTH: return "BLUETOOTH";
case EnergyConsumerType.CPU_CLUSTER: return "CPU";
case EnergyConsumerType.DISPLAY: return "DISPLAY";
case EnergyConsumerType.GNSS: return "GNSS";
case EnergyConsumerType.MOBILE_RADIO: return "MOBILE_RADIO";
case EnergyConsumerType.WIFI: return "WIFI";
case EnergyConsumerType.OTHER: return "";
default:
throw new IllegalStateException("Unrecognized EnergyConsumerType: " + type);
if (hasOrdinal) {
sb.append('/').append(consumer.ordinal);
}
return sb.toString();
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment