syntax = "proto3";

package power_manager;

import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";

// Wrapper protos (e.g. FloatValue) are used on fields when there is a need to
// distinguish between the absence of a primitive typed field and its default
// value. For background on primitive defaults and wrappers in proto3, please
// see:
// https://developers.google.com/protocol-buffers/docs/proto3#default
// https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/wrappers.proto
message PowerManagerConfig {
  // Smoothing constant used to calculated smoothed ambient lux level, in the
  // range of (0.0, 1.0]. Value closer to 0.0 means smoothed_lux will respond
  // to ambient light change slower. Value of 1.0 means smoothing is disabled.
  google.protobuf.FloatValue als_smoothing_constant = 1;

  // If true, the system will not be suspended due to user inactivity while
  // something is connected to the headphone jack.
  bool avoid_suspend_when_headphone_jack_plugged = 2;

  // Duration to wait before polling the power status again when the number of
  // samples is less than |max_current_samples|.
  google.protobuf.Duration battery_poll_interval_initial = 3;

  // Duration to wait before polling the power status again after the number
  // of samples is equal to |max_current_samples|.
  google.protobuf.Duration battery_poll_interval = 4;

  // Number of current and charge samples that need to be averaged before
  // providing time-to-empty/full estimates.
  google.protobuf.Int32Value max_charge_samples = 5;
  google.protobuf.Int32Value max_current_samples = 6;

  // TODO(chromium:1040976): Add all prefs.
}