blob: 573856440437bd730c43ba00d806375c5bde2d09 [file] [log] [blame]
// 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;
}