62 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| digraph p2p {
 | |
| 	ranksep=.75;
 | |
| 	size = "8.5,7.5";
 | |
| 
 | |
| 	start -> IDLE;
 | |
| 	start [label="Init",shape=none];
 | |
| 
 | |
| 	/* Discovery: Scan followed by Find(SEARCH,LISTEN) */
 | |
| 	subgraph cluster_0 {
 | |
| 		label="Discovery";
 | |
| 		color=lightgrey;
 | |
| 		node [color=blue];
 | |
| 		/* SCAN and LISTEN currently not used in the implementation */
 | |
| 		SCAN [style=dotted];
 | |
| 		LISTEN [style=dotted];
 | |
| 
 | |
| 		SCAN -> LISTEN;
 | |
| 		LISTEN -> SEARCH -> LISTEN [style=dotted];
 | |
| 		SEARCH -> SD_DURING_FIND [label="Peer SD capab\nand no info", weight=100];
 | |
| 		SD_DURING_FIND -> SEARCH [label="RX SD Resp\nor timeout", weight=100];
 | |
| 		SEARCH -> PROV_DISC_DURING_FIND [label="Prov Disc cmd\nand no Resp", weight=100];
 | |
| 		PROV_DISC_DURING_FIND -> SEARCH [label="RX Prov Disc Resp\nor timeout", weight=100];
 | |
| 	}
 | |
| 
 | |
| 	/* Group Formation */
 | |
| 	subgraph cluster_1 {
 | |
| 		label="Group Formation";
 | |
| 		color=lightgrey;
 | |
| 		node [color=green];
 | |
| 
 | |
| 		CONNECT -> CONNECT_LISTEN [style=dotted,weight=100];
 | |
| 		CONNECT_LISTEN -> CONNECT [style=dotted,weight=100];
 | |
| 		CONNECT -> WAIT_PEER_IDLE [label="RX GO Neg Resp\n(info unavail)"];
 | |
| 		WAIT_PEER_IDLE -> WAIT_PEER_CONNECT [style=dotted,weight=100];
 | |
| 		WAIT_PEER_CONNECT -> WAIT_PEER_IDLE [style=dotted,weight=100];
 | |
| 
 | |
| 		CONNECT -> GO_NEG [label="RX GO Neg Resp\n(success)", weight=10];
 | |
| 		CONNECT_LISTEN -> GO_NEG [label="RX GO Neg Req or\nTX GO Neg Resp"];
 | |
| 		WAIT_PEER_CONNECT -> GO_NEG [label="RX GO Neg Req"];
 | |
| 		GO_NEG -> PROVISIONING [label="TX/RX GO Neg Conf"];
 | |
| 	}
 | |
| 
 | |
| 	PROVISIONING -> IDLE [label="WPS\nsuccess"];
 | |
| 
 | |
| 	/* External triggers */
 | |
| 	IDLE -> SCAN [label="Find cmd",weight=20];
 | |
| 	IDLE -> CONNECT [label="Connect cmd",weight=20];
 | |
| 	IDLE -> LISTEN_ONLY [label="Listen cmd"];
 | |
| 
 | |
| 	/* Timeouts */
 | |
| /*
 | |
| 	edge [color=red];
 | |
| 	WAIT_PEER_IDLE -> IDLE [label="timeout", weight=0];
 | |
| 	WAIT_PEER_CONNECT -> IDLE [label="timeout", weight=0];
 | |
| 	CONNECT -> IDLE [label="timeout", weight=0];
 | |
| 	CONNECT_LISTEN -> IDLE [label="timeout", weight=0];
 | |
| 	GO_NEG -> IDLE [label="timeout", weight=0];
 | |
| 	PROVISIONING -> IDLE [label="timeout", weight=0];
 | |
| 	LISTEN_ONLY -> IDLE [label="timeout", weight=0];
 | |
| 	SEARCH -> IDLE [label="timeout", weight=0];
 | |
| */
 | |
| }
 | 
