| # P2P vendor specific extension tests |
| # Copyright (c) 2014, Qualcomm Atheros, Inc. |
| |
| import logging |
| logger = logging.getLogger() |
| |
| def test_p2p_ext_discovery(dev): |
| """P2P device discovery with vendor specific extensions""" |
| addr0 = dev[0].p2p_dev_addr() |
| addr1 = dev[1].p2p_dev_addr() |
| |
| try: |
| if "OK" not in dev[0].request("VENDOR_ELEM_ADD 1 dd050011223344"): |
| raise Exception("VENDOR_ELEM_ADD failed") |
| res = dev[0].request("VENDOR_ELEM_GET 1") |
| if res != "dd050011223344": |
| raise Exception("Unexpected VENDOR_ELEM_GET result: " + res) |
| if "OK" not in dev[0].request("VENDOR_ELEM_ADD 1 dd06001122335566"): |
| raise Exception("VENDOR_ELEM_ADD failed") |
| res = dev[0].request("VENDOR_ELEM_GET 1") |
| if res != "dd050011223344dd06001122335566": |
| raise Exception("Unexpected VENDOR_ELEM_GET result(2): " + res) |
| res = dev[0].request("VENDOR_ELEM_GET 2") |
| if res != "": |
| raise Exception("Unexpected VENDOR_ELEM_GET result(3): " + res) |
| if "OK" not in dev[0].request("VENDOR_ELEM_REMOVE 1 dd050011223344"): |
| raise Exception("VENDOR_ELEM_REMOVE failed") |
| res = dev[0].request("VENDOR_ELEM_GET 1") |
| if res != "dd06001122335566": |
| raise Exception("Unexpected VENDOR_ELEM_GET result(4): " + res) |
| if "OK" not in dev[0].request("VENDOR_ELEM_REMOVE 1 dd06001122335566"): |
| raise Exception("VENDOR_ELEM_REMOVE failed") |
| res = dev[0].request("VENDOR_ELEM_GET 1") |
| if res != "": |
| raise Exception("Unexpected VENDOR_ELEM_GET result(5): " + res) |
| if "OK" not in dev[0].request("VENDOR_ELEM_ADD 1 dd050011223344dd06001122335566"): |
| raise Exception("VENDOR_ELEM_ADD failed(2)") |
| |
| if "FAIL" not in dev[0].request("VENDOR_ELEM_REMOVE 1 dd051122334455"): |
| raise Exception("Unexpected VENDOR_ELEM_REMOVE success") |
| if "FAIL" not in dev[0].request("VENDOR_ELEM_REMOVE 1 dd"): |
| raise Exception("Unexpected VENDOR_ELEM_REMOVE success(2)") |
| if "FAIL" not in dev[0].request("VENDOR_ELEM_ADD 1 ddff"): |
| raise Exception("Unexpected VENDOR_ELEM_ADD success(3)") |
| |
| dev[0].p2p_listen() |
| if not dev[1].discover_peer(addr0): |
| raise Exception("Device discovery timed out") |
| if not dev[0].discover_peer(addr1): |
| raise Exception("Device discovery timed out") |
| |
| peer = dev[1].get_peer(addr0) |
| if peer['vendor_elems'] != "dd050011223344dd06001122335566": |
| raise Exception("Vendor elements not reported correctly") |
| |
| res = dev[0].request("VENDOR_ELEM_GET 1") |
| if res != "dd050011223344dd06001122335566": |
| raise Exception("Unexpected VENDOR_ELEM_GET result(6): " + res) |
| if "OK" not in dev[0].request("VENDOR_ELEM_REMOVE 1 dd06001122335566"): |
| raise Exception("VENDOR_ELEM_REMOVE failed") |
| res = dev[0].request("VENDOR_ELEM_GET 1") |
| if res != "dd050011223344": |
| raise Exception("Unexpected VENDOR_ELEM_GET result(7): " + res) |
| finally: |
| dev[0].request("VENDOR_ELEM_REMOVE 1 *") |
| |
| def test_p2p_ext_discovery_go(dev): |
| """P2P device discovery with vendor specific extensions for GO""" |
| addr0 = dev[0].p2p_dev_addr() |
| addr1 = dev[1].p2p_dev_addr() |
| |
| try: |
| if "OK" not in dev[0].request("VENDOR_ELEM_ADD 2 dd050011223344dd06001122335566"): |
| raise Exception("VENDOR_ELEM_ADD failed") |
| if "OK" not in dev[0].request("VENDOR_ELEM_ADD 3 dd050011223344dd06001122335566"): |
| raise Exception("VENDOR_ELEM_ADD failed") |
| if "OK" not in dev[0].request("VENDOR_ELEM_ADD 12 dd050011223344dd06001122335566"): |
| raise Exception("VENDOR_ELEM_ADD failed") |
| |
| dev[0].p2p_start_go(freq="2412") |
| if not dev[1].discover_peer(addr0): |
| raise Exception("Device discovery timed out") |
| peer = dev[1].get_peer(addr0) |
| if peer['vendor_elems'] != "dd050011223344dd06001122335566": |
| print peer['vendor_elems'] |
| raise Exception("Vendor elements not reported correctly") |
| finally: |
| dev[0].request("VENDOR_ELEM_REMOVE 2 *") |
| dev[0].request("VENDOR_ELEM_REMOVE 3 *") |
| dev[0].request("VENDOR_ELEM_REMOVE 12 *") |