예제 #1
0
파일: test_p2ps.py 프로젝트: NS-K/hostapd
def test_p2ps_connect_adv_go_persistent(dev):
    """P2PS auto-accept connection with advertisement as GO and having persistent group"""
    addr0 = dev[0].p2p_dev_addr()
    addr1 = dev[1].p2p_dev_addr()

    go_neg_pin_authorized_persistent(i_dev=dev[0], i_intent=15,
                                     r_dev=dev[1], r_intent=0)
    dev[0].remove_group()
    dev[1].wait_go_ending_session()

    p2ps_advertise(r_dev=dev[0], r_role='4', svc_name='org.wi-fi.wfds.send.rx',
                   srv_info='I can receive files upto size 2 GB')
    [adv_id, rcvd_svc_name] = p2ps_exact_seek(i_dev=dev[1], r_dev=dev[0],
                                              svc_name='org.wi-fi.wfds.send.rx',
                                              srv_info='2 GB')
    if "OK" not in dev[1].global_request("P2P_ASP_PROVISION " + addr0 + " adv_id=" + str(adv_id) + " adv_mac=" + addr0 + " session=1 session_mac=" + addr1 + " info='' method=1000"):
        raise Exception("Failed to request provisioning on seeker")

    ev0 = dev[0].wait_global_event(["P2PS-PROV-DONE"], timeout=10)
    if ev0 is None:
        raise Exception("Timed out while waiting for prov done on advertizer")
    if "persist=" not in ev0:
        raise Exception("Advertiser did not indicate persistent group")
    id0 = ev0.split("persist=")[1].split(" ")[0]
    if "OK" not in dev[0].global_request("P2P_GROUP_ADD persistent=" + id0 + " freq=2412"):
        raise Exception("Could not re-start persistent group")

    ev0 = dev[0].wait_global_event(["P2P-GROUP-STARTED"], timeout=10)
    if ev0 is None:
        raise Exception("P2P-GROUP-STARTED timeout on advertiser side")
    dev[0].group_form_result(ev0)

    ev1 = dev[1].wait_global_event(["P2PS-PROV-DONE"], timeout=10)
    if ev1 is None:
        raise Exception("P2PS-PROV-DONE timeout on seeker side")

    if "persist=" not in ev1:
        raise Exception("Seeker did not indicate persistent group")
    id1 = ev1.split("persist=")[1].split(" ")[0]
    if "OK" not in dev[1].global_request("P2P_GROUP_ADD persistent=" + id1 + " freq=2412"):
        raise Exception("Could not re-start persistent group")

    ev1 = dev[1].wait_global_event(["P2P-GROUP-STARTED"], timeout=15)
    if ev1 is None:
        raise Exception("P2P-GROUP-STARTED timeout on seeker side")
    dev[1].group_form_result(ev1)

    ev0 = dev[0].wait_global_event(["AP-STA-CONNECTED"], timeout=15)
    if ev0 is None:
        raise Exception("AP-STA-CONNECTED timeout on advertiser side")
    ev0 = dev[0].global_request("P2P_SERVICE_DEL asp " + str(adv_id))
    if ev0 is None:
        raise Exception("Unable to remove the advertisement instance")
    remove_group(dev[0], dev[1])
예제 #2
0
def test_p2ps_connect_adv_go_persistent(dev):
    """P2PS auto-accept connection with advertisement as GO and having persistent group"""
    go_neg_pin_authorized_persistent(i_dev=dev[0], i_intent=15,
                                     r_dev=dev[1], r_intent=0)
    dev[0].remove_group()
    dev[1].wait_go_ending_session()

    p2ps_advertise(r_dev=dev[0], r_role='4', svc_name='org.wi-fi.wfds.send.rx',
                   srv_info='I can receive files upto size 2 GB')
    [adv_id, rcvd_svc_name] = p2ps_exact_seek(i_dev=dev[1], r_dev=dev[0],
                                              svc_name='org.wi-fi.wfds.send.rx',
                                              srv_info='2 GB')
    ev1, ev0 = p2ps_provision(dev[1], dev[0], adv_id)
    if "persist=" not in ev0 or "persist=" not in ev1:
        raise Exception("Persistent group isn't used by peers")

    p2ps_connect_pd(dev[0], dev[1], ev0, ev1)
    remove_group(dev[0], dev[1])