Explorar o código

started documenting the planned transport layer

prozessorkern %!s(int64=3) %!d(string=hai) anos
pai
achega
1475ad85ef
Modificáronse 2 ficheiros con 100 adicións e 0 borrados
  1. 3 0
      doc/shellmatta.dox
  2. 97 0
      doc/shellmatta_transport_layer.dox

+ 3 - 0
doc/shellmatta.dox

@@ -32,4 +32,7 @@
         end
     @enduml
 
+
+    @subpage shellmatta_transport_layer
+
 */

+ 97 - 0
doc/shellmatta_transport_layer.dox

@@ -0,0 +1,97 @@
+/**
+
+    @page shellmatta_transport_layer Shellmatta Transport Layer
+
+    To be able to use the shellmatta directly on an unsecured interface like
+    raw UART a simple connectionless transport layer has been implemented.
+
+    The transport layer is optional and can be removed during compile time as
+    well as deactivated during runtime.
+    The transport layer intends to be used in machine to machine interfaces.
+
+    @warning    As the transport layer is connectionless there is no way to
+                determine wether a packet is received properly.
+                To check if all packets have been received by the shellmatta
+                the sequence counters included in any packet can be used.
+
+    @section shellmatta_transport_layer_sequence Basic sequence
+
+    @startuml
+        loop until command is sent
+            Host -> Shellmatta: send packet
+            Shellmatta -> Shellmatta: validate packet
+        end
+
+        loop until response is sent
+            Shellmatta -> Host: send return packet
+            Host -> Host: validate packet
+        end
+    @enduml
+
+
+    @section shellmatta_transport_layer_protocol Protocol
+
+
+    | Offset | Length   | Description                                 |
+    |--------|----------|---------------------------------------------|
+    |    0   |     1    | Start of header (\SOH)                      |
+    |    1   |     1    | Protocol version                            |
+    |    2   |     1    | Packet type                                 |
+    |    3   |     1    | Payload Length                              |
+    |    4   |     1    | Source                                      |
+    |    5   |     1    | Destination                                 |
+    |    6   |     1    | Sequence counter host to shellmatta         |
+    |    7   |     1    | Sequence counter shellmatta to host         |
+    |    8   |     4    | CRC32 of header + payload without CRC32     |
+    |    12  | 0 .. 255 | Payload                                     |
+
+
+    @subsection shellmatta_transport_layer_protocol_packet_Types Packet types
+
+    The type codes are divided into request and respond codes using the MSB.
+    The MSB indicates a response.
+
+    | type | Description                    | Payload length |  Payload               |
+    |------|--------------------------------|----------------|------------------------|
+    | 0x00 | Plain Data                     | 0 .. 255       | User data              |
+    | 0x01 | Request Sequence counters      | 0              | -                      |
+    | 0x81 | Respond Sequence counters      | 0              | -                      |
+    | 0x02 | Request and set max buffersize | 1              | Hosts buffersize       |
+    | 0x82 | Respond max buffersize         | 1              | Shellmattas buffersize |
+    | 0x03 | Search device by unique ID     | 32             | UUID Range 2x 16 byte  |
+    | 0x83 | Respond to search              | 16             | UUID of Shellmatta     |
+    | 0x04 | Set address                    | 16             | UUID of Shellmatta     |
+    | 0x84 | Respond to set address         | 16             | UUID of Shellmatta     |
+
+
+
+    @section shellmatta_transport_layer_sequence_counters Sequence counters
+
+    The sequence counters are included in the header of every packet to enable
+    the host to check for any dropped packets.
+    This is a quite nasty workaround as the host has no chance to determine
+    which packet has dropped - but better than nothing.
+
+    If no response is received from the shellmatta the sequence counters can be
+    requested explicitly.
+
+    The sequence counter host to shellmatta will increment on every successfully
+    received packet.
+
+    The sequence counter shellmatta to host will increment on every packet the
+    shellmatta sends to the host.
+
+
+    @section shellmatta_transport_layer_buffersize Buffer sizes
+
+
+    @section shellmatta_transport_layer_addressing Addressing and Search
+
+
+    @section shellmatta_transport_layer_crc CRC calculation
+
+
+    @section shellmatta_transport_layer_control Controlling the transport layer
+
+
+*/