| // Copyright 2019 The Chromium 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"; |
| |
| package chromeos.power; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| // UserChargingEvent contains information about users activities that are |
| // related to charging. |
| message UserChargingEvent { |
| message Features { |
| enum DayOfWeek { |
| SUN = 0; |
| MON = 1; |
| TUE = 2; |
| WED = 3; |
| THU = 4; |
| FRI = 5; |
| SAT = 6; |
| } |
| |
| enum Month { |
| JAN = 1; |
| FEB = 2; |
| MAR = 3; |
| APR = 4; |
| MAY = 5; |
| JUN = 6; |
| JUL = 7; |
| AUG = 8; |
| SEP = 9; |
| OCT = 10; |
| NOV = 11; |
| DEC = 12; |
| } |
| |
| enum DeviceType { |
| UNKNOWN = 0; |
| LAPTOP = 1; |
| CLAMSHELL = 2; |
| TABLET = 3; |
| } |
| |
| enum DeviceMode { |
| UNKNOWN_MODE = 0; |
| CLOSED_LID_MODE = 1; |
| LAPTOP_MODE = 2; |
| TABLET_MODE = 3; |
| } |
| |
| // Percentage of the battery. |
| optional int32 battery_percentage = 1; |
| // Time since the last time user unplugged the charger in minutes. |
| optional int32 time_since_last_charge = 2; |
| // Duration of the last time the device was charged in minutes. |
| optional int32 duration_of_last_charge = 3; |
| // The percentage of the battery that the last charge reached. |
| optional int32 battery_percentage_of_last_charge = 4; |
| // The percentage of the battery at the beginning of the last charge. |
| optional int32 battery_percentage_before_last_charge = 5; |
| // Time of the event in minutes since midnight in the local time zone. |
| optional int32 time_of_the_day = 6; |
| // Logging event's day of week. |
| optional DayOfWeek day_of_week = 7; |
| // Logging event's day of month. |
| optional int32 day_of_month = 8; |
| // Logging event's month. |
| optional Month month = 9; |
| // Timezone difference from the last charge. It is equal to |
| // current_timezone - timezone_from_the_last_charge. The valid range of time |
| // zone value will be -12 (UTC -12:00) to +14 (UTC +14:00). |
| optional double timezone_difference_from_last_charge = 10; |
| // Type of the device. |
| optional DeviceType device_type = 11; |
| // Mode of the device. |
| optional DeviceMode device_mode = 12; |
| // Number of various events in past 30 minutes. |
| optional int32 num_recent_key_events = 13; |
| optional int32 num_recent_mouse_events = 14; |
| optional int32 num_recent_touch_events = 15; |
| optional int32 num_recent_stylus_events = 16; |
| // Duration of video and audio playing in the last 30 minutes. |
| optional int32 duration_recent_video_playing = 17; |
| optional int32 duration_recent_audio_playing = 18; |
| // Brightness of the screen in percent. |
| optional int32 screen_brightness_percent = 19; |
| // Charge voltage in mV. |
| optional int32 voltage = 20; |
| // Whether there's any shutdown/suspend action between the last charge |
| // and current event. |
| optional bool halt_from_last_charge = 21; |
| // Whether the device is being charged or not. |
| optional bool is_charging = 22; |
| } |
| |
| message Event { |
| enum Reason { |
| // User plugs in the charger. |
| CHARGER_PLUGGED_IN = 1; |
| // User unplugs the charger. |
| CHARGER_UNPLUGGED = 2; |
| // Logging at a regular time interval. |
| PERIODIC_LOG = 3; |
| // Device goes into shutdown mode. |
| SHUTDOWN = 4; |
| // Device goes into suspend mode. |
| SUSPEND = 5; |
| } |
| |
| // Unique number that represent the event. |
| optional int32 event_id = 1; |
| // Reason for the event. |
| optional Reason reason = 2; |
| } |
| |
| optional Features features = 1; |
| optional Event event = 2; |
| } |
| |
| // PastChargingEvents contain a list of events that have information about "past |
| // charging events". It will only store the plug/unplug pair of the last charge |
| // and a recent plug/halt event if any. |
| message PastChargingEvents { |
| message Event { |
| // Time of the event in minutes since Windows epoch. |
| optional int32 time = 1; |
| // Battery percentage of the device. |
| optional int32 battery_percent = 2; |
| // Timezone of the device. |
| optional int32 timezone = 3; |
| // Reason for the event. |
| optional UserChargingEvent.Event.Reason reason = 4; |
| } |
| // A list containing past charging events. |
| repeated Event events = 1; |
| } |