6 start [label="Init",shape=none];
8 /* Discovery: Scan followed by Find(SEARCH,LISTEN) */
13 /* SCAN and LISTEN currently not used in the implementation */
15 LISTEN [style=dotted];
18 LISTEN -> SEARCH -> LISTEN [style=dotted];
19 SEARCH -> SD_DURING_FIND [label="Peer SD capab\nand no info", weight=100];
20 SD_DURING_FIND -> SEARCH [label="RX SD Resp\nor timeout", weight=100];
21 SEARCH -> PROV_DISC_DURING_FIND [label="Prov Disc cmd\nand no Resp", weight=100];
22 PROV_DISC_DURING_FIND -> SEARCH [label="RX Prov Disc Resp\nor timeout", weight=100];
27 label="Group Formation";
31 CONNECT -> CONNECT_LISTEN [style=dotted,weight=100];
32 CONNECT_LISTEN -> CONNECT [style=dotted,weight=100];
33 CONNECT -> WAIT_PEER_IDLE [label="RX GO Neg Resp\n(info unavail)"];
34 WAIT_PEER_IDLE -> WAIT_PEER_CONNECT [style=dotted,weight=100];
35 WAIT_PEER_CONNECT -> WAIT_PEER_IDLE [style=dotted,weight=100];
37 CONNECT -> GO_NEG [label="RX GO Neg Resp\n(success)", weight=10];
38 CONNECT_LISTEN -> GO_NEG [label="RX GO Neg Req or\nTX GO Neg Resp"];
39 WAIT_PEER_CONNECT -> GO_NEG [label="RX GO Neg Req"];
40 GO_NEG -> PROVISIONING [label="TX/RX GO Neg Conf"];
43 PROVISIONING -> IDLE [label="WPS\nsuccess"];
45 /* External triggers */
46 IDLE -> SCAN [label="Find cmd",weight=20];
47 IDLE -> CONNECT [label="Connect cmd",weight=20];
48 IDLE -> LISTEN_ONLY [label="Listen cmd"];
53 WAIT_PEER_IDLE -> IDLE [label="timeout", weight=0];
54 WAIT_PEER_CONNECT -> IDLE [label="timeout", weight=0];
55 CONNECT -> IDLE [label="timeout", weight=0];
56 CONNECT_LISTEN -> IDLE [label="timeout", weight=0];
57 GO_NEG -> IDLE [label="timeout", weight=0];
58 PROVISIONING -> IDLE [label="timeout", weight=0];
59 LISTEN_ONLY -> IDLE [label="timeout", weight=0];
60 SEARCH -> IDLE [label="timeout", weight=0];