| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| syntax = "proto2"; |
| |
| package ash.power.ml; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| // ScreenBrightnessEvent contains features, labels and related information for |
| // the Adaptive Screen Brightness project. These will be used for logging and |
| // model inference. |
| message ScreenBrightnessEvent { |
| message Features { |
| // DeviceSpec is fixed per device. It's really important to have these info |
| // as perceived brightness varies a lot across different devices. |
| message DeviceSpec { |
| // Does the device have an ambient light sensor? |
| optional bool has_ambient_light_sensor = 1; |
| } |
| |
| // ActivityData contains all user-related activity features. |
| message ActivityData { |
| // Local time of the day when logging/prediction happened. |
| optional int32 time_of_day_sec = 1; |
| enum DayOfWeek { |
| SUN = 0; |
| MON = 1; |
| TUE = 2; |
| WED = 3; |
| THU = 4; |
| FRI = 5; |
| SAT = 6; |
| } |
| // Logging event's day of the week. |
| optional DayOfWeek day_of_week = 2; |
| |
| // Number of input events of various types in the past hour. |
| optional int32 num_recent_mouse_events = 3; |
| optional int32 num_recent_key_events = 4; |
| optional int32 num_recent_stylus_events = 5; |
| optional int32 num_recent_touch_events = 6; |
| |
| // Last activity in sec from the time when data was logged. |
| optional int32 last_activity_time_sec = 7; |
| |
| // Time spent on the most recent activity. An activity ends after 20 |
| // seconds of inactivity. If there is a current unfinished activity, it |
| // will be the activity counted here. |
| optional int32 recent_time_active_sec = 8; |
| |
| // Whether video/audio is playing. |
| optional bool is_video_playing = 9; |
| optional bool is_audio_playing = 10; |
| } |
| // Related to accessibility settings. |
| message AccessibilityData { |
| optional bool is_magnifier_enabled = 1; |
| optional bool is_high_contrast_enabled = 2; |
| optional bool is_large_cursor_enabled = 3; |
| optional bool is_virtual_keyboard_enabled = 4; |
| optional bool is_spoken_feedback_enabled = 5; |
| optional bool is_select_to_speak_enabled = 6; |
| optional bool is_mono_audio_enabled = 7; |
| optional bool is_caret_highlight_enabled = 8; |
| optional bool is_cursor_highlight_enabled = 9; |
| optional bool is_focus_highlight_enabled = 10; |
| optional bool is_braille_display_connected = 11; |
| optional bool is_autoclick_enabled = 12; |
| optional bool is_switch_access_enabled = 13; |
| } |
| |
| // EnvData contains all non-user-specific environmental features. |
| message EnvData { |
| optional bool on_battery = 1; |
| optional float battery_percent = 2; |
| |
| enum DeviceMode { |
| // Lid state was not available (e.g. powerd not running). |
| UNKNOWN_MODE = 0; |
| // Lid is closed. |
| CLOSED_LID = 1; |
| // Lid is open, tablet mode is off or unsupported. |
| LAPTOP = 2; |
| // Lid is open, tablet mode is on or no lid at all. |
| TABLET = 3; |
| } |
| |
| optional DeviceMode device_mode = 3; |
| |
| // Night light temperature percentage if night light mode is enabled. On |
| // a scale from 0 to 100. |
| optional int32 night_light_temperature_percent = 4; |
| |
| // The brightness of the screen prior to the time at which the current |
| // event was logged. If an event is logged periodically, it will be the |
| // same as |Event.brightness|. It is only unset if event is logged due to |
| // brightness change but there is no initial brightness recorded. |
| optional int32 previous_brightness = 5; |
| } |
| |
| optional DeviceSpec device_spec = 1; |
| optional ActivityData activity_data = 2; |
| optional AccessibilityData accessibility_data = 3; |
| optional EnvData env_data = 4; |
| } |
| |
| message Event { |
| enum Reason { |
| // User increases brightness |
| USER_UP = 1; |
| // User reduces brightness |
| USER_DOWN = 2; |
| // Model prediction and adjustment |
| MODEL = 3; |
| // Model exploration |
| EXPLORE = 4; |
| // Automated change in response to user activity (input event, video |
| // activity, etc.). |
| USER_ACTIVITY = 5; |
| // Powerd has dimmed the screen. |
| DIMMED_FOR_INACTIVITY = 6; |
| // Powerd has turned the screen off. |
| OFF_FOR_INACTIVITY = 7; |
| // Current adaptive system changed the brightness |
| AMBIENT_LIGHT_CHANGED = 8; |
| // An external power source was connected. |
| EXTERNAL_POWER_CONNECTED = 9; |
| // An external power source was disconnected. |
| EXTERNAL_POWER_DISCONNECTED = 10; |
| // Backlights were forced off by Chrome (typically due to the user tapping |
| // the power button on a convertible device). |
| FORCED_OFF = 11; |
| // Backlights are no longer being forced off by Chrome. |
| NO_LONGER_FORCED_OFF = 12; |
| // Logging at a regular time interval. |
| PERIODIC = 13; |
| // Some other automated change. |
| OTHER = 14; |
| } |
| |
| // If event reason is MODEL, we also log what happened after model |
| // changed the brightness level. This will be used to eval our models. |
| message ModelOutcome { |
| // Model's predicted brightness. |
| optional int32 model_brightness = 1; |
| // If user intervened and changed the brightness, it is recorded below. |
| optional int32 user_brightness = 2; |
| } |
| |
| // Final selected brightness. |
| optional int32 brightness = 1; |
| optional Reason reason = 2; |
| optional ModelOutcome model_outcome = 3; |
| // Time in seconds since the last event was logged. Unset if there wasn't an |
| // earlier event. |
| optional int32 time_since_last_event_sec = 4; |
| } |
| optional Features features = 1; |
| optional Event event = 2; |
| } |