| # Lint as: python2, python3 |
| # Copyright 2022 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import enum |
| import os |
| |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.server import site_linux_system |
| from autotest_lib.server.cros import dnsname_mangler |
| |
| |
| class RPiRole(enum.Enum): |
| """Possible roles for a RaspberryPi device.""" |
| HACKRF_RUNNER = 'hackrf_runner' |
| |
| |
| def build_rpi_hostname(client_hostname=None, rpi_hostname=None): |
| """ Builds a hostname for the RaspberryPi from a client hostname. |
| |
| @param client_hostname: string hostname of DUT connected to the RaspberryPi. |
| @param rpi_hostname: string hostname of the RaspberryPi. |
| @return string hostname of the RaspberryPi or None if the hostname |
| cannot be inferred from the client hostname. |
| |
| """ |
| if not rpi_hostname and not client_hostname: |
| raise error.TestError('Either client_hostname or rpi_hostname must ' |
| 'be specified to build_rpi_hostname.') |
| |
| return dnsname_mangler.get_rpi_addr(client_hostname, |
| cmdline_override=rpi_hostname) |
| |
| class LinuxRPi(site_linux_system.LinuxSystem): |
| """Linux RaspberryPi support for WiFiTest class.""" |
| |
| def __init__(self, host, role=''): |
| """Build a LinuxRPi. |
| |
| @param host Host object representing the remote machine. |
| @param role string description of host (e.g. p2p, hackrf_runner). |
| """ |
| # Since the wlan0 interface is needed for WiFi, |
| # inherit_interface is set to True |
| # to prevent wlan0 from being removed. |
| inherit_interface = True |
| super(LinuxRPi, self).__init__(host, role, inherit_interface) |
| self.__setup() |
| |
| |
| def __setup(self): |
| """Set up this system. |
| |
| Can be used to complete initialization of a RaspberryPi object, |
| or to re-establish a good state after a reboot. |
| """ |
| self.setup_logs() |
| |
| |
| def close(self): |
| """Close global resources held by this system.""" |
| rpi_log = os.path.join(self.logdir, 'rpi_log') |
| self.get_logs(rpi_log) |
| super(LinuxRPi, self).close() |