# Copyright (c) 2013 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 = 'wiley@chromium.com'
NAME = 'network_WiFi_SimpleConnect'
TIME = 'SHORT'
TEST_TYPE = 'Server'

DOC = """
This test verifies that DUT can connect to an open 802.11n network
on 2.4 GHz channel (40MHz-channel).
"""




def run(machine):
    from autotest_lib.server.cros.wlan import hostap_config
    caps = [hostap_config.HostapConfig.N_CAPABILITY_GREENFIELD,
            hostap_config.HostapConfig.N_CAPABILITY_HT40]
    n = hostap_config.HostapConfig.MODE_11N_PURE
    configurations = [hostap_config.HostapConfig(frequency=2437,
                                                 mode=n,
                                                 n_capabilities=caps)]
    host = hosts.create_host(machine)
    job.run_test('network_WiFi_SimpleConnect',
                 host=host,
                 raw_cmdline_args=args,
                 additional_params=configurations)


parallel_simple(run, machines)
