// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
// 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 = "chromiumos/system_api/power_manager_proto";

message PeripheralBatteryStatus {
  // Path of the battery sysfs.
  optional string path = 1;

  // Name of the peripheral device.
  optional string name = 2;

  // Battery level in range [0, 100]. Unset if the level is
  // unknown or the device is disconnected.
  optional int32 level = 3;

  enum ChargeStatus {
    // Status unknown, either permanently, or temporarily, e.g.,
    // due to a charger not being connected to chargable target.
    CHARGE_STATUS_UNKNOWN = 0;

    // Discharging may show up in normal operation of a device.
    // e.g., a powered stylus is always discharging if it is not
    // actually being charged.
    CHARGE_STATUS_DISCHARGING = 1;

    // Actively charging state, level is expected to rise.
    CHARGE_STATUS_CHARGING = 2;

    // Full will be returned if device is charging and at 100%
    CHARGE_STATUS_FULL = 3;

    // Not charging is equivalent to full if charger has decided
    // battery has reached maximum possible capacity, and there is
    // no error; level may not be 100% in this case.
    CHARGE_STATUS_NOT_CHARGING = 4;

    // Any health error will override charge status.
    CHARGE_STATUS_ERROR = 5;
  }

  // Charging status; peripherals may rarely expose a useful
  // status, primary usage is built-in peripheral chargers.
  optional ChargeStatus charge_status = 4;

  // Indicates if this is an active update, driven by udev (or other)
  // notification.
  //
  // The distinction is important for styluses and
  // other HID devices, as they will express their last known battery level
  // until a change, and a periodic poll (or powerd restart) that re-reads the
  // same value does not provide any new information, while a udev update
  // (even if the charge level is identical) does provide valid information
  // about the item.
  optional bool active_update = 5;

  // If present, contains the serial number of the battery, as a text field.
  optional string serial_number = 6;
}
