Home | History | Annotate | Download | only in service
      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 
     17 syntax = "proto3";
     18 
     19 package android.service.power;
     20 
     21 option java_multiple_files = true;
     22 option java_outer_classname = "PowerServiceProto";
     23 
     24 import "frameworks/base/core/proto/android/os/looper.proto";
     25 import "frameworks/base/core/proto/android/os/worksource.proto";
     26 import "frameworks/base/core/proto/android/service/wirelesschargerdetector.proto";
     27 
     28 message PowerServiceDumpProto {
     29     message ConstantsProto {
     30         bool is_no_cached_wake_locks = 1;
     31     }
     32     message ActiveWakeLocksProto {
     33         bool is_cpu = 1;
     34         bool is_screen_bright = 2;
     35         bool is_screen_dim = 3;
     36         bool is_button_bright = 4;
     37         bool is_proximity_screen_off = 5;
     38         // only set if already awake
     39         bool is_stay_awake = 6;
     40         bool is_doze = 7;
     41         bool is_draw = 8;
     42     }
     43     message UserActivityProto {
     44         bool is_screen_bright = 1;
     45         bool is_screen_dim = 2;
     46         bool is_screen_dream = 3;
     47     }
     48     message UidProto {
     49         // Enum values gotten from ActivityManager.java
     50         enum ProcessState {
     51             // Process is a persistent system process.
     52             PROCESS_STATE_PERSISTENT = 0;
     53             // Process is a persistent system process and is doing UI.
     54             PROCESS_STATE_PERSISTENT_UI = 1;
     55             // Process is hosting the current top activities. Note that this
     56             // covers all activities that are visible to the user.
     57             PROCESS_STATE_TOP = 2;
     58             // Process is hosting a foreground service due to a system binding.
     59             PROCESS_STATE_BOUND_FOREGROUND_SERVICE = 3;
     60             // Process is hosting a foreground service.
     61             PROCESS_STATE_FOREGROUND_SERVICE = 4;
     62             // Same as {@link #PROCESS_STATE_TOP} but while device is sleeping.
     63             PROCESS_STATE_TOP_SLEEPING = 5;
     64             // Process is important to the user, and something they are aware of.
     65             PROCESS_STATE_IMPORTANT_FOREGROUND = 6;
     66             // Process is important to the user, but not something they are aware of.
     67             PROCESS_STATE_IMPORTANT_BACKGROUND = 7;
     68             // Process is in the background running a backup/restore operation.
     69             PROCESS_STATE_BACKUP = 8;
     70             // Process is in the background, but it can't restore its state so
     71             // we want to try to avoid killing it.
     72             PROCESS_STATE_HEAVY_WEIGHT = 9;
     73             // Process is in the background running a service.
     74             PROCESS_STATE_SERVICE = 10;
     75             // Process is in the background running a receiver.
     76             PROCESS_STATE_RECEIVER = 11;
     77             // Process is in the background but hosts the home activity.
     78             PROCESS_STATE_HOME = 12;
     79             // Process is in the background but hosts the last shown activity.
     80             PROCESS_STATE_LAST_ACTIVITY = 13;
     81             // Process is being cached for later use and contains activities.
     82             PROCESS_STATE_CACHED_ACTIVITY = 14;
     83             // Process is being cached for later use and is a client of another
     84             // cached process that contains activities.
     85             PROCESS_STATE_CACHED_ACTIVITY_CLIENT = 15;
     86             // Process is being cached for later use and is empty.
     87             PROCESS_STATE_CACHED_EMPTY = 16;
     88             // Process does not exist.
     89             PROCESS_STATE_NONEXISTENT = 17;
     90         }
     91         int32 uid = 1;
     92         string uid_string = 2;
     93         bool is_active = 3;
     94         int32 num_wake_locks = 4;
     95         bool is_process_state_unknown = 5;
     96         ProcessState process_state = 6;
     97     }
     98 
     99     // Enum values gotten from PowerManagerInternal.java
    100     enum Wakefulness {
    101         WAKEFULNESS_ASLEEP = 0;
    102         WAKEFULNESS_AWAKE = 1;
    103         WAKEFULNESS_DREAMING = 2;
    104         WAKEFULNESS_DOZING = 3;
    105         WAKEFULNESS_UNKNOWN = 4;
    106     }
    107     // Enum values gotten from BatteryManager.java
    108     enum PlugType {
    109         PLUG_TYPE_NONE = 0;
    110         PLUG_TYPE_PLUGGED_AC = 1;
    111         PLUG_TYPE_PLUGGED_USB = 2;
    112         PLUG_TYPE_PLUGGED_WIRELESS = 4;
    113     }
    114     // Enum values gotten from Intent.java
    115     enum DockState {
    116         DOCK_STATE_UNDOCKED = 0;
    117         DOCK_STATE_DESK = 1;
    118         DOCK_STATE_CAR = 2;
    119         DOCK_STATE_LE_DESK = 3;
    120         DOCK_STATE_HE_DESK = 4;
    121     }
    122 
    123     ConstantsProto constants = 1;
    124     // A bitfield that indicates what parts of the power state have
    125     // changed and need to be recalculated.
    126     int32 dirty = 2;
    127     // Indicates whether the device is awake or asleep or somewhere in between.
    128     Wakefulness wakefulness = 3;
    129     bool is_wakefulness_changing = 4;
    130     // True if the device is plugged into a power source.
    131     bool is_powered = 5;
    132     // The current plug type
    133     PlugType plug_type = 6;
    134     // The current battery level percentage.
    135     int32 battery_level = 7;
    136     // The battery level percentage at the time the dream started.
    137     int32 battery_level_when_dream_started = 8;
    138     // The current dock state.
    139     DockState dock_state = 9;
    140     // True if the device should stay on.
    141     bool is_stay_on = 10;
    142     // True if the proximity sensor reads a positive result.
    143     bool is_proximity_positive = 11;
    144     // True if boot completed occurred.  We keep the screen on until this happens.
    145     bool is_boot_completed = 12;
    146     // True if systemReady() has been called.
    147     bool is_system_ready = 13;
    148     // True if auto-suspend mode is enabled.
    149     bool is_hal_auto_suspend_mode_enabled = 14;
    150     // True if interactive mode is enabled.
    151     bool is_hal_auto_interactive_mode_enabled = 15;
    152     // Summarizes the state of all active wakelocks.
    153     ActiveWakeLocksProto active_wake_locks = 16;
    154     // Have we scheduled a message to check for long wake locks?  This is when
    155     // we will check. (In milliseconds timestamp)
    156     int64 notify_long_scheduled_ms = 17;
    157     // Last time we checked for long wake locks. (In milliseconds timestamp)
    158     int64 notify_long_dispatched_ms = 18;
    159     // The time we decided to do next long check. (In milliseconds timestamp)
    160     int64 notify_long_next_check_ms = 19;
    161     // Summarizes the effect of the user activity timer.
    162     UserActivityProto user_activity = 20;
    163     // If true, instructs the display controller to wait for the proximity
    164     // sensor to go negative before turning the screen on.
    165     bool is_request_wait_for_negative_proximity = 21;
    166     // True if MSG_SANDMAN has been scheduled.
    167     bool is_sandman_scheduled = 22;
    168     // True if the sandman has just been summoned for the first time since entering
    169     // the dreaming or dozing state.  Indicates whether a new dream should begin.
    170     bool is_sandman_summoned = 23;
    171     // If true, the device is in low power mode.
    172     bool is_low_power_mode_enabled = 24;
    173     // True if the battery level is currently considered low.
    174     bool is_battery_level_low = 25;
    175     // True if we are currently in light device idle mode.
    176     bool is_light_device_idle_mode = 26;
    177     // True if we are currently in device idle mode.
    178     bool is_device_idle_mode = 27;
    179     // Set of app ids that we will always respect the wake locks for.
    180     repeated int32 device_idle_whitelist = 28;
    181     // Set of app ids that are temporarily allowed to acquire wakelocks due to
    182     // high-pri message
    183     repeated int32 device_idle_temp_whitelist = 29;
    184     // Timestamp of the last time the device was awoken.
    185     int64 last_wake_time_ms = 30;
    186     // Timestamp of the last time the device was put to sleep.
    187     int64 last_sleep_time_ms = 31;
    188     // Timestamp of the last call to user activity.
    189     int64 last_user_activity_time_ms = 32;
    190     int64 last_user_activity_time_no_change_lights_ms = 33;
    191     // Timestamp of last interactive power hint.
    192     int64 last_interactive_power_hint_time_ms = 34;
    193     // Timestamp of the last screen brightness boost.
    194     int64 last_screen_brightness_boost_time_ms = 35;
    195     // True if screen brightness boost is in progress.
    196     bool is_screen_brightness_boost_in_progress = 36;
    197     // True if the display power state has been fully applied, which means the
    198     // display is actually on or actually off or whatever was requested.
    199     bool is_display_ready = 37;
    200     // True if the wake lock suspend blocker has been acquired.
    201     bool is_holding_wake_lock_suspend_blocker = 38;
    202     // The suspend blocker used to keep the CPU alive when the display is on, the
    203     // display is getting ready or there is user activity (in which case the
    204     // display must be on).
    205     bool is_holding_display_suspend_blocker = 39;
    206     // Settings and configuration
    207     PowerServiceSettingsAndConfigurationDumpProto settings_and_configuration = 40;
    208     // Sleep timeout in ms
    209     sint32 sleep_timeout_ms = 41;
    210     // Screen off timeout in ms
    211     int32 screen_off_timeout_ms = 42;
    212     // Screen dim duration in ms
    213     int32 screen_dim_duration_ms = 43;
    214     // We are currently in the middle of a batch change of uids.
    215     bool are_uids_changing = 44;
    216     // Some uids have actually changed while mUidsChanging was true.
    217     bool are_uids_changed = 45;
    218     // List of UIDs and their states
    219     repeated UidProto uids = 46;
    220     android.os.LooperProto looper = 47;
    221     // List of all wake locks acquired by applications.
    222     repeated WakeLockProto wake_locks = 48;
    223     // List of all suspend blockers.
    224     repeated SuspendBlockerProto suspend_blockers = 49;
    225     WirelessChargerDetectorProto wireless_charger_detector = 50;
    226 }
    227 
    228 message SuspendBlockerProto {
    229     string name = 1;
    230     int32 reference_count = 2;
    231 }
    232 
    233 message WakeLockProto {
    234     message WakeLockFlagsProto {
    235         // Turn the screen on when the wake lock is acquired.
    236         bool is_acquire_causes_wakeup = 1;
    237         // When this wake lock is released, poke the user activity timer
    238         // so the screen stays on for a little longer.
    239         bool is_on_after_release = 2;
    240     }
    241 
    242     // Enum values gotten from PowerManager.java
    243     enum LockLevel {
    244         WAKE_LOCK_INVALID = 0;
    245         // Ensures that the CPU is running.
    246         PARTIAL_WAKE_LOCK = 1;
    247         // Ensures that the screen is on (but may be dimmed).
    248         SCREEN_DIM_WAKE_LOCK = 6;
    249         // Ensures that the screen is on at full brightness.
    250         SCREEN_BRIGHT_WAKE_LOCK = 10;
    251         // Ensures that the screen and keyboard backlight are on at full brightness.
    252         FULL_WAKE_LOCK = 26;
    253         // Turns the screen off when the proximity sensor activates.
    254         PROXIMITY_SCREEN_OFF_WAKE_LOCK = 32;
    255         // Put the screen in a low power state and allow the CPU to suspend
    256         // if no other wake locks are held.
    257         DOZE_WAKE_LOCK = 64;
    258         // Keep the device awake enough to allow drawing to occur.
    259         DRAW_WAKE_LOCK = 128;
    260     }
    261 
    262     LockLevel lock_level = 1;
    263     string tag = 2;
    264     WakeLockFlagsProto flags = 3;
    265     bool is_disabled = 4;
    266     // Acquire time in ms
    267     int64 acq_ms = 5;
    268     bool is_notified_long = 6;
    269     // Owner UID
    270     int32 uid = 7;
    271     // Owner PID
    272     int32 pid = 8;
    273     android.os.WorkSourceProto work_source = 9;
    274 }
    275 
    276 message PowerServiceSettingsAndConfigurationDumpProto {
    277     message StayOnWhilePluggedInProto {
    278         bool is_stay_on_while_plugged_in_ac = 1;
    279         bool is_stay_on_while_plugged_in_usb = 2;
    280         bool is_stay_on_while_plugged_in_wireless = 3;
    281     }
    282     message ScreenBrightnessSettingLimitsProto {
    283         int32 setting_minimum = 1;
    284         int32 setting_maximum = 2;
    285         int32 setting_default = 3;
    286         int32 setting_for_vr_default = 4;
    287     }
    288 
    289     // Enum values gotten from Settings.java
    290     enum ScreenBrightnessMode {
    291         SCREEN_BRIGHTNESS_MODE_MANUAL = 0;
    292         SCREEN_BRIGHTNESS_MODE_AUTOMATIC = 1;
    293     }
    294     // Enum values gotten from Display.java
    295     enum DisplayState {
    296         DISPLAY_STATE_UNKNOWN = 0;
    297         DISPLAY_STATE_OFF = 1;
    298         DISPLAY_STATE_ON = 2;
    299         DISPLAY_STATE_DOZE = 3;
    300         DISPLAY_STATE_DOZE_SUSPEND = 4;
    301         DISPLAY_STATE_VR = 5;
    302     }
    303 
    304 
    305     // True to decouple auto-suspend mode from the display state.
    306     bool is_decouple_hal_auto_suspend_mode_from_display_config = 1;
    307     // True to decouple interactive mode from the display state.
    308     bool is_decouple_hal_interactive_mode_from_display_config = 2;
    309     // True if the device should wake up when plugged or unplugged.
    310     bool is_wake_up_when_plugged_or_unplugged_config = 3;
    311     // True if the device should wake up when plugged or unplugged in theater mode.
    312     bool is_wake_up_when_plugged_or_unplugged_in_theater_mode_config = 4;
    313     // True if theater mode is enabled
    314     bool is_theater_mode_enabled = 5;
    315     // True if the device should suspend when the screen is off due to proximity.
    316     bool is_suspend_when_screen_off_due_to_proximity_config = 6;
    317     // True if dreams are supported on this device.
    318     bool are_dreams_supported_config = 7;
    319     // Default value for dreams enabled
    320     bool are_dreams_enabled_by_default_config = 8;
    321     // Default value for dreams activate-on-sleep
    322     bool are_dreams_activated_on_sleep_by_default_config = 9;
    323     // Default value for dreams activate-on-dock
    324     bool are_dreams_activated_on_dock_by_default_config = 10;
    325     // True if dreams can run while not plugged in.
    326     bool are_dreams_enabled_on_battery_config = 11;
    327     // Minimum battery level to allow dreaming when powered.
    328     // Use -1 to disable this safety feature.
    329     sint32 dreams_battery_level_minimum_when_powered_config = 12;
    330     // Minimum battery level to allow dreaming when not powered.
    331     // Use -1 to disable this safety feature.
    332     sint32 dreams_battery_level_minimum_when_not_powered_config = 13;
    333     // If the battery level drops by this percentage and the user activity
    334     // timeout has expired, then assume the device is receiving insufficient
    335     // current to charge effectively and terminate the dream.  Use -1 to disable
    336     // this safety feature.
    337     sint32 dreams_battery_level_drain_cutoff_config = 14;
    338     // True if dreams are enabled by the user.
    339     bool are_dreams_enabled_setting = 15;
    340     // True if dreams should be activated on sleep.
    341     bool are_dreams_activate_on_sleep_setting = 16;
    342     // True if dreams should be activated on dock.
    343     bool are_dreams_activate_on_dock_setting = 17;
    344     // True if doze should not be started until after the screen off transition.
    345     bool is_doze_after_screen_off_config = 18;
    346     // If true, the device is in low power mode.
    347     bool is_low_power_mode_setting = 19;
    348     // Current state of whether the settings are allowing auto low power mode.
    349     bool is_auto_low_power_mode_configured = 20;
    350     // The user turned off low power mode below the trigger level
    351     bool is_auto_low_power_mode_snoozing = 21;
    352     // The minimum screen off timeout, in milliseconds.
    353     int32 minimum_screen_off_timeout_config_ms = 22;
    354     // The screen dim duration, in milliseconds.
    355     int32 maximum_screen_dim_duration_config_ms = 23;
    356     // The maximum screen dim time expressed as a ratio relative to the screen off timeout.
    357     float maximum_screen_dim_ratio_config = 24;
    358     // The screen off timeout setting value in milliseconds.
    359     int32 screen_off_timeout_setting_ms = 25;
    360     // The sleep timeout setting value in milliseconds.
    361     sint32 sleep_timeout_setting_ms = 26;
    362     // The maximum allowable screen off timeout according to the device administration policy.
    363     int32 maximum_screen_off_timeout_from_device_admin_ms = 27;
    364     bool is_maximum_screen_off_timeout_from_device_admin_enforced_locked = 28;
    365     // The stay on while plugged in setting.
    366     // A set of battery conditions under which to make the screen stay on.
    367     StayOnWhilePluggedInProto stay_on_while_plugged_in = 29;
    368     // The screen brightness setting, from 0 to 255.
    369     // Use -1 if no value has been set.
    370     sint32 screen_brightness_setting = 30;
    371     // The screen auto-brightness adjustment setting, from -1 to 1.
    372     // Use 0 if there is no adjustment.
    373     float screen_auto_brightness_adjustment_setting = 31;
    374     // The screen brightness mode.
    375     ScreenBrightnessMode screen_brightness_mode_setting = 32;
    376     // The screen brightness setting override from the window manager
    377     // to allow the current foreground activity to override the brightness.
    378     // Use -1 to disable.
    379     sint32 screen_brightness_override_from_window_manager = 33;
    380     // The user activity timeout override from the window manager
    381     // to allow the current foreground activity to override the user activity
    382     // timeout. Use -1 to disable.
    383     sint64 user_activity_timeout_override_from_window_manager_ms = 34;
    384     // The window manager has determined the user to be inactive via other means.
    385     // Set this to false to disable.
    386     bool is_user_inactive_override_from_window_manager = 35;
    387     // The screen brightness setting override from the settings application
    388     // to temporarily adjust the brightness until next updated,
    389     // Use -1 to disable.
    390     sint32 temporary_screen_brightness_setting_override = 36;
    391     // The screen brightness adjustment setting override from the settings
    392     // application to temporarily adjust the auto-brightness adjustment factor
    393     // until next updated, in the range -1..1.
    394     // Use NaN to disable.
    395     float temporary_screen_auto_brightness_adjustment_setting_override = 37;
    396     // The screen state to use while dozing.
    397     DisplayState doze_screen_state_override_from_dream_manager = 38;
    398     // The screen brightness to use while dozing.
    399     float dozed_screen_brightness_override_from_dream_manager = 39;
    400     // Screen brightness settings limits.
    401     ScreenBrightnessSettingLimitsProto screen_brightness_setting_limits = 40;
    402     // The screen brightness setting, from 0 to 255, to be used while in VR Mode.
    403     int32 screen_brightness_for_vr_setting = 41;
    404     // True if double tap to wake is enabled
    405     bool is_double_tap_wake_enabled = 42;
    406     // True if we are currently in VR Mode.
    407     bool is_vr_mode_enabled = 43;
    408 }
    409