Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
embedded_systems:robi2:remote [2011-11-21 09:39] – Erster Entwurf des Kommunikationsprotokolls, weitere Gliederung erstellt niedererembedded_systems:robi2:remote [2011-12-13 13:10] niederer
Zeile 1: Zeile 1:
 <box red 80% | **Actung**>Diese Dokumentation befindet sich noch im Entwicklungsstadium</box> <box red 80% | **Actung**>Diese Dokumentation befindet sich noch im Entwicklungsstadium</box>
 +
 ======Robi2 Remote Interface====== ======Robi2 Remote Interface======
 Es besteht die Möglichkeit, den Robi softwaretechnisch fernzusteuern. Hierfür wird auf dem Robi eine Server-Applikation installiert, welche eine vereinfachte Form eines RMI Servers zur Verfügung stellt. Es besteht die Möglichkeit, den Robi softwaretechnisch fernzusteuern. Hierfür wird auf dem Robi eine Server-Applikation installiert, welche eine vereinfachte Form eines RMI Servers zur Verfügung stellt.
 +
 ===== Das Objektmodell ===== ===== Das Objektmodell =====
 ====Client Implementation==== ====Client Implementation====
Zeile 9: Zeile 11:
 TODO TODO
  
-=====Robi Remote Version 0=====+=====Funktionsumfang===== 
 +====Robi Remote Version 0====
 Diese Remote-Procedure-Call Ausbaustufe wird durch //ProtVersion=0// im Traffic identifiziert. Diese Remote-Procedure-Call Ausbaustufe wird durch //ProtVersion=0// im Traffic identifiziert.
  
-===Methodenliste====+==Methodenliste==
 TODO TODO
  
Zeile 24: Zeile 27:
 <code> <code>
 Traffic  = Request | Response . Traffic  = Request | Response .
-Request  = ">" ProtID ProtVersion CommandID { Parameter } FrameEnd . +Request  = ">" ProtID " " ProtVersion " " CommandID { Parameter } FrameEnd . 
-Response = "<" ProtID ProtVersion { ReturnValue } FrameEnd .+Response = "<" ProtID " " ProtVersion " " CommandID { ReturnValue } FrameEnd .
  
 ProtID      = "R" "2" . ProtID      = "R" "2" .
Zeile 43: Zeile 46:
  
 ==== Das Serialisierungsformat ==== ==== Das Serialisierungsformat ====
-Als Serialisierungsformat wird ein Teil des PHP Serialisierungsformats verwendet. Im Gegensatz zur Standard Java-Serialisierung ist dieses Datenformat als ASCII-Text ausgelegt und ausserdem wesentlich kompakter als ein Java Object Stream nach Standard-Protokoll. +Das Serialisierungsformat ist durch das PHP Serialisierungsformat inspiriert und erweitert das grösstenteils kompatibel. Im Gegensatz zur Standard Java-Serialisierung ist dieses Datenformat als ASCII-Text ausgelegt und ausserdem wesentlich kompakter als ein Java Object Stream nach Standard-Protokoll. 
  
 Leider ist das PHP Serialisierungsformat nirgendwo formal beschrieben. Es lässt sich jedoch aus dem {{http://svn.php.net/viewvc/php/php-src/tags/php_5_3_8/ext/standard/var.c?view=markup|Code des Moduls var.c}} aus der PHP Codebase sehr einfach rekonstruieren. Das an dieser Stelle verwendete Format beschränkt sich auf die primitiven Datentypen **ohne** Arrays. Leider ist das PHP Serialisierungsformat nirgendwo formal beschrieben. Es lässt sich jedoch aus dem {{http://svn.php.net/viewvc/php/php-src/tags/php_5_3_8/ext/standard/var.c?view=markup|Code des Moduls var.c}} aus der PHP Codebase sehr einfach rekonstruieren. Das an dieser Stelle verwendete Format beschränkt sich auf die primitiven Datentypen **ohne** Arrays.
Zeile 50: Zeile 53:
 <code> <code>
 SerializedData   = SerializedObject { SerializedObject } . SerializedData   = SerializedObject { SerializedObject } .
-SerializedObject = (Null | Bool | Long | Double | String) ";" . +SerializedObject = ( Null | Bool | Long | Double ) ";" .
-Null             = "N" ":" .+
  
 +Null             = "N" ":" .
 Bool             = "b" ":" ("0" (* = false *) | "1" (* = true *)) .  Bool             = "b" ":" ("0" (* = false *) | "1" (* = true *)) . 
 Long             = "i" ":" [ '-' ] Number . Long             = "i" ":" [ '-' ] Number .
-Double           = "d" ":" Long [ ".Number ] . +Double           = "d" ":"  ( DoubleNumber | ( "N" "a" "N) | (( "+"-) "I" "N" "F" ) ).
-String           "s" ":Length ":'"' AnyChar '"'.  +
-Length           = Number .+
  
 +DoubleNumber     = Long [ "." Number "E" ( "+" | "-" ) Number ] .
 Number           = NonZeroDigit { Digit } . Number           = NonZeroDigit { Digit } .
 Digit            = "0" | NonZeroDigit . Digit            = "0" | NonZeroDigit .
Zeile 71: Zeile 73:
 ^ boolean  |  false     | b:0;            | ^ boolean  |  false     | b:0;            |
 ^ long      13        | i:13;           | ^ long      13        | i:13;           |
-^ double    23.1      | d:23.10000000000000142108547152020037174224853515625  +^ double    23.1      | d:FIXME;  | 
-^ string    myString  | s:8:"myString"; +^ Alle verbunden      ||N;b:0;i:13;d:FIXME; |
-^ Alle verbunden      ||N;b:0;i:13;d:23.10000000000000142108547152020037174224853515625;s:8:"myString"; |+