-
Notifications
You must be signed in to change notification settings - Fork 6
eds
Das EDS ist ein sehr einfaches Datenablage-System fuer EEPROMs. Alle Firmwares verwenden EDS, um Daten der Devices speichern zu koennen. EDS teilt den vorhandenen Speicherplatz in Leerblocks auf; davon lassen sich Blocks allozieren und mit Daten fuellen.
Design-Ziel war es, ein moeglichst einfaches Datenablage-System zu schaffen, das fuer den Betrieb nur sehr Verwaltungsplatz verbraucht. Performance ist zweitrangig, da die Config im Normalfall nur einmal beim Booten oder Reload geladen wird.
Der erste Teil (32 Bytes) des EEPROMs werden von EDS nicht verwendet; hier legt canix einige system-relevante Daten ab, wie z.B. den Board-Typ, die Groesse und CRC16 Checksumme der Firmware etc.
Der kleine rote Bereich gehoert schon zum EDS; hier liegt der sogn. Magic Code, zwei Bytes mit den Werten 0xE4 und 0x7D. Findet die EDS Initialisierungsfunktion diesen Magic Code nicht, so geht es davon aus, dass noch kein EDS Bereich formatiert wurde und formatiert ihn. Dies ist der hellblaue Bereich; hier werden die EDS Blocks abgelegt.
Alle Blocks liegen direkt hintereinander; ihre Groesse variiert und ist im size Feld des Blocks eingetragen. Ob ein Block verwendet oder frei ist, ergibt sich aus dem Wert des type Felds: bei 0 ist der Block frei, andernfalls ist er belegt und vom Typ type.
In der Graphik sind die belegten Blocks roetlich, die freien Blocks grau gefaerbt.
Nach den type und size Feldern folgenden die Daten; die Groesse ist vom Block-Typ abhaengig.
telican stellt, sofern es Verbindung zu einem Board hat, das EDS unterstuetzt, folgende Befehle zur Verfuegung:
zeigt die gesamte EDS Konfiguration an; die Ausgabe-Form kann direkt auch zum Erzeugen verwendet werden:
> show conf
# EDS-Address: 34
create taster
set port 0
set feature 0
set gruppe 38
exit
# EDS-Address: 39
create taster
set port 1
set feature 0
set gruppe 39
exit
>
Zeilen mit '#' werden als Kommentare ignoriert; show conf zeigt die Adressen, an denen der jeweils folgende Block liegt, als Kommentar.
Achtung: Dies ist die Block-Adresse; die Daten des Blocks beginnen nach dem Header, d.h. nach 2 weiteren Bytes!
Hinweis: Es wird die Konfiguration, die im EEPROM abgelegt ist angezeigt, und nicht die aktuell laufende Konfiguration. Diese ist im Normalfall gleich, kann aber, wenn schon im EDS editiert wurde, davon abweichen!
Formatiert den EDS Bereich im EEPROM; dabei gehen natuerlich alle Daten verloren. Daher wird dieser Befehl auch gross geschrieben, um gegen Vertipper besser geschuetzt zu sein.
Defragmentiert den EDS Bereich; d.h. es werden mehrere, hintereinander liegendende Leer-Bloecke zu einem Leer-Block zusammengefasst.
Editiert den Block, der an der angegebenen Adresse liegt. Siehe Befehl list:
Zeigt die Informationen in Anhaengikeit vom Kontext an; Beispiel:
> list
{taster}@34
{taster}@39
{taster}@44
{taster}@49
{taster}@54
{taster}@59
{rolladen}@64
{rolladen}@79
{powerport}@94
{lichtzone}@102
> edit 34
EDS/{taster}@34 > list
uint8_t port 0
uint8_t feature 0
uint8_t gruppe 38
EDS/{taster}@34 >
Hinweis: Der Kontext-Prompt wurde in der Version 2.0 mit der Einfuehrung von OAP etwas erweitert; das Schluesselwort EDS zeigt an, dass es sich um einen EDS Kontext handelt; der Bezeichner in geschweiften Klammern ist der Objekt- oder Block-Typ, also in diesem Falle ein Taster. Hinter dem Klammeraffen steht die Adresse bzw. das sogn. Handle.
Zeigt fuer Felder die Bitweise eingegeben werden Hinweise an.
Aktuell implementiert beim ''day_pattern'' in der Zeitzone und ''feature'' bei div. Devices.
z.B.
EDS/{zeitzone}@227 > hint day_pattern
# bit 7 |--------- Sonntag
# bit 6 ||-------- Samstag
# bit 5 |||------- Freitag
# bit 4 ||||------ Donnerstag
# bit 3 |||||----- Mittwoch
# bit 2 ||||||---- Dienstag
# bit 1 |||||||--- Montag
# bit 0 ||||||||-- nicht verwendet
# uint8_t day_pattern 0b11111110 (254)
EDS/{zeitzone}@227 > set day_pattern 0b11000000
Loescht einen EDS Block. Als Parameter muss die Adresse angegeben werden.
Setzt (im EDS Block Kontext) ein Feld auf einen bestimmten Wert. Beispiel:
EDS/{taster}@34 > list
uint8_t port 0
uint8_t feature 0
uint8_t gruppe 38
EDS/{taster}@34 > set port 5
EDS/{taster}@34 > list
uint8_t port 5
uint8_t feature 0
uint8_t gruppe 38
EDS/{taster}@34 >
Strings werden ohne Anfuehrungszeichen angegeben. Hier ein Beispiel eines Bedienfeldes:
EDS/{taster_page}@366 > list
uint8_t page_id 202
uint8_t parent_id 8
uint8_t next_id 0
uint8_t prev_id 201
uint8_t feature 0
uint8_t gruppe 232
char[17] line0 'Garagentor'
char[17] line1 'Start/Stop'
EDS/{taster_page}@366 > set line0 Garten-Tor
EDS/{taster_page}@366 > list
uint8_t page_id 202
uint8_t parent_id 8
uint8_t next_id 0
uint8_t prev_id 201
uint8_t feature 0
uint8_t gruppe 232
char[17] line0 'Garten-Tor'
char[17] line1 'Start/Stop'
EDS/{taster_page}@366 >
Felder die Bitweise eingegeben werden, können auch in Binaerschreibweise eingegeben werden (siehe Befehl ''hint''):
set day_pattern 0b11000000
Theoretisch koennte man aber auch andere Felder in Binaerschreibweise angeben ;-)
Funktioniert wie ''show conf'' filtert aber auf einen bestimmten Block Typ
z.B.
> show all powerport
# EDS-Address: 39
create powerport
set port 0
set feature 12
set gruppe0 134
set gruppe1 129
set gruppe2 255
set timer 158
set mute 255
exit
# EDS-Address: 77
create powerport
set port 2
set feature 12
set gruppe0 130
set gruppe1 129
set gruppe2 255
set timer 1
set mute 255
exit
Das type Feld ist 1 Byte gross, d.h. es sind EDS Typen von 1..254 moeglich. Die IDs sind folgendermassen vergeben:
ID Pool | Verwendung |
---|---|
1..127 | HCAN |
128-191 | persoenlicher Pool |
192-223 | reserviert fuer spaetere Verwendung |
224-254 | privater Pool (entspricht RFC1918 IPs) |
Wenn 2 oder mehr HCAN-Anwender gemeinsam neue EDS Block Typen benoetigen, so werden aus diesem Pool IDs zugwiesen.
Aehnlich dem RFC1918 IP-Adressen koennen IDs aus diesem Bereich frei verwendet werden. Es ist sichergestellt, dass zukuenftige HCAN Releases diesen Bereich nicht verwenden, so dass hier beliebig fuer private Zwecke verwendet werden kann.
-
Tutorials
-
FAQ
-
Referenz
- Konzepte
- Hardware
- Software/PC
- Software/Firmware
- Patches
- EDS - EEPROM Data System
- HCAN Protokoll
- HCAN Protokoll - Referenz