API LoDi-Con

Einführung

Im folgenden werden die vom LoDi-Con verstandenen Kommandos aufgelistet. Die Kommunikation zum Gerät wird im Abschnitt Allgemeine API erklärt.


Basis-Kommandos

GetVersion

Dieses Kommando liefert die Gerätekennung sowie die FW-Version des Geräts.

Pakettyp Kommando Paketnummer
 0x20 0x0F 0x00 .. 0xFF

Von Steuersoftware zu senden

Pakettyp Kommando Paketnummer Gerätetyp Major Minor Patch
 0x21 0x0F 0x00 .. 0xFF 0x13      

Antwort vom Gerät

Der Gerätetyp ist beim LoDi-Con immer 0x13.

Die Firmware-Version setzt sich aus den drei Komponenten Major, Minor und Patch zusammen. Sie wird im Format "v<Major>.<Minor>.<Patch>" angezeigt. Beispiel: "v0.5.7"

Die Major-Version ändert sich nur, wenn eine komplett neue Hardware mit geänderten Eigenschaften und Funktionsumfang herausgebracht wird.

Die Minor-Version ändert sich, wenn Ergänzungen an der API erfolgen. Diese können bei einzelnen Kommandos auch inkompatibel sein.

Die Patch-Version ändert sich bei allgemeinen Fehlerbehebungen, die nicht die API betreffen.

CloseConnection

Dieses Kommando sollte vor der Verbindungstrennung gesendet werden. 

Pakettyp Kommando Paketnummer
 0x20 0x0C 0x00 .. 0xFF

Von Steuersoftware zu senden

Pakettyp Kommando Paketnummer
 0x21 0x0C 0x00 .. 0xFF

Antwort vom Gerät ist ACK

DatabaseUploadStart

Dieses Kommando startet das Hochladen einer Datenbank auf das LoDi-Con. Der eigentliche Hochladevorgang erfolgt über die FTP-Schnittstelle.

Pakettyp Kommando Paketnummer Aktion Länge
 0x20 0xDE 0x00 .. 0xFF 0x01 24..31 16..23 8..15 0..7

Von Steuersoftware zu senden

Pakettyp Kommando Paketnummer
 0x21 0xDE 0x00 .. 0xFF

Antwort vom Gerät

Das Feld Länge definiert die Größe der Hochzuladenden Datenbank.

DatabaseActivate

Dieses Kommando schließt das Hochladen der Datenbank ab. Die vorher angegebene Dateigröße wird überprüft. Stimmt die Größe überein, so wird dem Anwender im LoDi-Con ein Bestätigungsdialog präsentiert.

Pakettyp Kommando Paketnummer Aktion
 0x20 0xDE 0x00 .. 0xFF 0x02

Von Steuersoftware zu senden

Pakettyp Kommando Paketnummer
 0x21 0xDE 0x00 .. 0xFF

Antwort vom Gerät

DatabaseDownloadStart

Dieses Kommando muss vor dem Download der Datenbank aus dem LoDi-Con gesendet werden.

Pakettyp Kommando Paketnummer Aktion
 0x20 0xDE 0x00 .. 0xFF 0x03

Von Steuersoftware zu senden

Pakettyp Kommando Paketnummer Länge
 0x21 0xDE 0x00 .. 0xFF 24..31 16..23 8..15 0..7

Antwort vom Gerät

Das Feld Länge gibt die aktuelle Größe der Datenbankdatei auf dem LoDi-Con an.

GetScreenshot

Fordert einen Screenshot des aktuellen LoDi-Con Bildschirms an. Die eigentlichen Bilddaten werden als Events übertragen

Pakettyp Kommando Paketnummer Modus
 0x20 0xDF 0x00 .. 0xFF 0..1

Von Steuersoftware zu senden

Das Feld Modus bestimmt die Anzahl der im Event zu übertragenden Zeilen.

0: Es wird immer nur eine Zeile als Event übertragen.

1: Es dürfen mehrere Zeilen pro Event übertragen werden.

Pakettyp Kommando Paketnummer Breite Höhe
 0x21 0xDF 0x00 .. 0xFF Bit 8..15 Bit 0..7 Bit 8..15 Bit 0..7

Antwort vom Gerät

Die Felder Breite und Höhe geben die Anzahl der Pixel an.

Mit der Bestätigung des Kommandos wurde der Screenshot aufgenommen und wird im Folgenden mittels Events aktiv vom LoDi-Con übertragen.

Pakettyp Kommando Paketnummer
 0x23 0xDF 0x00 .. 0xFF

Antwort vom Gerät wenn bereits ein Screenshot übertragen wird.

EventScreenshot

Schickt die Zeilen des Screenshots an die Steuersoftware.

Pakettyp Kommando Eventzähler Zeilennummer Daten
 0x22 0xDF 0x00 .. 0xFF Bit 8..15 Bit 0..7 16 Bit pro Pixel

Event vom Gerät

Das Feld Zeilennummer entspricht der Zeile im Screenshot

Hochformat: 0-319, 240 Pixel a 16 Bit folgen

Querformat: 0-239, 320 Pixel a 16 Bit folgen.

Ist Modus 1 gewählt, so können weitere Zeilen folgen. Wobei immer die Zeilennummer gefolgt von den Daten gesendet wird. Die maximale Paketgröße ist dabei auf 1500 Bytes begrenzt. Die Anzahl der gesendeten Zeilen ist über die Paketgröße zu ermitteln.

Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
 R R R R R G G G G G G B B B B B

Aufbau eines Pixels

SendUIInput

Schickt eine virtuelle User Interface Eingabe an das LoDi-Con. (ab v0.5.7)

Pakettyp Kommando Paketnummer Typ X Y C
 0x20 0xD2 0x00 .. 0xFF 0 .. 255 Bit 8..15 Bit 0..7 Bit 8..15 Bit 0..7 0..255

Von der Steuersoftware zu senden

Das Feld Typ enthält den Typ der Eingabe. Die Felder X,Y und C werden je nach Typ belegt.

1: Touch Screen gedrückt - X: X-Pos, Y: Y-Pos

2: Touch Screen losgelassen - X: X-Pos, Y: Y-Pos

3: Touch Screen lange gedrückt - X: X-Pos, Y: Y-Pos

4: Knopf gedrückt

5: Knopf losgelassen

6: Knopf lange gedrückt

8: Knopf nach rechts gedreht

9: Knopf nach links gedreht

10: UI Element angeklickt - X: X-Pos, Y: Y-Pos

11: Wischen - X: X-Distanz, Y: Y-Distanz ( X oder Y muss 0 sein)

12: Zeicheneingabe - C: ASCII-Code des Zeichens

Alle anderen Typen werden intern verwendet und durch die API nicht weitergegeben.

 

Besondere Tastencodes für das Feld C bei Typ=12:

0x06: ACK - Bestätigung, Enter

0x15: NACK - Abbruch

0x08: DEL - Löschen

Weitere Codes unterhalb von 0x20 werden intern verwendet, sollten aber von außen nicht angesteuert werden.

GetLogbook

Dieses Kommando fordert das Logbuch des LoDi-Cons an. Die Übertragung des Logbuchs erfolgt durch Events. (ab v0.5.7)

Pakettyp Kommando Paketnummer
 0x20 0xD3 0x00 .. 0xFF

Von Steuersoftware zu senden

EventLogbook

Dieser Event wird nach dem Empfang des Kommandos GetLogbook gesendet, um das aktuelle Logbuch zu übertragen. Er erfolgt auch ungefragt, wenn ein neuer Eintrag zum Logbuch hinzugefügt wird. (ab v0.5.7)

Pakettyp Kommando Eventzähler Zeitstempel Ursprung Level Text
 0x22 0xD3 0 .. 0xFF Bit 24..31 Bit 16..23 Bit 8..15 Bit 0..7     Bis zu 122 Bytes

Von Gerät versendet

Das Feld Zeitstempel gibt die Zeit seit dem Gerätestart im Millisekunden an.

Das Feld Ursprung enthält die Quelle des Eintrags.

1: WLAN

2: API

3: FTP

5: Datenbank

10: Zentrale

11: LoDi-Rektor

12: LoDi-S8-Commander

13: LoDi-Shift-Commander

14: märklin CS2 oder CS3

15: ESU ECoS

16: WiThrottle

17: XpressNet

18: z21

20: Lokomotive

21: Schaltartikel

 

Der Level gibt den Schweregrad des Eintrags an.

0: Emergency

1: Alert

2: Critical

3: Error

4: Warning

5: Notice

6: Info

7: Debug

8: Trace

 

Der Text ist bis zu 122 Zeichen lang und wird mit 0 abgeschlossen, wenn er kürzer als 122 Zeichen ist.

Mit einem Event werden bis zu 10 Einträge versendet.