1c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng# Copyright 2016 The Chromium OS Authors. All rights reserved.
2c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng# Use of this source code is governed by a BSD-style license that can be
3c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng# found in the LICENSE file.
4c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
5c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng"""This class defines the ADBHost Label class."""
6c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
7c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Chengimport common
8c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
9be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wileyfrom autotest_lib.client.common_lib.brillo import hal_utils
10c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Chengfrom autotest_lib.server.cros.dynamic_suite import constants
11c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Chengfrom autotest_lib.server.hosts import base_label
12c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Chengfrom autotest_lib.server.hosts import common_label
13c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
14c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
15c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin ChengBOARD_FILE = 'ro.product.device'
16c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
17c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
18c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Chengclass BoardLabel(base_label.StringPrefixLabel):
19c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng    """Determine the correct board label for the device."""
20c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
21c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng    _NAME = constants.BOARD_PREFIX.rstrip(':')
22c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
23c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng    # pylint: disable=missing-docstring
24c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng    def generate_labels(self, host):
2586d87249735ea5ebc34325b1ca9f90a79bad712bKevin Cheng        return [host.get_board_name()]
26c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
27c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng
28be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wileyclass CameraHalLabel(base_label.BaseLabel):
29be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley    """Determine whether a host has a camera HAL in the image."""
30be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley
31be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley    _NAME = 'camera-hal'
32be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley
33be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley    def exists(self, host):
34be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley        return hal_utils.has_hal('camera', host=host)
35be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley
36be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley
37b731da7cf2120c4a269e93ac06bc9d2f466ed23dRalph Nathanclass LoopbackDongleLabel(base_label.BaseLabel):
38b731da7cf2120c4a269e93ac06bc9d2f466ed23dRalph Nathan    """Determines if an audio loopback dongle is connected to the device."""
39b731da7cf2120c4a269e93ac06bc9d2f466ed23dRalph Nathan
40b731da7cf2120c4a269e93ac06bc9d2f466ed23dRalph Nathan    _NAME = 'loopback-dongle'
41b731da7cf2120c4a269e93ac06bc9d2f466ed23dRalph Nathan
42b731da7cf2120c4a269e93ac06bc9d2f466ed23dRalph Nathan    def exists(self, host):
438aabb1c53214d4ae7332412aae179fa1985fbdd8Kevin Cheng        results = host.run('cat /sys/class/switch/h2w/state',
448aabb1c53214d4ae7332412aae179fa1985fbdd8Kevin Cheng                           ignore_status=True)
458aabb1c53214d4ae7332412aae179fa1985fbdd8Kevin Cheng        return results and '0' not in results.stdout
46b731da7cf2120c4a269e93ac06bc9d2f466ed23dRalph Nathan
47b731da7cf2120c4a269e93ac06bc9d2f466ed23dRalph Nathan
48c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin ChengADB_LABELS = [
49c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng    BoardLabel(),
50be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley    CameraHalLabel(),
51be3af705b62360b1f6dc0b0ee317e13e68a8701cChristopher Wiley    LoopbackDongleLabel(),
52c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng    common_label.OSLabel(),
53c6a645adaf6f134d9457cf8b5d3408d66bfbb1efKevin Cheng]
54