Protobufferize BatteryManager dumpsys

Bug: 34227623
Test: cts-tradefed run cts-dev -t CtsIncidentHostTestCases
Change-Id: I6e36d725c50105ad1f6f86f890db49ea253907c0
This commit is contained in:
Netta P
2017-01-26 18:03:51 -08:00
parent 24e602a99b
commit e2a3cd8f69
2 changed files with 112 additions and 1 deletions

View File

@@ -0,0 +1,76 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
syntax = "proto3";
package android.service.battery;
option java_multiple_files = true;
option java_outer_classname = "BatteryServiceProto";
message BatteryServiceDumpProto {
enum BatteryPlugged {
BATTERY_PLUGGED_NONE = 0;
BATTERY_PLUGGED_AC = 1;
BATTERY_PLUGGED_USB = 2;
BATTERY_PLUGGED_WIRELESS = 4;
}
enum BatteryStatus {
BATTERY_STATUS_INVALID = 0;
BATTERY_STATUS_UNKNOWN = 1;
BATTERY_STATUS_CHARGING = 2;
BATTERY_STATUS_DISCHARGING = 3;
BATTERY_STATUS_NOT_CHARGING = 4;
BATTERY_STATUS_FULL = 5;
}
enum BatteryHealth {
BATTERY_HEALTH_INVALID = 0;
BATTERY_HEALTH_UNKNOWN = 1;
BATTERY_HEALTH_GOOD = 2;
BATTERY_HEALTH_OVERHEAT = 3;
BATTERY_HEALTH_DEAD = 4;
BATTERY_HEALTH_OVER_VOLTAGE = 5;
BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6;
BATTERY_HEALTH_COLD = 7;
}
// If true: UPDATES STOPPED -- use 'reset' to restart
bool are_updates_stopped = 1;
// Plugged status of power sources
BatteryPlugged plugged = 2;
// Max current in microamperes
int32 max_charging_current = 3;
// Max voltage
int32 max_charging_voltage = 4;
// Battery capacity in microampere-hours
int32 charge_counter = 5;
// Charging status
BatteryStatus status = 6;
// Battery health
BatteryHealth health = 7;
// True if the battery is present
bool is_present = 8;
// Charge level, from 0 through "scale" inclusive
int32 level = 9;
// The maximum value for the charge level
int32 scale = 10;
// Battery voltage in millivolts
int32 voltage = 11;
// Battery temperature in tenths of a degree Centigrade
int32 temperature = 12;
// The type of battery installed, e.g. "Li-ion"
string technology = 13;
}

View File

@@ -49,8 +49,10 @@ import android.os.SystemClock;
import android.os.UEventObserver;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.battery.BatteryServiceDumpProto;
import android.util.EventLog;
import android.util.Slog;
import android.util.proto.ProtoOutputStream;
import java.io.File;
import java.io.FileDescriptor;
@@ -801,6 +803,35 @@ public final class BatteryService extends SystemService {
}
}
private void dumpProto(FileDescriptor fd) {
final ProtoOutputStream proto = new ProtoOutputStream(fd);
synchronized (mLock) {
proto.write(BatteryServiceDumpProto.ARE_UPDATES_STOPPED, mUpdatesStopped);
int batteryPluggedValue = BatteryServiceDumpProto.BATTERY_PLUGGED_NONE;
if (mBatteryProps.chargerAcOnline) {
batteryPluggedValue = BatteryServiceDumpProto.BATTERY_PLUGGED_AC;
} else if (mBatteryProps.chargerUsbOnline) {
batteryPluggedValue = BatteryServiceDumpProto.BATTERY_PLUGGED_USB;
} else if (mBatteryProps.chargerWirelessOnline) {
batteryPluggedValue = BatteryServiceDumpProto.BATTERY_PLUGGED_WIRELESS;
}
proto.write(BatteryServiceDumpProto.PLUGGED, batteryPluggedValue);
proto.write(BatteryServiceDumpProto.MAX_CHARGING_CURRENT, mBatteryProps.maxChargingCurrent);
proto.write(BatteryServiceDumpProto.MAX_CHARGING_VOLTAGE, mBatteryProps.maxChargingVoltage);
proto.write(BatteryServiceDumpProto.CHARGE_COUNTER, mBatteryProps.batteryChargeCounter);
proto.write(BatteryServiceDumpProto.STATUS, mBatteryProps.batteryStatus);
proto.write(BatteryServiceDumpProto.HEALTH, mBatteryProps.batteryHealth);
proto.write(BatteryServiceDumpProto.IS_PRESENT, mBatteryProps.batteryPresent);
proto.write(BatteryServiceDumpProto.LEVEL, mBatteryProps.batteryLevel);
proto.write(BatteryServiceDumpProto.SCALE, BATTERY_SCALE);
proto.write(BatteryServiceDumpProto.VOLTAGE, mBatteryProps.batteryVoltage);
proto.write(BatteryServiceDumpProto.TEMPERATURE, mBatteryProps.batteryTemperature);
proto.write(BatteryServiceDumpProto.TECHNOLOGY, mBatteryProps.batteryTechnology);
}
proto.flush();
}
private final class Led {
private final Light mBatteryLight;
@@ -878,7 +909,11 @@ public final class BatteryService extends SystemService {
return;
}
dumpInternal(fd, pw, args);
if (args.length > 0 && "--proto".equals(args[0])) {
dumpProto(fd);
} else {
dumpInternal(fd, pw, args);
}
}
@Override public void onShellCommand(FileDescriptor in, FileDescriptor out,