| # This Source Code Form is subject to the terms of the Mozilla Public |
| # License, v. 2.0. If a copy of the MPL was not distributed with this |
| # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| |
| class EmulatorBattery(object): |
| |
| def __init__(self, emulator): |
| self.emulator = emulator |
| |
| def get_state(self): |
| status = {} |
| state = {} |
| |
| response = self.emulator._run_telnet('power display') |
| for line in response: |
| if ':' in line: |
| field, value = line.split(':') |
| value = value.strip() |
| if value == 'true': |
| value = True |
| elif value == 'false': |
| value = False |
| elif field == 'capacity': |
| value = float(value) |
| status[field] = value |
| |
| state['level'] = status.get('capacity', 0.0) / 100 |
| if status.get('AC') == 'online': |
| state['charging'] = True |
| else: |
| state['charging'] = False |
| |
| return state |
| |
| def get_charging(self): |
| return self.get_state()['charging'] |
| |
| def get_level(self): |
| return self.get_state()['level'] |
| |
| def set_level(self, level): |
| self.emulator._run_telnet('power capacity %d' % (level * 100)) |
| |
| def set_charging(self, charging): |
| if charging: |
| cmd = 'power ac on' |
| else: |
| cmd = 'power ac off' |
| self.emulator._run_telnet(cmd) |
| |
| charging = property(get_charging, set_charging) |
| level = property(get_level, set_level) |
| |