# Copyright (c) 2012 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.

from autotest_lib.server import utils

AUTHOR = "Chrome OS Team"
NAME = "firmware_ECLidSwitch"
PURPOSE = "Servo based EC lid switch functional test"
CRITERIA = "This test will fail if EC lid switch misbehalved."
ATTRIBUTES = "suite:faft_ec, suite:faft_ec_fw_qual, suite:faft_ec3po, suite:faft_ec_tot"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
DEPENDENCIES = "ec:cros"
JOB_RETRIES = 4

DOC = """
This test check the functionality of EC lid switch handling. This includes:
    - Wake system from G3 (shutdown for more than 10 sec)
    - Wake system from S5 (shutdown for less than 10 sec)
    - Check no power button keycode is sent in S0 when lid close
    - Check keyboard backlight is switched off when lid close in S0
    - Check keyboard backlight is switched on when lid open in S0
"""

args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run_eclidswitch(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_ECLidSwitch", host=host, cmdline_args=args,
                 disable_sysinfo=True)

parallel_simple(run_eclidswitch, machines)
