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

AUTHOR = 'zqiu, wiley, pstew, quiche'
NAME = 'network_WiFi_SimpleConnect.wifi_check5VHT80'
TIME = 'SHORT'
TEST_TYPE = 'Server'
ATTRIBUTES = ('suite:wifi_correctness_cros_core, suite:wifi_matfunc, '
              'suite:wifi_matfunc_bcm4371, suite:wifi_release')
SUITE = ('wifi_matfunc, wifi_matfunc_bcm4371, '
         'wifi_correctness_cros_core, wifi_release')
DEPENDENCIES = 'wificell'

DOC = """
This test verifies that DUT can connect to an open 802.11ac network
on channel 36 with center channel of 42 and channel width of 80MHz.
"""


from autotest_lib.client.common_lib.cros.network import xmlrpc_datatypes
from autotest_lib.server.cros.network import hostap_config


def run(machine):
    n_caps = [hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS]
    ac_caps = [hostap_config.HostapConfig.AC_CAPABILITY_SHORT_GI_80]
    ac_mode = hostap_config.HostapConfig.MODE_11AC_MIXED
    channel_width_80_mhz = hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_80
    configurations = [(hostap_config.HostapConfig(
                                  channel=36,
                                  mode=ac_mode,
                                  n_capabilities=n_caps,
                                  vht_channel_width=channel_width_80_mhz,
                                  vht_center_channel=42,
                                  ac_capabilities=ac_caps),
                       xmlrpc_datatypes.AssociationParameters())]
    host = hosts.create_host(machine)
    job.run_test('network_WiFi_SimpleConnect',
                 tag=NAME.split('.')[1],
                 host=host,
                 raw_cmdline_args=args,
                 additional_params=configurations)


parallel_simple(run, machines)
