1// Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5syntax = "proto2"; 6 7option optimize_for = LITE_RUNTIME; 8 9package power_manager; 10 11// Power supply status sent from powerd to Chrome. 12message PowerSupplyProperties { 13 // For any of these power sources, the system may be consuming power at a high 14 // enough rate that the battery is discharging rather than charging; see 15 // BatteryState. 16 enum ExternalPower { 17 // AC/line/mains or USB PD power is connected. This is typically the 18 // highest-power source that can be attached to the system. 19 AC = 0; 20 21 // A low-power USB source (SDP, DCP, CDP, or ACA) is connected. 22 USB = 1; 23 24 // No external power source is connected. 25 DISCONNECTED = 2; 26 27 // Next value to use: 4 28 } 29 30 enum BatteryState { 31 // The battery is full or close to full. 32 FULL = 0; 33 34 // The battery is being charged but is not yet full. 35 CHARGING = 1; 36 37 // The battery is discharging. Note that an external power source may be 38 // connected but not supplying enough power to offset the system's 39 // instantaneous power consumption. This state is also used if the battery 40 // is neither charging nor discharging (i.e. current is zero) in a non-full 41 // state, which may indicate a battery defect. 42 DISCHARGING = 2; 43 44 // The system doesn't have a battery. 45 NOT_PRESENT = 3; 46 47 // Next value to use: 4 48 } 49 50 // Details about a potential source of power to the system. 51 message PowerSource { 52 enum Port { 53 // The location of the port is unknown, or there's only one port. 54 UNKNOWN = 0; 55 56 // Various positions on the device. The first word describes the side of 57 // the device where the port is located while the second clarifies the 58 // position. For example, LEFT_BACK means the farthest-back port on the 59 // left side, while BACK_LEFT means the leftmost port on the back of the 60 // device. 61 LEFT = 1; 62 RIGHT = 2; 63 BACK = 3; 64 FRONT = 4; 65 LEFT_FRONT = 5; 66 LEFT_BACK = 6; 67 RIGHT_FRONT = 7; 68 RIGHT_BACK = 8; 69 BACK_LEFT = 9; 70 BACK_RIGHT = 10; 71 72 // Next value to use: 11 73 } 74 75 // Opaque ID corresponding to the device; see |external_power_source_id|. 76 optional string id = 1; 77 78 // The charging port to which this power source is connected. 79 optional Port port = 7; 80 81 // Raw strings read from |manufacturer| and |model_name| files in sysfs. 82 optional string manufacturer_id = 4; 83 optional string model_id = 5; 84 85 // Maximum power this source is capable of delivering, in watts. 86 optional double max_power = 6; 87 88 // True if the power source will automatically deliver charge to the system 89 // when connected (assuming there isn't another |active_by_default| source 90 // doing so). If false, the source will not deliver charge unless requested 91 // to do so by the user. 92 optional bool active_by_default = 3; 93 94 // Next ID to use: 8 95 } 96 97 // Current state of the external power source. 98 optional ExternalPower external_power = 14; 99 100 // ID of the PowerSource that is currently providing power to the system. 101 optional string external_power_source_id = 17; 102 103 // Currently-connected external power sources. 104 repeated PowerSource available_external_power_source = 18; 105 106 // Current state of the battery. 107 optional BatteryState battery_state = 15; 108 109 // Estimated battery charge as a percent of its total capacity, in the 110 // range [0.0, 100.0]. 111 optional double battery_percent = 7; 112 113 // Estimated time until the battery is empty, in seconds, or zero if the 114 // battery isn't discharging. -1 if the estimated time would be huge 115 // (e.g. because the current is zero or close to zero). 116 optional int64 battery_time_to_empty_sec = 5; 117 118 // Estimated time until the battery is full, in seconds, or zero if the 119 // battery isn't charging. -1 if the estimated time would be huge (e.g. 120 // because the current is zero or close to zero). 121 optional int64 battery_time_to_full_sec = 6; 122 123 // True when |battery_time_to_*| can't be trusted, e.g. because the power 124 // source just changed. 125 optional bool is_calculating_battery_time = 12 [default = false]; 126 127 // The battery discharge rate measured in W. Positive if the battery is 128 // being discharged and negative if it's being charged. 129 optional double battery_discharge_rate = 16; 130 131 // True if it is possible for some connected devices to function as either 132 // sources or sinks (i.e. to either deliver or receive charge). 133 optional bool supports_dual_role_devices = 19; 134 135 // Next ID to use: 20 136} 137