#!/usr/bin/python # Copyright (C) 2014 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from . import Abstract_Power_Monitor class Power_Monitor(Abstract_Power_Monitor): """ Dummy implementation for internal use only to test host-to-device interactions without need for a real power monitor. This is not to be used in any way as part of CtsVerifier or CTS verification activities in general. """ def __init__(self, device = None, wait = False, log_file_id = None ): self._device = device self._usbpassthroughmode = 1 self._voltage = 0.0 self._data_active = False self._sequence = 0 def __del__(self): self.Close() def Close(self): pass @staticmethod def Discover(): return ["dummy_monitor"] def GetStatus(self): """ Requests and waits for status. Returns status dictionary. """ return {"usbPassthroughMode": self._usbpassthroughmode, "sampleRate":1} def RampVoltage(self, start, end): self._voltage = end def SetVoltage(self, v): """ Set the output voltage, 0 to disable. """ self._voltage = v def SetMaxCurrent(self, i): """Set the max output current.""" self._max_current = i def SetUsbPassthrough(self, val): """ Set the USB passthrough mode: 0 = off, 1 = on, 2 = auto. """ self._usbpassthroughmode = val def StartDataCollection(self): """ Tell the device to start collecting and sending measurement data. """ self._data_active = True def StopDataCollection(self): """ Tell the device to stop collecting measurement data. """ self._data_active = False def CollectData(self, verbose = True): """ Return some current samples. Call StartDataCollection() first. """ #self.log("Collecting data ...", debug = True) import random if self._data_active: base = [0.003, 0.003, 0.003, (self._sequence%4)*0.0005] self._sequence += 1 values = [ random.gauss(base[(self._sequence-1)%4], 0.0005) for _ in range(100)] else: values = None return values