1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17syntax = "proto2";
18package com.android.server.power;
19
20option java_multiple_files = true;
21
22import "frameworks/base/core/proto/android/content/intent.proto";
23import "frameworks/base/core/proto/android/os/looper.proto";
24import "frameworks/base/core/proto/android/os/powermanager.proto";
25import "frameworks/base/core/proto/android/os/worksource.proto";
26import "frameworks/base/core/proto/android/providers/settings.proto";
27import "frameworks/base/core/proto/android/server/wirelesschargerdetector.proto";
28import "frameworks/base/core/proto/android/privacy.proto";
29import "frameworks/proto_logging/stats/enums/app/app_enums.proto";
30import "frameworks/proto_logging/stats/enums/os/enums.proto";
31import "frameworks/proto_logging/stats/enums/view/enums.proto";
32
33message PowerManagerServiceDumpProto {
34    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
35
36    // A com.android.server.power.PowerManagerService.Constants object.
37    message ConstantsProto {
38        option (.android.msg_privacy).dest = DEST_AUTOMATIC;
39
40        optional bool is_no_cached_wake_locks = 1;
41    }
42    message ActiveWakeLocksProto {
43        option (.android.msg_privacy).dest = DEST_AUTOMATIC;
44
45        optional bool is_cpu = 1;
46        optional bool is_screen_bright = 2;
47        optional bool is_screen_dim = 3;
48        optional bool is_button_bright = 4;
49        optional bool is_proximity_screen_off = 5;
50        // only set if already awake
51        optional bool is_stay_awake = 6;
52        optional bool is_doze = 7;
53        optional bool is_draw = 8;
54    }
55    message UserActivityProto {
56        option (.android.msg_privacy).dest = DEST_AUTOMATIC;
57
58        optional bool is_screen_bright = 1;
59        optional bool is_screen_dim = 2;
60        optional bool is_screen_dream = 3;
61        optional int64 last_user_activity_time_ms = 4;
62        optional int64 last_user_activity_time_no_change_lights_ms = 5;
63        optional int32 display_group_id = 6;
64    }
65    // A com.android.server.power.PowerManagerService.UidState object.
66    message UidStateProto {
67        option (.android.msg_privacy).dest = DEST_AUTOMATIC;
68
69        optional int32 uid = 1;
70        optional string uid_string = 2;
71        optional bool is_active = 3;
72        optional int32 num_wake_locks = 4;
73        optional .android.app.ProcessStateEnum process_state = 5;
74    }
75
76    optional ConstantsProto constants = 1;
77    // A bitfield that indicates what parts of the power state have
78    // changed and need to be recalculated.
79    optional int32 dirty = 2;
80    // Indicates whether the device is awake or asleep or somewhere in between.
81    optional .android.os.PowerManagerInternalProto.Wakefulness wakefulness = 3;
82    optional bool is_wakefulness_changing = 4;
83    // True if the device is plugged into a power source.
84    optional bool is_powered = 5;
85    // The current plug type
86    optional .android.os.BatteryPluggedStateEnum plug_type = 6;
87    // The current battery level percentage.
88    optional int32 battery_level = 7;
89    // The battery level percentage at the time the dream started.
90    optional int32 battery_level_when_dream_started = 8;
91    // The current dock state.
92    optional .android.content.IntentProto.DockState dock_state = 9;
93    // True if the device should stay on.
94    optional bool is_stay_on = 10;
95    // True if the proximity sensor reads a positive result.
96    optional bool is_proximity_positive = 11;
97    // True if boot completed occurred.  We keep the screen on until this happens.
98    optional bool is_boot_completed = 12;
99    // True if systemReady() has been called.
100    optional bool is_system_ready = 13;
101    // True if auto-suspend mode is enabled.
102    optional bool is_hal_auto_suspend_mode_enabled = 14;
103    // True if interactive mode is enabled.
104    optional bool is_hal_auto_interactive_mode_enabled = 15;
105    // Summarizes the state of all active wakelocks.
106    optional ActiveWakeLocksProto active_wake_locks = 16;
107    // Have we scheduled a message to check for long wake locks?  This is when
108    // we will check. (In milliseconds timestamp)
109    optional int64 notify_long_scheduled_ms = 17;
110    // Last time we checked for long wake locks. (In milliseconds timestamp)
111    optional int64 notify_long_dispatched_ms = 18;
112    // The time we decided to do next long check. (In milliseconds timestamp)
113    optional int64 notify_long_next_check_ms = 19;
114    // Summarizes the effect of the user activity timer.
115    repeated UserActivityProto user_activity = 20;
116    // If true, instructs the display controller to wait for the proximity
117    // sensor to go negative before turning the screen on.
118    optional bool is_request_wait_for_negative_proximity = 21;
119    // True if MSG_SANDMAN has been scheduled.
120    optional bool is_sandman_scheduled = 22;
121    // True if the sandman has just been summoned for the first time since entering
122    // the dreaming or dozing state.  Indicates whether a new dream should begin.
123    optional bool is_sandman_summoned = 23;
124    // True if the battery level is currently considered low.
125    optional bool is_battery_level_low = 24;
126    // True if we are currently in light device idle mode.
127    optional bool is_light_device_idle_mode = 25;
128    // True if we are currently in device idle mode.
129    optional bool is_device_idle_mode = 26;
130    // Set of app ids that we will respect the wake locks for while in device idle mode.
131    repeated int32 device_idle_whitelist = 27;
132    // Set of app ids that are temporarily allowed to acquire wakelocks due to
133    // high-pri message
134    repeated int32 device_idle_temp_whitelist = 28;
135    // Timestamp of the last time the device was awoken.
136    optional int64 last_wake_time_ms = 29;
137    // Timestamp of the last time the device was put to sleep.
138    optional int64 last_sleep_time_ms = 30;
139    // Timestamp of the last call to user activity.
140    optional int64 last_user_activity_time_ms = 31 [deprecated = true];
141    optional int64 last_user_activity_time_no_change_lights_ms = 32 [deprecated = true];
142    // Timestamp of last interactive power hint.
143    optional int64 last_interactive_power_hint_time_ms = 33;
144    // Timestamp of the last screen brightness boost.
145    optional int64 last_screen_brightness_boost_time_ms = 34;
146    // True if screen brightness boost is in progress.
147    optional bool is_screen_brightness_boost_in_progress = 35;
148    // True if the display power state has been fully applied, which means the
149    // display is actually on or actually off or whatever was requested.
150    optional bool is_display_ready = 36;
151    // True if the wake lock suspend blocker has been acquired.
152    optional bool is_holding_wake_lock_suspend_blocker = 37;
153    // The suspend blocker used to keep the CPU alive when the display is on, the
154    // display is getting ready or there is user activity (in which case the
155    // display must be on).
156    optional bool is_holding_display_suspend_blocker = 38;
157    // Settings and configuration
158    optional PowerServiceSettingsAndConfigurationDumpProto settings_and_configuration = 39;
159    // Sleep timeout in ms. This can be -1.
160    optional sint32 sleep_timeout_ms = 40;
161    // Screen off timeout in ms
162    optional int32 screen_off_timeout_ms = 41;
163    // Screen dim duration in ms
164    optional int32 screen_dim_duration_ms = 42;
165    // We are currently in the middle of a batch change of uids.
166    optional bool are_uids_changing = 43;
167    // Some uids have actually changed while mUidsChanging was true.
168    optional bool are_uids_changed = 44;
169    // List of UIDs and their states
170    repeated UidStateProto uid_states = 45;
171    optional .android.os.LooperProto looper = 46;
172    // List of all wake locks acquired by applications.
173    repeated WakeLockProto wake_locks = 47;
174    // List of all suspend blockers.
175    repeated SuspendBlockerProto suspend_blockers = 48;
176    optional WirelessChargerDetectorProto wireless_charger_detector = 49;
177    optional BatterySaverStateMachineProto battery_saver_state_machine = 50;
178    // Attentive timeout in ms. The timeout is disabled if it is set to -1.
179    optional sint32 attentive_timeout_ms = 51;
180    // The time (in the elapsed realtime timebase) at which the battery level will reach 0%. This
181    // is provided as an enhanced estimate and only valid if
182    // last_enhanced_discharge_time_updated_elapsed is greater than 0.
183    optional int64 enhanced_discharge_time_elapsed = 52;
184    // Timestamp (in the elapsed realtime timebase) of last update to enhanced battery estimate
185    // data.
186    optional int64 last_enhanced_discharge_time_updated_elapsed = 53;
187    // Whether or not the current enhanced discharge prediction is personalized based on device
188    // usage or not.
189    optional bool is_enhanced_discharge_prediction_personalized = 54;
190    optional bool is_low_power_standby_active = 55;
191    optional LowPowerStandbyControllerDumpProto low_power_standby_controller = 56;
192    // The battery level drained by the dream.
193    optional int32 battery_level_drained_while_dreaming = 57;
194}
195
196// A com.android.server.power.PowerManagerService.SuspendBlockerImpl object.
197message SuspendBlockerProto {
198    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
199
200    optional string name = 1;
201    optional int32 reference_count = 2;
202}
203
204// A com.android.server.power.PowerManagerService.WakeLock object.
205message WakeLockProto {
206    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
207
208    message WakeLockFlagsProto {
209        option (.android.msg_privacy).dest = DEST_AUTOMATIC;
210
211        // Turn the screen on when the wake lock is acquired.
212        optional bool is_acquire_causes_wakeup = 1;
213        // When this wake lock is released, poke the user activity timer
214        // so the screen stays on for a little longer.
215        optional bool is_on_after_release = 2;
216        // The wakelock is held by the system server on request by another app.
217        optional bool system_wakelock = 3;
218    }
219
220    optional .android.os.WakeLockLevelEnum lock_level = 1;
221    optional string tag = 2;
222    optional WakeLockFlagsProto flags = 3;
223    optional bool is_disabled = 4;
224    // Acquire time in ms
225    optional int64 acq_ms = 5;
226    optional bool is_notified_long = 6;
227    // Owner UID
228    optional int32 uid = 7;
229    // Owner PID
230    optional int32 pid = 8;
231    optional .android.os.WorkSourceProto work_source = 9;
232}
233
234message PowerServiceSettingsAndConfigurationDumpProto {
235    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
236
237    message StayOnWhilePluggedInProto {
238        option (.android.msg_privacy).dest = DEST_AUTOMATIC;
239
240        optional bool is_stay_on_while_plugged_in_ac = 1;
241        optional bool is_stay_on_while_plugged_in_usb = 2;
242        optional bool is_stay_on_while_plugged_in_wireless = 3;
243        optional bool is_stay_on_while_plugged_in_dock = 4;
244    }
245    message ScreenBrightnessSettingLimitsProto {
246        option (.android.msg_privacy).dest = DEST_AUTOMATIC;
247
248        reserved 1, 2, 3; // setting_minimum, setting_maximum, setting_default
249        optional float setting_minimum_float = 4;
250        optional float setting_maximum_float = 5;
251        optional float setting_default_float = 6;
252    }
253
254    // True to decouple auto-suspend mode from the display state.
255    optional bool is_decouple_hal_auto_suspend_mode_from_display_config = 1;
256    // True to decouple interactive mode from the display state.
257    optional bool is_decouple_hal_interactive_mode_from_display_config = 2;
258    // True if the device should wake up when plugged or unplugged.
259    optional bool is_wake_up_when_plugged_or_unplugged_config = 3;
260    // True if the device should wake up when plugged or unplugged in theater mode.
261    optional bool is_wake_up_when_plugged_or_unplugged_in_theater_mode_config = 4;
262    // True if theater mode is enabled
263    optional bool is_theater_mode_enabled = 5;
264    // True if the device should suspend when the screen is off due to proximity.
265    optional bool is_suspend_when_screen_off_due_to_proximity_config = 6;
266    // True if dreams are supported on this device.
267    optional bool are_dreams_supported_config = 7;
268    // Default value for dreams enabled
269    optional bool are_dreams_enabled_by_default_config = 8;
270    // Default value for dreams activate-on-sleep
271    optional bool are_dreams_activated_on_sleep_by_default_config = 9;
272    // Default value for dreams activate-on-dock
273    optional bool are_dreams_activated_on_dock_by_default_config = 10;
274    // True if dreams can run while not plugged in.
275    optional bool are_dreams_enabled_on_battery_config = 11;
276    // Minimum battery level to allow dreaming when powered.
277    // Use -1 to disable this safety feature.
278    optional sint32 dreams_battery_level_minimum_when_powered_config = 12;
279    // Minimum battery level to allow dreaming when not powered.
280    // Use -1 to disable this safety feature.
281    optional sint32 dreams_battery_level_minimum_when_not_powered_config = 13;
282    // If the battery level drops by this percentage and the user activity
283    // timeout has expired, then assume the device is receiving insufficient
284    // current to charge effectively and terminate the dream.  Use -1 to disable
285    // this safety feature.
286    optional sint32 dreams_battery_level_drain_cutoff_config = 14;
287    // True if dreams are enabled by the user.
288    optional bool are_dreams_enabled_setting = 15;
289    // True if dreams should be activated on sleep.
290    optional bool are_dreams_activate_on_sleep_setting = 16;
291    // True if dreams should be activated on dock.
292    optional bool are_dreams_activate_on_dock_setting = 17;
293    // True if doze should not be started until after the screen off transition.
294    optional bool is_doze_after_screen_off_config = 18;
295    // The minimum screen off timeout, in milliseconds.
296    optional int32 minimum_screen_off_timeout_config_ms = 19;
297    // The screen dim duration, in milliseconds.
298    optional int32 maximum_screen_dim_duration_config_ms = 20;
299    // The maximum screen dim time expressed as a ratio relative to the screen off timeout.
300    optional float maximum_screen_dim_ratio_config = 21;
301    // The screen off timeout setting value in milliseconds.
302    optional int32 screen_off_timeout_setting_ms = 22;
303    // The sleep timeout setting value in milliseconds. Default value is -1.
304    optional sint32 sleep_timeout_setting_ms = 23;
305    // The maximum allowable screen off timeout according to the device administration policy.
306    optional int32 maximum_screen_off_timeout_from_device_admin_ms = 24;
307    optional bool is_maximum_screen_off_timeout_from_device_admin_enforced_locked = 25;
308    // The stay on while plugged in setting.
309    // A set of battery conditions under which to make the screen stay on.
310    optional StayOnWhilePluggedInProto stay_on_while_plugged_in = 26;
311    // The screen brightness mode.
312    optional .android.providers.settings.SettingsProto.ScreenBrightnessMode screen_brightness_mode_setting = 27;
313    // The screen brightness setting override from the window manager
314    // to allow the current foreground activity to override the brightness.
315    // Use -1 to disable.
316    optional sint32 screen_brightness_override_from_window_manager = 28;
317    // The user activity timeout override from the window manager
318    // to allow the current foreground activity to override the user activity
319    // timeout. Use -1 to disable.
320    optional sint64 user_activity_timeout_override_from_window_manager_ms = 29;
321    // The window manager has determined the user to be inactive via other means.
322    // Set this to false to disable.
323    optional bool is_user_inactive_override_from_window_manager = 30;
324    // The screen state to use while dozing.
325    optional .android.view.DisplayStateEnum doze_screen_state_override_from_dream_manager = 31;
326    // The screen brightness to use while dozing.
327    optional float dozed_screen_brightness_override_from_dream_manager = 32;
328    // Screen brightness settings limits.
329    optional ScreenBrightnessSettingLimitsProto screen_brightness_setting_limits = 33;
330    // True if double tap to wake is enabled
331    optional bool is_double_tap_wake_enabled = 34;
332    // True if we are currently in VR Mode.
333    optional bool is_vr_mode_enabled = 35;
334    // True if Sidekick is controlling the display and we shouldn't change its power mode.
335    optional bool draw_wake_lock_override_from_sidekick = 36;
336    // The attentive timeout setting value in milliseconds. Default value is -1.
337    optional sint32 attentive_timeout_setting_ms = 37;
338    // The attentive timeout config value in milliseconds.
339    optional sint32 attentive_timeout_config_ms = 38;
340    // The attentive warning duration config value in milliseconds.
341    optional sint32 attentive_warning_duration_config_ms = 39;
342}
343
344message BatterySaverStateMachineProto {
345    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
346
347    // Whether battery saver is enabled.
348    optional bool enabled = 1;
349
350    enum StateEnum {
351        STATE_UNKNOWN = 0;
352        STATE_OFF = 1;
353        STATE_MANUAL_ON = 2;
354        STATE_AUTOMATIC_ON = 3;
355        STATE_OFF_AUTOMATIC_SNOOZED = 4;
356        STATE_PENDING_STICKY_ON = 5;
357    }
358    optional StateEnum state = 18;
359
360    // Whether full battery saver is enabled.
361    optional bool is_full_enabled = 14;
362
363    // Whether adaptive battery saver is enabled.
364    optional bool is_adaptive_enabled = 15;
365
366    // Whether the battery saver policy indicates that is_enabled should be
367    // advertised.
368    optional bool should_advertise_is_enabled = 16;
369
370    // Whether system has booted.
371    optional bool boot_completed = 2;
372
373    // Whether settings have been loaded already.
374    optional bool settings_loaded = 3;
375
376    // Whether battery status has been set at least once.
377    optional bool battery_status_set = 4;
378
379    reserved 5; // battery_saver_snoozing
380
381    // Whether the device is connected to any power source.
382    optional bool is_powered = 6;
383
384    // Current battery level in %, 0-100.
385    optional int32 battery_level = 7;
386
387    // Whether battery level is low or not.
388    optional bool is_battery_level_low = 8;
389
390    // Denotes which threshold should be used for automatic Battery Saver triggering.
391    enum AutomaticTriggerEnum {
392        TRIGGER_PERCENTAGE = 0;
393        TRIGGER_DYNAMIC = 1;
394    }
395    // The value of Global.AUTOMATIC_POWER_SAVE_MODE. This is a cached value, so it could
396    // be slightly different from what's in GlobalSettingsProto.DynamicPowerSavings.
397    optional AutomaticTriggerEnum setting_automatic_trigger = 19;
398
399    // The value of Global.LOW_POWER_MODE. This is a cached value, so it could
400    // be slightly different from what's in GlobalSettingsProto.LowPowerMode.
401    optional bool setting_battery_saver_enabled = 9;
402
403    // The value of Global.LOW_POWER_MODE_STICKY. This is a cached value, so it could
404    // be slightly different from what's in GlobalSettingsProto.LowPowerMode.
405    optional bool setting_battery_saver_enabled_sticky = 10;
406
407    // The value of Global.LOW_POWER_MODE_TRIGGER_LEVEL. This is a cached value, so it could
408    // be slightly different from what's in GlobalSettingsProto.LowPowerMode.
409    optional int32 setting_battery_saver_trigger_threshold = 11;
410
411    // The value of Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED. This is a cached value, so
412    // it could be slightly different from what's in GlobalSettingsProto.LowPowerMode.
413    optional bool setting_battery_saver_sticky_auto_disable_enabled = 12;
414
415    // The value of Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL. This is a cached value, so it
416    // could be slightly different from what's in GlobalSettingsProto.LowPowerMode.
417    optional int32 setting_battery_saver_sticky_auto_disable_threshold = 13;
418
419    // The last time adaptive battery saver was changed by an external service,
420    // using elapsed realtime as the timebase.
421    optional int64 last_adaptive_battery_saver_changed_externally_elapsed = 17;
422
423    // The default disable threshold for Dynamic Power Savings enabled battery saver.
424    optional int32 default_dynamic_disable_threshold = 20;
425
426    // When to disable battery saver again if it was enabled due to an external suggestion.
427    // Corresponds to Global.DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD. This is a cached value,
428    // so it could be slightly different from what's in GlobalSettingsProto.DynamicPowerSavings.
429    optional int32 dynamic_disable_threshold = 21;
430
431    // Whether we've received a suggestion that battery saver should be on from an external app.
432    // Corresponds to Global.DYNAMIC_POWER_SAVINGS_ENABLED. This is a cached value, so it could
433    // be slightly different from what's in GlobalSettingsProto.DynamicPowerSavings.
434    optional bool dynamic_battery_saver_enabled = 22;
435
436    // Next tag: 23
437}
438
439message LowPowerStandbyControllerDumpProto {
440    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
441
442    // True if Low Power Standby is active
443    optional bool is_active = 1;
444
445    // True if Low Power Standby is enabled
446    optional bool is_enabled = 2;
447
448    // True if Low Power Standby is supported
449    optional bool is_supported_config = 3;
450
451    // True if Low Power Standby is enabled by default
452    optional bool is_enabled_by_default_config = 4;
453
454    // True if the device is currently interactive
455    optional bool is_interactive = 5;
456
457    // Time (in elapsedRealtime) when the device was last interactive
458    optional int64 last_interactive_time = 6;
459
460    // Timeout (in milliseconds) after becoming non-interactive that Low Power Standby can activate
461    optional int32 standby_timeout_config = 7;
462
463    // True if the device has entered idle mode since becoming non-interactive
464    optional bool idle_since_non_interactive = 8;
465
466    // True if the device is currently in idle mode
467    optional bool is_device_idle = 9;
468
469    // Set of app ids that are exempt form low power standby
470    repeated int32 allowlist = 10;
471
472    // The active policy specifying exemptions
473    optional LowPowerStandbyPolicyProto policy = 11;
474
475    // Next tag: 12
476}
477
478message LowPowerStandbyPolicyProto {
479    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
480
481    // Name of the policy
482    optional string identifier = 1;
483
484    // Packages that are exempt from Low Power Standby restrictions
485    repeated string exempt_packages = 2;
486
487    // Exemption reasons that this policy allows
488    optional int32 allowed_reasons = 3;
489
490    // Features that this policy allows to be used
491    repeated string allowed_features = 4;
492
493    // Next tag: 5
494}
495