1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
// 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;
}
|