Ecmd speed protocol: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
(Über das Protokoll)
(Die Seite wurde geleert.)
 
Zeile 1: Zeile 1:
Das "ecmd speed protocol" ist eine Erweiterung des ecmd Protokolls. Es funktioniert nicht mit allen Interfaces von ecmd wie usb, i2c und ähnlich, sondern nur mit dem UDP Interface. Um ecmd-speed Befehle von normalen ecmd Befehlen abzugrenzen, beginnen ecmd-speed Befehle mit einem Zeilenumbruchzeichen ('\n').
 
  
== Über das Protokoll ==
 
Beachte: [http://de.wikipedia.org/wiki/User_Datagram_Protocol UDP] unterstützt keine Bestätigung, dass ein neuer Befehl eingegangen ist. Das ecmd-speed-Protokoll kann diese Funktion aber optional liefern. (Bei häufigen, schnellen Befehlsfolgen nicht empfehlenswert.)
 
 
Ziel dieses Protokolls ist Geschwindigkeit, hohe Datendichte und minimale Bearbeitungszeit. Über UDP wird daher in der Regel eine Sequenz ähnlich der folgenden geliefert:
 
* 1. Byte: Newline ('\n', nur einmal am Anfang!)
 
* 2. Byte: Kommando (z.B. ECMDS_SET_STELLA_INSTANT_COLOR)
 
* 3. Byte und folgende: Daten
 
 
Da von jedem Kommando die Länge der Daten bekannt ist oder bei der Verarbeitung ermittelt werden kann werden keine gesonderten Trennzeichen benutzt und nach einem Kommando+Daten können einfach weitere Kommando+Daten Sequenzen folgen.
 
 
Die symbolischen Namen zum Kommandobyte stehen in der Datei '''protocols/emcd/speed_parser.h'''.
 
 
Das Protokoll wird genutzt vom [http://wiki.github.com/davidgraeff/stellacontrol StellaControl] Programm, welches hauptsächlich mit dem [[Stella_Light]] und Cronjobs Modul interagieren kann.
 
 
== Setter und Actions ==
 
WARNUNG: VERALTET!
 
 
=== Helligkeitssteuerung ===
 
Es gibt ein Datenbyte, dass die Zielhelligkeit angibt. (0 bis 255)
 
==== Helligkeit sofort setzen ====
 
Kommandobyte: STELLA_SET_COLOR_0, STELLA_SET_COLOR_1,
 
STELLA_SET_COLOR_2, STELLA_SET_COLOR_3, STELLA_SET_COLOR_4,
 
STELLA_SET_COLOR_5, STELLA_SET_COLOR_6, STELLA_SET_COLOR_7
 
==== Faden ====
 
STELLA_FADE_COLOR_0, STELLA_FADE_COLOR_1,
 
STELLA_FADE_COLOR_2, STELLA_FADE_COLOR_3, STELLA_FADE_COLOR_4,
 
STELLA_FADE_COLOR_5, STELLA_FADE_COLOR_6, STELLA_FADE_COLOR_7,
 
==== Flashen, dann ausfaden====
 
STELLA_FLASH_COLOR_0, STELLA_FLASH_COLOR_1,
 
STELLA_FLASH_COLOR_2, STELLA_FLASH_COLOR_3, STELLA_FLASH_COLOR_4,
 
STELLA_FLASH_COLOR_5, STELLA_FLASH_COLOR_6, STELLA_FLASH_COLOR_7,
 
 
=== Fade Algorithmus ===
 
Das Datenbyte gibt den Algorithmus/die Funktion an, welche für das Faden verwendet werden soll und kann folgende Werte annehmen: 0: Normales Auf/Abfaden; 1: Flashdimmen
 
 
Kommandobyte: STELLA_SELECT_FADE_FUNC
 
 
=== Fade Geschwindigkeit ===
 
Das Datenbyte nimmt die Geschwindigkeit, die für das Faden angewendet werden soll, auf. Es sind zwar Werte von 0 bis 255 möglich, Sinn machen aber nur welche zwischen 1 (maximal schnell) und 50 (gähnend langsam).
 
 
Kommandobyte: STELLA_FADE_STEP
 
 
=== EEProm nutzen ===
 
Der EEProm Speicher ist ein nicht flüchtiger Speicher der unsere Stella Kanäle auch über einen Neustart des Geräts hinweg erhalten kann.
 
 
==== Werte in den eeprom speichern ====
 
Kommandobyte: STELLA_SAVE_TO_EEPROM
 
 
==== Werte aus dem eeprom laden ====
 
Kommandobyte: STELLA_LOAD_FROM_EEPROM
 
 
== Getter ==
 
WARNUNG: VERALTET!
 
 
=== Stella nach Werten fragen ===
 
Es muss kein weiteres Datenbyte angegeben werden.
 
Die Rückgabe erfolgt auf den UDP Port deines Rechners, von welchem du
 
die Anfrage abgesendet hast oder bei Broadcast auf den UDP Port, welcher in der ethersex Software angegeben wurde. (Kann per menuconfig konfiguriert werden.)
 
Die Struktur der Antwort ist weiter unten erläutert.
 
 
Kommandobyte: STELLA_UNICAST_RESPONSE
 
 
=== Cronjob Anzahl abfragen ===
 
Fragt das Stella Modul, ob es nicht vielleicht verraten möchte, wieviele Cron Jobs das Modul Cronjobs gerade speichert.
 
 
Kommandobyte: STELLA_COUNT_CRONJOBS
 
 
=== Cronjobs abfragen ===
 
Fordert Stella auf, alle (alle!) Cronjobs des Cronjob Moduls zurückzuliefern. Da diese im Ram der AVR Prozessoren gehalten werden, dürften das nicht allzu viele sein. (Vielleicht maximal 20?!)
 
 
Kommandobyte: STELLA_GET_CRONJOBS
 
 
=== Cronjob hinzufügen ===
 
''Diese Funktion ist noch experimentell und kann sich noch ändern.'' Fügt einen Cronjob dem Cronjob Modul hinzu. Der Aufbau der Datenbytes sieht folgendermaßen aus.
 
* Minute (1 Byte, int8_t)
 
* Hour (1 Byte, int8_t)
 
* Day (1 Byte, int8_t)
 
* Month (1 Byte, int8_t)
 
* Day of week (1 Byte, int8_t)
 
* repeat (1 Byte, uint8_t)
 
* appid (1 Byte, char)
 
* x:= additional byte count (1 Byte, uint8_t)
 
* additional bytes (x Bytes)
 
 
Kommandobyte: STELLA_ADD_CRONJOB
 
 
== UDP Antwort Protokoll ==
 
Auf bestimmte Befehle wie etwa STELLA_UNICAST_RESPONSE antwortet das Stella Modul ebenfalls mit UDP Packeten. Dies wird z.B von dem Programm Stella Control zur Verbindung mit Stella verwendet.
 
 
Jede Antwort hat immer den selben 2 Byte Header: Identifikationsbyte 'S' und das Kommandobyte des Befehls, der diese Antwort hervorgerufen hat, also z.B. STELLA_UNICAST_RESPONSE.
 
 
=== STELLA_UNICAST_RESPONSE, STELLA_BROADCAST_RESPONSE ===
 
Die Antwort ist 12 Bytes lang.
 
* Header (2 Bytes)
 
* Verwendete Protokoll Version (1 Byte, uint8_t)
 
* Anzahl der verwendeten Kanäle (1 Byte, uint8_t)
 
* Aktuelle Helligkeitswerte aller 8 Kanäle (8 Bytes, uint8_t)
 
 
=== STELLA_COUNT_CRONJOBS ===
 
Die Antwort ist 3 Bytes lang.
 
* Header (2 Bytes)
 
* Anzahl an Cronjobs (1 Byte, uint8_t)
 
 
=== STELLA_GET_CRONJOBS ===
 
Die Antwort ist mindestens 3 Bytes lang und enthält wirklich alle Cronjobs, sofern der UDP Rahmen nicht vorher erschöpft war (dieses Szenario sollte nicht auftreten).
 
 
* Header (2 Bytes)
 
* Anzahl an nun folgenden Cronjobs (1 Byte, uint8_t)
 
* Cronjobs (mehrere dieser Strukturen können folgen)
 
** Minute (1 Byte, int8_t)
 
** Hour (1 Byte, int8_t)
 
** Day (1 Byte, int8_t)
 
** Month (1 Byte, int8_t)
 
** Day of week (1 Byte, int8_t)
 
** repeat (1 Byte, uint8_t)
 
** appid (1 Byte, char)
 
** x:= additional byte count (1 Byte, uint8_t)
 
** additional bytes (x Bytes)
 
 
[[Category:Ethersex]]
 
[[Category:Zerties]]
 

Aktuelle Version vom 25. Juli 2009, 15:27 Uhr