You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
4.1 KiB
100 lines
4.1 KiB
#!/usr/bin/env python
|
|
#
|
|
# Copyright 2016 - 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 acts import base_test
|
|
from acts.controllers.relay_lib.relay import SynchronizeRelays
|
|
|
|
|
|
class RelayDeviceSampleTest(base_test.BaseTestClass):
|
|
""" Demonstrates example usage of a configurable access point."""
|
|
|
|
def setup_class(self):
|
|
# Take devices from relay_devices.
|
|
self.relay_device = self.relay_devices[0]
|
|
|
|
# You can use this workaround to get devices by name:
|
|
|
|
relay_rig = self.relay_devices[0].rig
|
|
self.other_relay_device = relay_rig.devices['UniqueDeviceName']
|
|
# Note: If the "devices" key from the config is missing
|
|
# a GenericRelayDevice that contains every switch in the config
|
|
# will be stored in relay_devices[0]. Its name will be
|
|
# "GenericRelayDevice".
|
|
|
|
def setup_test(self):
|
|
# setup() will set the relay device to the default state.
|
|
# Unless overridden, the default state is all switches set to off.
|
|
self.relay_device.setup()
|
|
|
|
def teardown_test(self):
|
|
# clean_up() will set the relay device back to a default state.
|
|
# Unless overridden, the default state is all switches set to off.
|
|
self.relay_device.clean_up()
|
|
|
|
# Typical use of a GenericRelayDevice looks like this:
|
|
def test_relay_device(self):
|
|
|
|
# This function call will sleep until .25 seconds are up.
|
|
# Blocking_nc_for will emulate a button press, which turns on the relay
|
|
# (or stays on if it already was on) for the given time, and then turns
|
|
# off.
|
|
self.relay_device.relays['BT_Power_Button'].set_nc_for(.25)
|
|
|
|
# do_something_after_turning_on_bt_power()
|
|
|
|
# Note that the relays are mechanical switches, and do take real time
|
|
# to go from one state to the next.
|
|
|
|
self.relay_device.relays['BT_Pair'].set_nc()
|
|
|
|
# do_something_while_holding_down_the_pair_button()
|
|
|
|
self.relay_device.relays['BT_Pair'].set_no()
|
|
|
|
# do_something_after_releasing_bt_pair()
|
|
|
|
# Note that although cleanup sets the relays to the 'NO' state after
|
|
# each test, they do not press things like the power button to turn
|
|
# off whatever hardware is attached. When using a GenericRelayDevice,
|
|
# you'll have to do this manually.
|
|
# Other RelayDevices may handle this for you in their clean_up() call.
|
|
self.relay_device.relays['BT_Power_Button'].set_nc_for(.25)
|
|
|
|
def test_toggling(self):
|
|
# This test just spams the toggle on each relay.
|
|
for _ in range(0, 2):
|
|
self.relay_device.relays['BT_Power_Button'].toggle()
|
|
self.relay_device.relays['BT_Pair'].toggle()
|
|
self.relay_device.relays['BT_Reset'].toggle()
|
|
self.relay_device.relays['BT_SomethingElse'].toggle()
|
|
|
|
def test_synchronize_relays(self):
|
|
"""Toggles relays using SynchronizeRelays().
|
|
|
|
This makes each relay do it's action at the same time, without waiting
|
|
after each relay to swap. Instead, all relays swap at the same time, and
|
|
the wait is done after exiting the with statement.
|
|
"""
|
|
for _ in range(0, 10):
|
|
with SynchronizeRelays():
|
|
self.relay_device.relays['BT_Power_Button'].toggle()
|
|
self.relay_device.relays['BT_Pair'].toggle()
|
|
self.relay_device.relays['BT_Reset'].toggle()
|
|
self.relay_device.relays['BT_SomethingElse'].toggle()
|
|
|
|
# For more fine control over the wait time of relays, you can set
|
|
# Relay.transition_wait_time. This is not recommended unless you are
|
|
# using solid state relays, or async calls.
|