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