API LoDi-Con
Dokumentation

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.

PakettypKommandoPaketnummer
0x200x0F0x00 .. 0xFF
PakettypKommandoPaketnummerGerätetypMajorMinorPatch
0x210x0F0x00 .. 0xFF0x13

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.

PakettypKommandoPaketnummer
0x200x0C0x00 .. 0xFF
PakettypKommandoPaketnummer
0x210x0C0x00 .. 0xFF

DatabaseUploadStart

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

PakettypKommandoPaketnummerAktionLänge
0x200xDE0x00 .. 0xFF0x0124..3116..238..150..7
PakettypKommandoPaketnummer
0x210xDE0x00 .. 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.

PakettypKommandoPaketnummerAktion
0x200xDE0x00 .. 0xFF0x02
PakettypKommandoPaketnummer
0x210xDE0x00 .. 0xFF

DatabaseDownloadStart

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

PakettypKommandoPaketnummerAktion
0x200xDE0x00 .. 0xFF0x03
PakettypKommandoPaketnummerLänge
0x210xDE0x00 .. 0xFF24..3116..238..150..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

PakettypKommandoPaketnummerModus
0x200xDF0x00 .. 0xFF0..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.

PakettypKommandoPaketnummerBreiteHöhe
0x210xDF0x00 .. 0xFFBit 8..15Bit 0..7Bit 8..15Bit 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.

PakettypKommandoPaketnummer
0x230xDF0x00 .. 0xFF

EventScreenshot

Schickt die Zeilen des Screenshots an die Steuersoftware.

PakettypKommandoEventzählerZeilennummerDaten
0x220xDF0x00 .. 0xFFBit 8..15Bit 0..716 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 15Bit 14Bit 13Bit 12Bit 11Bit 10Bit 9Bit 8Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
RRRRRGGGGGGBBBBB

SendUIInput

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

PakettypKommandoPaketnummerTypXYC
0x200xD20x00 .. 0xFF0 .. 255Bit 8..15Bit 0..7Bit 8..15Bit 0..70..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)

PakettypKommandoPaketnummer
0x200xD30x00 .. 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)

PakettypKommandoEventzählerZeitstempelUrsprungLevelText
0x220xD30 .. 0xFFBit 24..31Bit 16..23Bit 8..15Bit 0..7Bis 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.

PakettypKommandoPaketnummerProtokollAddrLAddrH
0x200xD40x00 .. 0xFF0..3Bit 0..7Bit 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.