Geräte-API
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 |
| Pakettyp | Kommando | Paketnummer | Gerätetyp | Major | Minor | Patch |
|---|---|---|---|---|---|---|
| 0x21 | 0x0F | 0x00 .. 0xFF | 0x13 |
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 |
| Pakettyp | Kommando | Paketnummer |
|---|---|---|
| 0x21 | 0x0C | 0x00 .. 0xFF |
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 |
| Pakettyp | Kommando | Paketnummer |
|---|---|---|
| 0x21 | 0xDE | 0x00 .. 0xFF |
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 |
| Pakettyp | Kommando | Paketnummer |
|---|---|---|
| 0x21 | 0xDE | 0x00 .. 0xFF |
DatabaseDownloadStart
Dieses Kommando muss vor dem Download der Datenbank aus dem LoDi-Con gesendet werden.
| Pakettyp | Kommando | Paketnummer | Aktion |
|---|---|---|---|
| 0x20 | 0xDE | 0x00 .. 0xFF | 0x03 |
| Pakettyp | Kommando | Paketnummer | Länge | |||
|---|---|---|---|---|---|---|
| 0x21 | 0xDE | 0x00 .. 0xFF | 24..31 | 16..23 | 8..15 | 0..7 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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.
ShowLoco
Zeigt eine Lok im Bildschirm des LoDi-Con an. Die Lok kann dann im LoDi-Con gefahren werden. Es werden nur bereits vorhandene Loks angezeigt.
| Pakettyp | Kommando | Paketnummer | Protokoll | AddrL | AddrH |
|---|---|---|---|---|---|
| 0x20 | 0xD4 | 0x00 .. 0xFF | 0..3 | Bit 0..7 | Bit 8..14 |
Das Feld Protokoll enthält das zu verwendende Schienenformat.
0: Egal
1: DCC
2: Motorola
3: mfx
AddrL und AddrH ergeben zusammen die Adresse der Lok.
Wird die Lok gefunden und angezeigt. Gibt das LoDi-Con ein ACK-Paket zurück. Andernfalls wird NACK gesendet.
