diff --git a/doc/Makefile b/doc/Makefile index 345abee..10e0f72 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,2 +1,2 @@ hamnet70.html: hamnet70.adoc - asciidoctor $< + asciidoctor -r asciidoctor-diagram $< diff --git a/doc/hamnet70.adoc b/doc/hamnet70.adoc index e7b8397..3b19cc9 100644 --- a/doc/hamnet70.adoc +++ b/doc/hamnet70.adoc @@ -228,12 +228,121 @@ Due to the long possible bursts, this system can achieve high throughput if ther === Ideas To be defined: + - connection establishment procedure (request, response) - how do clients get an IP(v6) address? -> should be derived from the call sign - when are new clients allowed to connect? -> base station calls for any new stations in regular intervals - handling of packets from unknown clients that are not connection requests - signal quality handling +=== Message Sequence Charts + +==== Connection Establishment + +[mermaid,format=svg,svg-type=interactive] +.Connection establishment +.... +sequenceDiagram + participant digi as Digipeater + participant client as Client + + digi -->> client: Beacon (Broadcast) + digi -->> client: Beacon (Broadcast) + digi -->> client: Beacon (Broadcast) + + Note over client: Decides to connect + + client ->> digi: Connection Request + + alt Connection accepted + digi ->> client: Connection Parameters + client ->> digi: Connection Acknowledgement + Note over digi,client: Connection established + else Connection rejected + digi ->> client: Connection Refusal + end +.... + +==== Communication during a Connection + +[mermaid,format=svg,svg-type=interactive] +.In-connection communication +.... +sequenceDiagram + participant digi as Digipeater + participant client as Client + + Note over digi,client: Connection established + + loop For up to 14 packets + digi ->> client: Packet without Transmission Request + end + + digi ->> client: Packet with Transmission Request + + Note over digi: Start timeout timer + + alt Normal reply + loop For up to 14 packets + client ->> digi: Packet without Transmission Request + end + + client ->> digi: Packet with Transmission Request + else Partial reply + loop For up to 14 packets + client ->> digi: Packet without Transmission Request + end + + client --x digi: Packet with Transmission Request (lost) + + Note over digi: Timeout expired + else No reply + Note over digi: Timeout expired + end + + Note over digi: Query next client +.... + +==== Connection Shutdown + +===== Client-initiated + +[mermaid,format=svg,svg-type=interactive] +.Client-initiated shutdown +.... +sequenceDiagram + participant digi as Digipeater + participant client as Client + + Note over digi,client: Connection established + + Note over client: Decides to disconnect + + digi ->> client: Transmission Request + client ->> digi: Disconnect + + Note over digi,client: Connection closed +.... + +===== Digipeater-initiated + +[mermaid,format=svg,svg-type=interactive] +.Digipeater-initiated shutdown +.... +sequenceDiagram + participant digi as Digipeater + participant client as Client + + Note over digi,client: Connection established + + Note over digi: Decides to disconnect client + + digi ->> client: Disconnect Request + client ->> digi: Disconnect + + Note over digi,client: Connection closed +.... + == Higher Layer Protocols [appendix]