Home | History | Annotate | Download | only in power_manager
      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 
      5 syntax = "proto2";
      6 
      7 option optimize_for = LITE_RUNTIME;
      8 
      9 package power_manager;
     10 
     11 // Power supply status sent from powerd to Chrome.
     12 message 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. See the PowerSource submessage's |type| field for more
     16   // details about the active power source.
     17   enum ExternalPower {
     18     // AC/line/mains or USB PD power is connected. This is typically the
     19     // highest-power source that can be attached to the system.
     20     AC = 0;
     21 
     22     // A low-power USB source (SDP, DCP, CDP, or ACA) is connected.
     23     USB = 1;
     24 
     25     // No external power source is connected.
     26     DISCONNECTED = 2;
     27 
     28     // Next value to use: 4
     29   }
     30 
     31   enum BatteryState {
     32     // The battery is full or close to full.
     33     FULL = 0;
     34 
     35     // The battery is being charged but is not yet full.
     36     CHARGING = 1;
     37 
     38     // The battery is discharging. Note that an external power source may be
     39     // connected but not supplying enough power to offset the system's
     40     // instantaneous power consumption. This state is also used if the battery
     41     // is neither charging nor discharging (i.e. current is zero) in a non-full
     42     // state, which may indicate a battery defect.
     43     DISCHARGING = 2;
     44 
     45     // The system doesn't have a battery.
     46     NOT_PRESENT = 3;
     47 
     48     // Next value to use: 4
     49   }
     50 
     51   // Details about a potential source of power to the system.
     52   message PowerSource {
     53     enum Port {
     54       // The location of the port is unknown, or there's only one port.
     55       UNKNOWN = 0;
     56 
     57       // Various positions on the device. The first word describes the side of
     58       // the device where the port is located while the second clarifies the
     59       // position. For example, LEFT_BACK means the farthest-back port on the
     60       // left side, while BACK_LEFT means the leftmost port on the back of the
     61       // device.
     62       LEFT        = 1;
     63       RIGHT       = 2;
     64       BACK        = 3;
     65       FRONT       = 4;
     66       LEFT_FRONT  = 5;
     67       LEFT_BACK   = 6;
     68       RIGHT_FRONT = 7;
     69       RIGHT_BACK  = 8;
     70       BACK_LEFT   = 9;
     71       BACK_RIGHT  = 10;
     72 
     73       // Next value to use: 11
     74     }
     75 
     76     enum Type {
     77       // Unspecified type.
     78       OTHER = 0;
     79 
     80       // Dedicated charger. Typically single-purpose and non-USB (e.g. barrel
     81       // jack plugs). Corresponds to kernel-reported type "Mains". This source
     82       // is reported by the ACPI driver and may also appear (along with a USB_PD
     83       // source) on Type-C-only systems if the ACPI driver is present.
     84       MAINS = 1;
     85 
     86       // USB Type-C, including dedicated Type-C chargers. Typically >= 7.5W.
     87       // Corresponds to kernel-reported types "USB_C", "USB_PD", "USB_PD_DRP",
     88       // and "BrickID".
     89       USB_C = 2;
     90 
     91       // USB Battery Charging r1.2. Typically <= 7.5W. Corresponds to
     92       // kernel-reported types "USB", "USB_ACA", "USB_CDP", and "USB_DCP".
     93       USB_BC_1_2 = 3;
     94 
     95       // Next value to use: 4
     96     }
     97 
     98     // Opaque ID corresponding to the device. Do not use this for any purpose
     99     // beyond comparisons with |external_power_source_id| or as an argument to
    100     // powerd's SetPowerSource D-Bus method.
    101     optional string id = 1;
    102 
    103     // The charging port to which this power source is connected.
    104     optional Port port = 7;
    105 
    106     // Power source type.
    107     optional Type type = 8;
    108 
    109     // Raw strings read from |manufacturer| and |model_name| files in sysfs.
    110     optional string manufacturer_id = 4;
    111     optional string model_id = 5;
    112 
    113     // Maximum power this source is capable of delivering, in watts.
    114     optional double max_power = 6;
    115 
    116     // True if the power source will automatically deliver charge to the system
    117     // when connected (assuming there isn't another |active_by_default| source
    118     // doing so). If false, the source will not deliver charge unless requested
    119     // to do so by the user.
    120     optional bool active_by_default = 3;
    121 
    122     // Next ID to use: 9
    123   }
    124 
    125   // Current state of the external power source.
    126   optional ExternalPower external_power = 14;
    127 
    128   // ID of the PowerSource that is currently providing power to the system.
    129   optional string external_power_source_id = 17;
    130 
    131   // Currently-connected external power sources.
    132   repeated PowerSource available_external_power_source = 18;
    133 
    134   // Current state of the battery.
    135   optional BatteryState battery_state = 15;
    136 
    137   // Estimated battery charge as a percent of its total capacity, in the
    138   // range [0.0, 100.0]. Unset if a battery isn't present.
    139   optional double battery_percent = 7 [default = -1.0];
    140 
    141   // Estimated time until the battery is empty, in seconds, or zero if the
    142   // battery isn't discharging. -1 if the estimated time would be huge
    143   // (e.g. because the current is zero or close to zero). Unset if a battery
    144   // isn't present.
    145   optional int64 battery_time_to_empty_sec = 5;
    146 
    147   // Estimated time until the battery is full, in seconds, or zero if the
    148   // battery isn't charging. -1 if the estimated time would be huge (e.g.
    149   // because the current is zero or close to zero). Unset if a battery isn't
    150   // present.
    151   optional int64 battery_time_to_full_sec = 6;
    152 
    153   // True when |battery_time_to_*| can't be trusted, e.g. because the power
    154   // source just changed. Unset if a battery isn't present.
    155   optional bool is_calculating_battery_time = 12 [default = false];
    156 
    157   // The battery discharge rate measured in W. Positive if the battery is being
    158   // discharged, negative if it's being charged, or unset if a battery isn't
    159   // present.
    160   optional double battery_discharge_rate = 16;
    161 
    162   // True if it is possible for some connected devices to function as either
    163   // sources or sinks (i.e. to either deliver or receive charge).
    164   optional bool supports_dual_role_devices = 19;
    165 
    166   // Next ID to use: 20
    167 }
    168