p2p_sm.dot 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. digraph p2p {
  2. ranksep=.75;
  3. size = "8.5,7.5";
  4. start -> IDLE;
  5. start [label="Init",shape=none];
  6. /* Discovery: Scan followed by Find(SEARCH,LISTEN) */
  7. subgraph cluster_0 {
  8. label="Discovery";
  9. color=lightgrey;
  10. node [color=blue];
  11. /* SCAN and LISTEN currently not used in the implementation */
  12. SCAN [style=dotted];
  13. LISTEN [style=dotted];
  14. SCAN -> LISTEN;
  15. LISTEN -> SEARCH -> LISTEN [style=dotted];
  16. SEARCH -> SD_DURING_FIND [label="Peer SD capab\nand no info", weight=100];
  17. SD_DURING_FIND -> SEARCH [label="RX SD Resp\nor timeout", weight=100];
  18. SEARCH -> PROV_DISC_DURING_FIND [label="Prov Disc cmd\nand no Resp", weight=100];
  19. PROV_DISC_DURING_FIND -> SEARCH [label="RX Prov Disc Resp\nor timeout", weight=100];
  20. }
  21. /* Group Formation */
  22. subgraph cluster_1 {
  23. label="Group Formation";
  24. color=lightgrey;
  25. node [color=green];
  26. CONNECT -> CONNECT_LISTEN [style=dotted,weight=100];
  27. CONNECT_LISTEN -> CONNECT [style=dotted,weight=100];
  28. CONNECT -> WAIT_PEER_IDLE [label="RX GO Neg Resp\n(info unavail)"];
  29. WAIT_PEER_IDLE -> WAIT_PEER_CONNECT [style=dotted,weight=100];
  30. WAIT_PEER_CONNECT -> WAIT_PEER_IDLE [style=dotted,weight=100];
  31. CONNECT -> GO_NEG [label="RX GO Neg Resp\n(success)", weight=10];
  32. CONNECT_LISTEN -> GO_NEG [label="RX GO Neg Req or\nTX GO Neg Resp"];
  33. WAIT_PEER_CONNECT -> GO_NEG [label="RX GO Neg Req"];
  34. GO_NEG -> PROVISIONING [label="TX/RX GO Neg Conf"];
  35. }
  36. PROVISIONING -> IDLE [label="WPS\nsuccess"];
  37. /* External triggers */
  38. IDLE -> SCAN [label="Find cmd",weight=20];
  39. IDLE -> CONNECT [label="Connect cmd",weight=20];
  40. IDLE -> LISTEN_ONLY [label="Listen cmd"];
  41. /* Timeouts */
  42. /*
  43. edge [color=red];
  44. WAIT_PEER_IDLE -> IDLE [label="timeout", weight=0];
  45. WAIT_PEER_CONNECT -> IDLE [label="timeout", weight=0];
  46. CONNECT -> IDLE [label="timeout", weight=0];
  47. CONNECT_LISTEN -> IDLE [label="timeout", weight=0];
  48. GO_NEG -> IDLE [label="timeout", weight=0];
  49. PROVISIONING -> IDLE [label="timeout", weight=0];
  50. LISTEN_ONLY -> IDLE [label="timeout", weight=0];
  51. SEARCH -> IDLE [label="timeout", weight=0];
  52. */
  53. }