Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2a3cd8f authored by Netta P's avatar Netta P
Browse files

Protobufferize BatteryManager dumpsys

Bug: 34227623
Test: cts-tradefed run cts-dev -t CtsIncidentHostTestCases
Change-Id: I6e36d725c50105ad1f6f86f890db49ea253907c0
parent 24e602a9
Loading
Loading
Loading
Loading
+76 −0
Original line number Diff line number Diff line
/*
 * 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;
}
+36 −1
Original line number Diff line number Diff line
@@ -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,8 +909,12 @@ public final class BatteryService extends SystemService {
                return;
            }

            if (args.length > 0 && "--proto".equals(args[0])) {
                dumpProto(fd);
            } else {
                dumpInternal(fd, pw, args);
            }
        }

        @Override public void onShellCommand(FileDescriptor in, FileDescriptor out,
                FileDescriptor err, String[] args, ShellCallback callback,