// Copyright 2018 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;

// See
// https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/docs/screen_brightness.md
// for information about the mapping between brightness percents and backlight
// hardware levels.

// Request to change the backlight brightness sent from Chrome to powerd in a
// SetScreenBrightness D-Bus method call.
message SetBacklightBrightnessRequest {
  // Desired backlight brightness as a percent in the range [0.0, 100.0].
  optional double percent = 1;

  // The speed at which the brightness should go to the requested percent.
  enum Transition {
    // The brightness should animate to the new percent.
    GRADUAL = 0;
    // The brightness should instantaneously go to the new percent.
    INSTANT = 1;
  }
  optional Transition transition = 2;

  // The reason the request was sent.
  enum Cause {
    // Explicit user request (typically using the onscreen brightness slider).
    USER_REQUEST = 0;
    // Automated request based on a prediction of the desired brightness.
    MODEL = 1;
  }
  optional Cause cause = 3;

  // Next value to use: 4
}

// Announcement of a backlight brightness change emitted by powerd via a
// ScreenBrightnessChanged or KeyboardBrightnessChanged D-Bus signal.
message BacklightBrightnessChange {
  // Current backlight brightness as a percent in the range [0.0, 100.0].
  optional double percent = 1;

  // The reason the brightness was changed.
  enum Cause {
    // Explicit user request, e.g. brightness keys or brightness slider.
    USER_REQUEST = 0;
    // Automated change in response to user activity (input event, video
    // activity, etc.).
    USER_ACTIVITY = 1;
    // Automated powerd change triggered by idle timeout due to user inactivity.
    USER_INACTIVITY = 2;
    // Automated powerd change due by a change to the ambient light level.
    AMBIENT_LIGHT_CHANGED = 3;
    // An external power source was connected.
    EXTERNAL_POWER_CONNECTED = 4;
    // An external power source was disconnected.
    EXTERNAL_POWER_DISCONNECTED = 5;
    // Backlights were forced off by Chrome (typically due to the user tapping
    // the power button on a convertible device).
    FORCED_OFF = 6;
    // Backlights are no longer being forced off by Chrome.
    NO_LONGER_FORCED_OFF = 7;
    // Unspecified automated change (suspend/resume, shutdown, etc.).
    OTHER = 8;
    // Automated request based on a prediction of the desired brightness.
    MODEL = 9;
    // Next value to use: 10
  }
  optional Cause cause = 2;

  // Next value to use: 3
}