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