| // 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 = "power_manager_proto"; |
| |
| // Power management policy sent from Chrome to powerd. |
| // |
| // New settings take effect immediately. For example, if |idle_ms| is |
| // currently set to 15 minutes, the user has been inactive for 12 minutes, |
| // and a message setting |idle_ms| to 10 minutes is received, |
| // |idle_action| will be performed immediately. If |lid_closed_action| is |
| // DO_NOTHING, the lid is closed, and |lid_closed_action| is then set to |
| // SHUT_DOWN, the system will shut down immediately. |
| // |
| // In the case of an unset field, powerd will restore a default value (as |
| // opposed to continuing to use a value set by a previous message). An |
| // empty message will restore all settings to their defaults. |
| // |
| // Next ID to use: 25 |
| message PowerManagementPolicy { |
| |
| enum Action { |
| // Suspends the system. Chrome may lock the screen first depending on |
| // its "Require password to wake from sleep" setting and the type of |
| // user that is logged in. |
| SUSPEND = 0; |
| |
| // Ends the current user's session. Does nothing at the login screen. |
| STOP_SESSION = 1; |
| |
| // Shuts the system down. |
| SHUT_DOWN = 2; |
| |
| // Does nothing. |
| DO_NOTHING = 3; |
| |
| // Next value to use: 4 |
| } |
| |
| enum DoubleTapAction { |
| // Does nothing. |
| DISABLED = 0; |
| |
| // Wake device up when double tap is triggered. |
| WAKE = 1; |
| |
| // Next value to use: 2 |
| } |
| |
| message Delays { |
| // Delay after which |idle_action| is performed, in milliseconds. The |
| // inactivity timeout is reset in response to things like user activity |
| // (including the lid being opened, the power source changing, an |
| // external display being connected, etc.), resuming from suspend, or |
| // the session state changing. |
| optional int64 idle_ms = 1; |
| |
| // Delay after which the screen will be turned off, in milliseconds. 0 |
| // disables turning the screen off. Capped to be less than or equal to |
| // |idle_ms|. The same events that cause the inactivity timeout to be |
| // reset cause the screen to be turned back on. |
| optional int64 screen_off_ms = 2; |
| |
| // Delay after which the screen will be dimmed, in milliseconds. 0 |
| // disables dimming. Capped to be less than or equal to |
| // |screen_off_ms| if |screen_off_ms| is set or less than or equal to |
| // |idle_ms| otherwise. The same events that cause the inactivity |
| // timeout to be reset cause the screen to be undimmed. |
| optional int64 screen_dim_ms = 3; |
| |
| // Delay after which the screen will be locked, in milliseconds. 0 |
| // disables locking. Capped to be less than |idle_ms|. Note that |
| // lock-on-suspend is implemented within Chrome; this delay is provided |
| // for cases where the screen must be locked a significant amount of |
| // time before the device is suspended. |
| optional int64 screen_lock_ms = 4; |
| |
| // Delay after which an IdleActionImminent signal will be emitted, in |
| // milliseconds. If the inactivity timeout is then reset before the idle |
| // action is performed, an IdleActionDeferred signal will be emitted. If the |
| // idle delay is changed after IdleActionImminent has been emitted, an |
| // additional signal will be emitted. 0 disables the signal. Capped to be |
| // less than or equal to |idle_ms|. |
| optional int64 idle_warning_ms = 5; |
| |
| // Next ID to use: 6 |
| } |
| |
| // Action to perform when |idle_ms| (see Delays) is reached without any |
| // user activity while the system is on AC power. |
| optional Action ac_idle_action = 1; |
| |
| // Idle action when the system is on battery power. |
| optional Action battery_idle_action = 11; |
| |
| // Action to perform when the lid is closed. |
| optional Action lid_closed_action = 2; |
| |
| // Action to perform when double tap is triggered. |
| optional DoubleTapAction double_tap_action = 25; |
| |
| // Delays used while the system is on AC power. |
| optional Delays ac_delays = 3; |
| |
| // Delays used while the system is on battery power. |
| optional Delays battery_delays = 4; |
| |
| // True if at least one full-brightness, dimmed-but-on, or system-level wake |
| // lock is currently held. |
| optional bool screen_wake_lock = 16; |
| optional bool dim_wake_lock = 17; |
| optional bool system_wake_lock = 18; |
| |
| // Should audio activity be honored? If true, audio activity will |
| // prevent |idle_action| from being performed, although the screen |
| // dimming, off, and lock delays will still be in effect. Once the audio |
| // has stopped, |idle_action| will be performed if no user or audio |
| // activity is observed for |idle_ms|. |
| optional bool use_audio_activity = 5; |
| |
| // Should video activity be honored? If true, video activity will |
| // prevent |idle_action| from being performed and the screen from being |
| // automatically dimmed, turned off, or locked. All these timeouts will |
| // be reset once the video has stopped. |
| optional bool use_video_activity = 6; |
| |
| // Backlight brightness in the range [0.0, 100.0] to use when on AC or battery |
| // power. When a message containing these fields is received, the backlight is |
| // set to the requested brightness. The updated brightness persists until the |
| // user manually changes it or a new policy containing the currently-relevant |
| // field is received. |
| optional double ac_brightness_percent = 13; |
| optional double battery_brightness_percent = 14; |
| |
| // Factor by which |screen_dim_ms| will be scaled while the device is in |
| // presentation mode. Other delays' distances from |screen_dim_ms| are |
| // preserved after scaling. A value of 1.0 (or less) leaves delays |
| // unchanged. If the conditions used for both this field and |
| // |user_activity_screen_dim_delay_factor| are true, this field takes |
| // precedence. |
| optional double presentation_screen_dim_delay_factor = 10; |
| |
| // Factor by which |screen_dim_ms| will be scaled if user activity is |
| // observed while the screen is dimmed or soon after it is turned off. |
| // Other delays' distances from |screen_dim_ms| are preserved after |
| // scaling. The delays will return to their original values at the end |
| // of the current user session. A value of 1.0 (or less) or an unset |
| // |screen_dim_ms| delay leaves delays unchanged. |
| optional double user_activity_screen_dim_delay_factor = 9; |
| |
| // If true, instructs the power manager not to perform any |
| // delay-triggered actions while in a user session until user activity |
| // has been observed. After activity is seen, the inactivity timeout |
| // starts. The actions are deferred again after a new session starts. |
| // Note that this has no immediate effect if activity has already been |
| // seen within an already-started session (activity that took place |
| // before the policy change is honored) and also that it has no effect at |
| // the login screen. |
| optional bool wait_for_initial_user_activity = 12; |
| |
| // If true, force the panel backlight to a non-zero brightness level in |
| // response to user activity if it was previously manually set to zero by the |
| // user. |
| optional bool force_nonzero_brightness_for_user_activity = 15; |
| |
| // Human-readable description of the factors contributing to this policy. |
| // Logged by the power manager to aid in debugging. |
| optional string reason = 8; |
| |
| // Peak Shift policy details with internal discussion: go/peak-shift-details. |
| |
| // Battery threshold for peak shift, as a percent in the range [15, 100]. |
| // Ignored unless powerd is configured to honor charging-related prefs. |
| optional int32 peak_shift_battery_percent_threshold = 19; |
| |
| enum WeekDay { |
| MONDAY = 0; |
| TUESDAY = 1; |
| WEDNESDAY = 2; |
| THURSDAY = 3; |
| FRIDAY = 4; |
| SATURDAY = 5; |
| SUNDAY = 6; |
| } |
| |
| message DayTime { |
| // Can be any value in range [0, 23]. |
| optional int32 hour = 1; |
| // Alowed values: 0, 15, 30, 45. |
| optional int32 minute = 2; |
| |
| // Next value to use: 3 |
| } |
| |
| message PeakShiftDayConfig { |
| optional WeekDay day = 1; |
| |
| optional DayTime start_time = 2; |
| optional DayTime end_time = 3; |
| optional DayTime charge_start_time = 4; |
| |
| // Next value to use: 5 |
| } |
| // Ignored unless powerd is configured to honor charging-related prefs. |
| repeated PeakShiftDayConfig peak_shift_day_configs = 20; |
| |
| // If true, boot on AC will be enabled. |
| // Ignored unless powerd is configured to honor charging-related prefs. |
| optional bool boot_on_ac = 21; |
| |
| // If true, USB power share will be enabled. |
| // On supported systems, certain USB ports may continue charging connected |
| // devices while the system is suspended or shut down. |
| // Ignored unless powerd is configured to honor charging-related prefs. |
| optional bool usb_power_share = 22; |
| |
| message AdvancedBatteryChargeModeDayConfig { |
| optional WeekDay day = 1; |
| |
| optional DayTime charge_start_time = 2; |
| optional DayTime charge_end_time = 3; |
| |
| // Next value to use: 4 |
| } |
| // Ignored unless powerd is configured to honor charging-related prefs. |
| repeated AdvancedBatteryChargeModeDayConfig |
| advanced_battery_charge_mode_day_configs = 23; |
| |
| message BatteryChargeMode { |
| enum Mode { |
| STANDARD = 0; |
| EXPRESS_CHARGE = 1; |
| PRIMARILY_AC_USE = 2; |
| ADAPTIVE = 3; |
| CUSTOM = 4; |
| } |
| optional Mode mode = 1; |
| |
| optional int32 custom_charge_start = 2; |
| optional int32 custom_charge_stop = 3; |
| |
| // Next value to use: 4 |
| } |
| // Ignored unless powerd is configured to honor charging-related prefs. |
| optional BatteryChargeMode battery_charge_mode = 24; |
| |
| // Next value to use: 26 |
| } |
| |
| // Message included in IdleActionImminent signals. |
| message IdleActionImminent { |
| // Time until the idle action will be performed as given by |
| // base::TimeDelta::ToInternalValue(). |
| optional int64 time_until_idle_action = 1; |
| } |