1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
|
// Copyright 2013 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package power_manager;
option go_package = "go.chromium.org/chromiumos/system_api/power_manager_proto";
// Power supply status sent from powerd to Chrome.
message PowerSupplyProperties {
// For any of these power sources, the system may be consuming power at a high
// enough rate that the battery is discharging rather than charging; see
// BatteryState. See the PowerSource submessage's |type| field for more
// details about the active power source.
enum ExternalPower {
// AC/line/mains or USB PD power is connected. This is typically the
// highest-power source that can be attached to the system.
AC = 0;
// A low-power USB source (SDP, DCP, CDP, or ACA) is connected.
USB = 1;
// No external power source is connected.
DISCONNECTED = 2;
// Next value to use: 4
}
enum BatteryState {
// The battery is full or close to full.
FULL = 0;
// The battery is being charged but is not yet full.
CHARGING = 1;
// The battery is discharging. Note that an external power source may be
// connected but not supplying enough power to offset the system's
// instantaneous power consumption. This state is also used if the battery
// is neither charging nor discharging (i.e. current is zero) in a non-full
// state, which may indicate a battery defect.
DISCHARGING = 2;
// The system doesn't have a battery.
NOT_PRESENT = 3;
// Next value to use: 4
}
// Details about a potential source of power to the system.
message PowerSource {
enum Port {
// The location of the port is unknown, or there's only one port.
UNKNOWN = 0;
// Various positions on the device. The first word describes the side of
// the device where the port is located while the second clarifies the
// position. For example, LEFT_BACK means the farthest-back port on the
// left side, while BACK_LEFT means the leftmost port on the back of the
// device.
LEFT = 1;
RIGHT = 2;
BACK = 3;
FRONT = 4;
LEFT_FRONT = 5;
LEFT_BACK = 6;
RIGHT_FRONT = 7;
RIGHT_BACK = 8;
BACK_LEFT = 9;
BACK_RIGHT = 10;
// Next value to use: 11
}
enum Type {
// Unspecified type.
OTHER = 0;
// Dedicated charger. Typically single-purpose and non-USB (e.g. barrel
// jack plugs). Corresponds to kernel-reported type "Mains". This source
// is reported by the ACPI driver and may also appear (along with a USB_PD
// source) on Type-C-only systems if the ACPI driver is present.
MAINS = 1;
// USB Type-C, including dedicated Type-C chargers. Typically >= 7.5W.
// Corresponds to kernel-reported types "USB_C", "USB_PD", "USB_PD_DRP",
// and "BrickID".
USB_C = 2;
// USB Battery Charging r1.2. Typically <= 7.5W. Corresponds to
// kernel-reported types "USB", "USB_ACA", "USB_CDP", and "USB_DCP".
USB_BC_1_2 = 3;
// Next value to use: 4
}
// Opaque ID corresponding to the device. Do not use this for any purpose
// beyond comparisons with |external_power_source_id| or as an argument to
// powerd's SetPowerSource D-Bus method.
optional string id = 1;
// The charging port to which this power source is connected.
optional Port port = 7;
// Power source type.
optional Type type = 8;
// Raw strings read from |manufacturer| and |model_name| files in sysfs.
optional string manufacturer_id = 4;
optional string model_id = 5;
// Maximum power this source is capable of delivering, in watts.
optional double max_power = 6;
// True if the power source will automatically deliver charge to the system
// when connected (assuming there isn't another |active_by_default| source
// doing so). If false, the source will not deliver charge unless requested
// to do so by the user.
optional bool active_by_default = 3;
// Next ID to use: 9
}
// Current state of the external power source.
optional ExternalPower external_power = 14;
// ID of the PowerSource that is currently providing power to the system.
optional string external_power_source_id = 17;
// Currently-connected external power sources.
repeated PowerSource available_external_power_source = 18;
// Current state of the battery.
optional BatteryState battery_state = 15;
// Estimated battery charge as a percent of its total capacity, in the
// range [0.0, 100.0]. Unset if a battery isn't present.
optional double battery_percent = 7 [default = -1.0];
// Estimated time until the battery is empty, in seconds, or zero if the
// battery isn't discharging. -1 if the estimated time would be huge
// (e.g. because the current is zero or close to zero). Unset if a battery
// isn't present.
optional int64 battery_time_to_empty_sec = 5;
// Estimated time until the battery is full, in seconds, or zero if the
// battery isn't charging. -1 if the estimated time would be huge (e.g.
// because the current is zero or close to zero). Contains the best estimate
// for when the battery will be full when Adaptive Charging is delaying
// charge. If there is no current estimate for when Adaptive Charging will
// finish, the value is zero. Unset if a battery isn't present.
optional int64 battery_time_to_full_sec = 6;
// True when |battery_time_to_*| can't be trusted, e.g. because the power
// source just changed. Unset if a battery isn't present.
optional bool is_calculating_battery_time = 12 [default = false];
// The battery discharge rate measured in W. Positive if the battery is being
// discharged, negative if it's being charged, or unset if a battery isn't
// present.
optional double battery_discharge_rate = 16;
// True if it is possible for some connected devices to function as either
// sources or sinks (i.e. to either deliver or receive charge).
optional bool supports_dual_role_devices = 19;
// Current battery voltage level.
optional double battery_voltage = 20;
// Battery manufacturer reported in sysfs as either "manufacturer" or
// "vendor". Ex.: "SIMPLO"
optional string battery_vendor = 21;
// Battery cycle count representing the total number of times all the
// battery's power has been used.
optional int64 battery_cycle_count = 22;
// Battery serial number reported in sysfs.
optional string battery_serial_number = 23;
// Battery design capacity measured in ampere-hours (Ah).
optional double battery_charge_full_design = 24;
// Battery full capacity measured in ampere-hours (Ah).
optional double battery_charge_full = 25;
// Battery voltage min design measured in V.
optional double battery_voltage_min_design = 26;
// Current battery charge right now, measured in ampere-hours (Ah).
optional double battery_charge = 27;
// Battery model name reported by |model_name|.
optional string battery_model_name = 28;
// Battery current as of now, measured in amperes (A).
optional double battery_current = 29;
// Battery technology read from sysfs.
optional string battery_technology = 30;
// Battery status read from sysfs.
optional string battery_status = 31;
// The device's preferred minimum external power input in watts (W). When
// requesting the user use a higher-power external power source, this value
// can be displayed.
optional double preferred_minimum_external_power = 32;
// Indicates if the system supports Adaptive Charging required functionality.
optional bool adaptive_charging_supported = 33 [default = false];
// Indicates whether charging to full is delayed by adaptive charging. If so,
// |battery_time_to_full_sec| indicates the time until the battery is planned
// to be fully charged. The planned time to fully charge the battery may
// change over time based on predictions from adaptive battery.
optional bool adaptive_delaying_charge = 34 [default = false];
// Indicates if Adaptive Charging is currently allowed by its heuristic, which
// disables Adaptive Charging if the charging behavior of the user won't
// benefit from the feature.
// Unused unless Adaptive Charging is supported on the system.
optional bool adaptive_charging_heuristic_enabled = 35;
// Indicates whether charging is limited by Charge Limit, which prevents
// charging over a default battery percentage of 80%. Percentage is
// configurable via |PowerManagementPolicy::adaptive_charging_hold_percent|.
// Set to true if the battery percentage is close to or above the limit
// (defined in the code as greater than or equal to
// |PowerManagementPolicy::adaptive_charging_hold_percent| -
// |PowerManagementPolicy::adaptive_charging_hold_delta_percent| - 1) and
// Charge Limit is enabled.
optional bool charge_limited = 36;
// Next ID to use: 37
}
|