def test_wifi_display_persistent_group(dev): """P2P persistent group formation and re-invocation with Wi-Fi Display enabled""" try: enable_wifi_display(dev[0]) enable_wifi_display(dev[1]) enable_wifi_display(dev[2]) form(dev[0], dev[1]) peer = dev[1].get_peer(dev[0].p2p_dev_addr()) listen_freq = peer['listen_freq'] invite_from_cli(dev[0], dev[1]) invite_from_go(dev[0], dev[1]) dev[0].dump_monitor() dev[1].dump_monitor() networks = dev[0].list_networks() if len(networks) != 1: raise Exception("Unexpected number of networks") if "[P2P-PERSISTENT]" not in networks[0]['flags']: raise Exception("Not the persistent group data") if "OK" not in dev[0].global_request("P2P_GROUP_ADD persistent=" + networks[0]['id'] + " freq=" + listen_freq): raise Exception("Could not state GO") connect_cli(dev[0], dev[2]) invite_from_cli(dev[0], dev[1]) finally: dev[0].request("SET wifi_display 0") dev[1].request("SET wifi_display 0") dev[2].request("SET wifi_display 0")
def test_persistent_go_client_list(dev): """P2P GO and list of clients in persistent group""" addr0 = dev[0].p2p_dev_addr() addr1 = dev[1].p2p_dev_addr() addr2 = dev[2].p2p_dev_addr() res = dev[0].p2p_start_go(persistent=True) id = None for n in dev[0].list_networks(p2p=True): if "[P2P-PERSISTENT]" in n['flags']: id = n['id'] break if id is None: raise Exception("Could not find persistent group entry") connect_cli(dev[0], dev[1], social=True, freq=res['freq']) clients = dev[0].global_request("GET_NETWORK " + id + " p2p_client_list").rstrip() if clients != addr1: raise Exception("Unexpected p2p_client_list entry(2): " + clients) connect_cli(dev[0], dev[2], social=True, freq=res['freq']) clients = dev[0].global_request("GET_NETWORK " + id + " p2p_client_list").rstrip() if clients != addr2 + " " + addr1: raise Exception("Unexpected p2p_client_list entry(3): " + clients) peer = dev[1].get_peer(res['go_dev_addr']) dev[1].remove_group() dev[1].global_request("P2P_GROUP_ADD persistent=" + peer['persistent']) ev = dev[1].wait_global_event(["P2P-GROUP-STARTED"], timeout=30) if ev is None: raise Exception("Timeout on group restart (on client)") dev[1].group_form_result(ev) clients = dev[0].global_request("GET_NETWORK " + id + " p2p_client_list").rstrip() if clients != addr1 + " " + addr2: raise Exception("Unexpected p2p_client_list entry(4): " + clients) dev[2].remove_group() dev[1].remove_group() dev[0].remove_group() clients = dev[0].global_request("GET_NETWORK " + id + " p2p_client_list").rstrip() if clients != addr1 + " " + addr2: raise Exception("Unexpected p2p_client_list entry(5): " + clients) dev[1].p2p_listen() dev[2].p2p_listen() dev[0].request("P2P_FLUSH") dev[0].discover_peer(addr1, social=True) peer = dev[0].get_peer(addr1) if 'persistent' not in peer or peer['persistent'] != id: raise Exception("Persistent group client not recognized(1)") dev[0].discover_peer(addr2, social=True) peer = dev[0].get_peer(addr2) if 'persistent' not in peer or peer['persistent'] != id: raise Exception("Persistent group client not recognized(2)")
def test_wifi_display_go_invite(dev): """P2P GO with Wi-Fi Display inviting a client to join""" addr0 = dev[0].p2p_dev_addr() addr1 = dev[1].p2p_dev_addr() try: enable_wifi_display(dev[0]) enable_wifi_display(dev[1]) enable_wifi_display(dev[2]) dev[1].p2p_listen() if not dev[0].discover_peer(addr1, social=True): raise Exception("Peer " + addr1 + " not found") dev[0].p2p_listen() if not dev[1].discover_peer(addr0, social=True): raise Exception("Peer " + addr0 + " not found") dev[1].p2p_listen() logger.info("Authorize invitation") pin = dev[1].wps_read_pin() dev[1].global_request("P2P_CONNECT " + addr0 + " " + pin + " join auth") dev[0].p2p_start_go(freq=2412) # Add test client to the group connect_cli(dev[0], dev[2]) logger.info("Invite peer to join the group") dev[0].p2p_go_authorize_client(pin) dev[0].global_request("P2P_INVITE group=" + dev[0].group_ifname + " peer=" + addr1) ev = dev[1].wait_global_event( ["P2P-INVITATION-RECEIVED", "P2P-GROUP-STARTED"], timeout=20) if ev is None: raise Exception("Timeout on invitation on peer") if "P2P-INVITATION-RECEIVED" in ev: raise Exception( "Unexpected request to accept pre-authorized invitation") dev[0].remove_group() dev[1].wait_go_ending_session() dev[2].wait_go_ending_session() finally: dev[0].request("SET wifi_display 0") dev[1].request("SET wifi_display 0") dev[2].request("SET wifi_display 0")
def test_wifi_display_persistent_group(dev): """P2P persistent group formation and re-invocation with Wi-Fi Display enabled""" try: enable_wifi_display(dev[0]) enable_wifi_display(dev[1]) enable_wifi_display(dev[2]) form(dev[0], dev[1]) peer = dev[1].get_peer(dev[0].p2p_dev_addr()) listen_freq = peer['listen_freq'] invite_from_cli(dev[0], dev[1]) invite_from_go(dev[0], dev[1]) dev[0].dump_monitor() dev[1].dump_monitor() networks = dev[0].list_networks(p2p=True) if len(networks) != 1: raise Exception("Unexpected number of networks") if "[P2P-PERSISTENT]" not in networks[0]['flags']: raise Exception("Not the persistent group data") if "OK" not in dev[0].global_request("P2P_GROUP_ADD persistent=" + networks[0]['id'] + " freq=" + listen_freq): raise Exception("Could not start GO") ev = dev[0].wait_global_event(["P2P-GROUP-STARTED"], timeout=2) if ev is None: raise Exception("GO start up timed out") dev[0].group_form_result(ev) connect_cli(dev[0], dev[2], social=True, freq=listen_freq) dev[0].dump_monitor() dev[1].dump_monitor() invite(dev[1], dev[0]) ev = dev[1].wait_global_event(["P2P-GROUP-STARTED"], timeout=30) if ev is None: raise Exception("Timeout on group re-invocation (on client)") dev[1].group_form_result(ev) ev = dev[0].wait_global_event(["P2P-GROUP-STARTED"], timeout=0.1) if ev is not None: raise Exception("Unexpected P2P-GROUP-START on GO") hwsim_utils.test_connectivity_p2p(dev[0], dev[1]) finally: dev[0].request("SET wifi_display 0") dev[1].request("SET wifi_display 0") dev[2].request("SET wifi_display 0")
def test_wifi_display_go_invite(dev): """P2P GO with Wi-Fi Display inviting a client to join""" addr0 = dev[0].p2p_dev_addr() addr1 = dev[1].p2p_dev_addr() try: enable_wifi_display(dev[0]) enable_wifi_display(dev[1]) enable_wifi_display(dev[2]) dev[1].p2p_listen() if not dev[0].discover_peer(addr1, social=True): raise Exception("Peer " + addr1 + " not found") dev[0].p2p_listen() if not dev[1].discover_peer(addr0, social=True): raise Exception("Peer " + addr0 + " not found") dev[1].p2p_listen() logger.info("Authorize invitation") pin = dev[1].wps_read_pin() dev[1].global_request("P2P_CONNECT " + addr0 + " " + pin + " join auth") dev[0].p2p_start_go(freq=2412) # Add test client to the group connect_cli(dev[0], dev[2], social=True, freq=2412) logger.info("Invite peer to join the group") dev[0].p2p_go_authorize_client(pin) dev[0].global_request("P2P_INVITE group=" + dev[0].group_ifname + " peer=" + addr1) ev = dev[1].wait_global_event(["P2P-INVITATION-RECEIVED", "P2P-GROUP-STARTED"], timeout=20) if ev is None: raise Exception("Timeout on invitation on peer") if "P2P-INVITATION-RECEIVED" in ev: raise Exception("Unexpected request to accept pre-authorized invitation") dev[0].remove_group() dev[1].wait_go_ending_session() dev[2].wait_go_ending_session() finally: dev[0].request("SET wifi_display 0") dev[1].request("SET wifi_display 0") dev[2].request("SET wifi_display 0")