xref: /aosp_15_r20/development/scripts/battery_simulator.py (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
1*90c8c64dSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*90c8c64dSAndroid Build Coastguard Worker#
3*90c8c64dSAndroid Build Coastguard Worker# Copyright (C) 2018 The Android Open Source Project
4*90c8c64dSAndroid Build Coastguard Worker#
5*90c8c64dSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
6*90c8c64dSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*90c8c64dSAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*90c8c64dSAndroid Build Coastguard Worker#
9*90c8c64dSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
10*90c8c64dSAndroid Build Coastguard Worker#
11*90c8c64dSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*90c8c64dSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
13*90c8c64dSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*90c8c64dSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*90c8c64dSAndroid Build Coastguard Worker# limitations under the License.
16*90c8c64dSAndroid Build Coastguard Worker
17*90c8c64dSAndroid Build Coastguard Worker"""
18*90c8c64dSAndroid Build Coastguard Workerbattery_simulator.py is an interactive shell that modifies a device's battery
19*90c8c64dSAndroid Build Coastguard Workerstatus.
20*90c8c64dSAndroid Build Coastguard Worker
21*90c8c64dSAndroid Build Coastguard Worker$ battery_simulator.py
22*90c8c64dSAndroid Build Coastguard Worker...> 60   # Sets battery level to 60%.
23*90c8c64dSAndroid Build Coastguard Worker...> on   # Plug in charger.
24*90c8c64dSAndroid Build Coastguard Worker...> 70   # Sets battery level to 70%.
25*90c8c64dSAndroid Build Coastguard Worker...> off  # Plug out charger.
26*90c8c64dSAndroid Build Coastguard Worker...> q    #quit
27*90c8c64dSAndroid Build Coastguard Worker
28*90c8c64dSAndroid Build Coastguard Worker"""
29*90c8c64dSAndroid Build Coastguard Worker
30*90c8c64dSAndroid Build Coastguard Workerimport atexit
31*90c8c64dSAndroid Build Coastguard Workerimport os
32*90c8c64dSAndroid Build Coastguard Workerimport re
33*90c8c64dSAndroid Build Coastguard Workerimport sys
34*90c8c64dSAndroid Build Coastguard Worker
35*90c8c64dSAndroid Build Coastguard Workerdef echo_run(command):
36*90c8c64dSAndroid Build Coastguard Worker    print("\x1b[36m[Running: %s]\x1b[0m" % command)
37*90c8c64dSAndroid Build Coastguard Worker    os.system(command)
38*90c8c64dSAndroid Build Coastguard Worker
39*90c8c64dSAndroid Build Coastguard Workerdef battery_unplug():
40*90c8c64dSAndroid Build Coastguard Worker    echo_run("adb shell dumpsys battery unplug")
41*90c8c64dSAndroid Build Coastguard Worker
42*90c8c64dSAndroid Build Coastguard Worker@atexit.register
43*90c8c64dSAndroid Build Coastguard Workerdef battery_reset():
44*90c8c64dSAndroid Build Coastguard Worker    echo_run("adb shell dumpsys battery reset")
45*90c8c64dSAndroid Build Coastguard Worker
46*90c8c64dSAndroid Build Coastguard Workerdef interactive_start():
47*90c8c64dSAndroid Build Coastguard Worker    while True:
48*90c8c64dSAndroid Build Coastguard Worker        try:
49*90c8c64dSAndroid Build Coastguard Worker            val = input("Type NUMBER, 'on', 'off' or 'q' > ").lower()
50*90c8c64dSAndroid Build Coastguard Worker        except EOFError:
51*90c8c64dSAndroid Build Coastguard Worker            print()
52*90c8c64dSAndroid Build Coastguard Worker            break
53*90c8c64dSAndroid Build Coastguard Worker        if val == 'q':
54*90c8c64dSAndroid Build Coastguard Worker            break
55*90c8c64dSAndroid Build Coastguard Worker        if val == "on":
56*90c8c64dSAndroid Build Coastguard Worker            echo_run("adb shell dumpsys battery set ac 1")
57*90c8c64dSAndroid Build Coastguard Worker            continue
58*90c8c64dSAndroid Build Coastguard Worker        if val == "off":
59*90c8c64dSAndroid Build Coastguard Worker            echo_run("adb shell dumpsys battery set ac 0")
60*90c8c64dSAndroid Build Coastguard Worker            continue
61*90c8c64dSAndroid Build Coastguard Worker        if re.match("\d+", val):
62*90c8c64dSAndroid Build Coastguard Worker            echo_run("adb shell dumpsys battery set level %s" % val)
63*90c8c64dSAndroid Build Coastguard Worker            continue
64*90c8c64dSAndroid Build Coastguard Worker        print("Unknown command.")
65*90c8c64dSAndroid Build Coastguard Worker
66*90c8c64dSAndroid Build Coastguard Worker
67*90c8c64dSAndroid Build Coastguard Workerdef main():
68*90c8c64dSAndroid Build Coastguard Worker    battery_unplug()
69*90c8c64dSAndroid Build Coastguard Worker    interactive_start()
70*90c8c64dSAndroid Build Coastguard Worker
71*90c8c64dSAndroid Build Coastguard Workerif __name__ == '__main__':
72*90c8c64dSAndroid Build Coastguard Worker    main()
73