User Tools

Site Tools


doc:rfc_kadaver

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
doc:rfc_kadaver [2014/11/09 17:22] – created admindoc:rfc_kadaver [2014/11/27 19:05] (current) admin
Line 3: Line 3:
  
 |OOBD Team |S. Koehler | |OOBD Team |S. Koehler |
-|Request for Comments:|  |+|Request for Comments:17 |  |
 |Obsoletes: - |  | |Obsoletes: - |  |
 |Category: Draft Standard |  Nov 2014 | |Category: Draft Standard |  Nov 2014 |
Line 22: Line 22:
 ===== Introduction ===== ===== Introduction =====
  
 +The Name Kadaver comes from the german wording "Kabellose Daten- Verbindung" (Wireless Data Connection). It connects a OOBD app with a Dongle over the internet and let them talk to each other with a chat server in between
  
 ==== Concept ==== ==== Concept ====
  
 +The connection from the App (called "Master") and from the dongle ("Slave") is made by  Websocket connections (from now on simply called "the connection"). Both sides connect them self to that server, and the server then sends the communication back and forward.
  
  
  
 +The slave only provides the connection, so it shall be as simple as possible to be easily used by novice.
 +
 +
 +==== Data model ====
 +
 +Both master and slave sending JSON messages to the server. The messages contain two properties: 
 +
 +  * msg (Master) / receive (Slave): This is the text send to/from the dongle, coded in base64 (String)
 +  * channel: The name of the channel with master and slave are both using (String)
  
 ==== Initialization ==== ==== Initialization ====
 +
 +The communication is initiated by the slave. The slave defines a name for the channel to use. This name can be random or e.g. the name of the Dongle, but it need to be unique for the time of the communication.
 +
 +The slave then sends the above mentioned message to the server with this new channel name in ''channel''  and any value in ''reply''. When reading the ''channel'' name out of the received JSON message, the Server  assigns the channel to that websocket link.
 +
 +
 +Then the master needs to be informed about the channel name.
 +
 +When then the master send it first message with that channel in ''channel'' and the dongle command in ''msg'', then two things happen:
 +  * the server  assigns the channel name to the websocket link of the master
 +  * the server then forwards the JSON message to the other clients with the same channel name (the slave)
 +
 +==== Communication ====
 +
 +After initialize the connection path, it's simple: Every message, which comes from one side is forwarded to the other and vice versa, identified by the channel name.
  
  
 ==== UI Requirements ==== ==== UI Requirements ====
 +
 +
 +As this connectivity might be implemented on different platforms, the following requirements shall be seen to be mandatory to have a common look & feel and functionality
  
  
 === Master (App Side) === === Master (App Side) ===
  
-=== Slave (Dongle Side) === 
  
 +    - the Websocket Server URL shall be configurable and saveable in the settings
 +    - The user shall decide when doing the connection if he wants to do a local or remote connection
 +    - When doing the remote connection, he shall be able to enter the channel (which comes, as said, from the slave)
  
-==== Errors ==== 
  
 +=== Slave (Dongle Side) ===
  
  
 +<graphviz dot>
 +digraph finite_state_machine {
 + node [shape = box];
 +        n3  [ label = "(1)\nConnect to Webserver" ];
 +        n4  [ label = "(1a)\nDisplay Server settings\nfor correction & Retry" ];
 +        n5  [ label = "(2)\nCheck Bluetooth\nSocket Availability" ];
 +        n6  [ label = "(2a)\nInform User & Retry" ];
 +        n7  [ label = "(3)\nDo Bluetooth\nDongle Discovery\nNr. of Dongles found" ];
 +        n9  [ label = "(3a)\nInform User & Retry" ];
 +        n11 [ label = "(3b)\nDongle selection & Retry" ];
 +        n12 [ label = "(4)\nParing Dongle" ];
 +        n13  [ label = "(4a)\nInform User & Retry" ];
 +        n15  [ label = "(5)\nDisplay Channel\nNormal Operation" ];
 +        n16  [ label = "(99)\nEnd (Close Window)" ];
  
-==== General Commands ====+        n3 -> n4   [ label "Error"  ]; 
 +        n3 -> n5   [ label "Ok" color ="green" ]; 
 +        n4 -> n3   [ label "Retry" ]; 
 +        n4 -> n16  [ label "End" ]; 
 +         
 +        n5 -> n6   [ label "Error" ]; 
 +        n5 -> n7   [ label "Ok" color ="green" ]; 
 +        n6 -> n5   [ label = "Retry" ]; 
 +        n6 -> n16  [ label = "End" ];
  
 +        n7 -> n9 [ label = "0" ];
 +        
 +        n9 -> n7   [ label = "Retry" ];
 +        n9 -> n16  [ label = "End" ];
 +       
 +        n7 -> n11   [ label = ">1" ];
 +        n7 -> n12   [ label = "1" color ="green" ];
 +        n11 -> n12   [ label = "Pair" ];
 +        n11 -> n16  [ label = "End" ];
  
 +        n12 -> n13   [ label = "Error" ];
 +        n12 -> n15   [ label = "Ok" color ="green" ];
 +        n13 -> n12   [ label = "Retry" ];
 +        n13 -> n16  [ label = "End" ];
 +        
 +   
 +  
 +          n20  [ label = "User Settings" ];
 +          n21  [ label = "Webserver URL" ];
 +          n22  [ label = "Language" ];
 +     n20 -> n21 ; n20 -> n22 ;
 +
 +}
 +</graphviz>
 +==== Errors ====
  
 +FIXME to be defined
  
 ===== Implementation Details ===== ===== Implementation Details =====
Line 117: Line 195:
  
 To join (or quit) the list goto [[https://groups.google.com/forum/?hl=de&fromgroups=#!forum/oobd-commit-messages|https://groups.google.com/forum/?hl=de&fromgroups=#!forum/oobd-commit-messages]] To join (or quit) the list goto [[https://groups.google.com/forum/?hl=de&fromgroups=#!forum/oobd-commit-messages|https://groups.google.com/forum/?hl=de&fromgroups=#!forum/oobd-commit-messages]]
- 
- 
  
  
doc/rfc_kadaver.1415550157.txt.gz · Last modified: 2014/11/09 17:22 by admin