# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

ATMEL_USB_VENDOR_ID = "03eb"
SERVO_USB_KBD_DEV_ID = ATMEL_USB_VENDOR_ID + ":2042"


def is_servo_usb_keyboard_present(host):
    """
    Check if DUT can see the servo USB keyboard.

    Run lsusb and look for USB devices with SERVO_USB_KBD_DEV_ID.

    @param host: An Autotest host object

    @return Boolean, True if the USB device is found. False otherwise.
    """
    return host.run(
        "lsusb -d " + SERVO_USB_KBD_DEV_ID, ignore_status=True).exit_status == 0


def is_servo_usb_wake_capable(host):
    """
    Check if servo USB keyboard can wake the DUT from S3/S0ix.

    Run lsusb -vv -d SERVO_USB_KBD_DEV_ID and check if the keyboard has wake
    capability.

    @param host: An Autotest host object

    @return Boolean, True if the USB device is found and has wake capability.
        False otherwise.

    """
    # If the DUT cannot see the USB device return False.
    if not is_servo_usb_keyboard_present(host):
        return False
    result = host.run(
        "lsusb -vv -d " + SERVO_USB_KBD_DEV_ID,
        ignore_status=True).stdout.strip()
    # lsusb should print "Remote Wakeup" if the device has remote wake
    # capability.
    return "Remote Wakeup" in result