Inhaltsverzeichnis
XML-Struktur einer CV-Definitionsdatei
ACHTUNG: Alle XML-Tags sind Case-Sensitiv. Groß- und Kleinschreibung muss beachtet werden.
<VendorCV></VendorCV>
ist also nicht das Gleiche wie
<vendorcv></vendorcv>
1. Grundstruktur
Die XML-Datei besteht aus drei Teilen.
Im ersten Teil werden Informationen zur Version der Datei hinterlegt.
Im zweiten können (optional) Templates für mehrfach vorkommende CV-Blöcke definiert werden.
Im dritten Abschnitt wird die Baumstruktur festgelegt und die CV’s definiert.
Alle Teile müssen innerhalb von <VendorCV></VendorCV> stehen.
<?xml version="1.0" encoding="utf-8" ?> <VendorCV xmlns="http://www.bidib.org/schema/vendorcv" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bidib.org/schema/vendorcv /xsd/vendor_cv.xsd"> <Version> <!-- ...Info-Bereich... --> </Version> <Templates> <!-- ...Templates... --> <Template Name="xyz"> </Template> </Templates> <CVDefinition> <!-- ...Baumstruktur... --> <Node> </Node> </CVDefinition> </VendorCV>
2. Konvention für Dateinamen
Der Wizard und der Monitor verwenden folgende Konvention um eine entsprechende Knoten-CV-XML in Abhängigkeit von der Firmware-Version des Knoten anzuziehen:
BiDiBCV-13-104.xml --> gilt für alle Versionen > 2.02.255 ^^ ^^ BiDiBCV-13-104-2.02.xml --> gilt für alle Versionen > 2.02.02 && <= 2.02.255 ^^ ^^ BiDiBCV-13-104-2.02.02.xml --> gilt für alle Versionen <= 2.02.02
Die Knoten-CV-XMLs werden entweder von den Tools mitgeliefert oder sie werden an folgendem Ort gesucht:
${userhome}\.bidib\data\BiDiBNodeVendorData
3. Info-Abschitt
Der Info-Abschnitt der Datei liefert Information über die Datei selber.
<Version Version="0.3" Lastupdate="20130831" Author="Tillner, Andreas" Pid="204" Vendor="13" Description="BiDiBOne OneOC: 20x OC-Input"> </Version>
Die Attribute Version, Author und Description können beliebigen Text enthalten.
Pid und Vendor enthalten die entsprechenden Teile der UID in dezimalen Werten.
Lastupdate gibt das Datum der letzten Änderung in YYYYMMTT an.
Diese Daten werden im Monitor dann wie im Bild rechts dargestellt.
4. CV definieren
Eine <CV></CV> Definition bildet immer einen Endknoten in der Baumstruktur.
Eine CV wird mit folgendem XML-Block definiert:
<CV Number="0" Type="Byte" Min="0" Max="255" Low="-" High="-" Values="-" Mode="ro" Rebootneeded="true"> <Description Lang="de-DE" Text="EEPROM Version" Help="Zeigt die aktuelle EEPROM Version des Knoten" /> <Description Lang="en-EN" Text="EEPROM Version" Help="Shows the current EEPROM version of the node" /> </CV>
Attribut | Beschreibung |
---|---|
Number | Die Nummer der CV |
Type | Datentype. „Byte“, „Int“, „Bit“, „DCC_ADDR_RG“, „GBM16TReverser“, „SignedChar“ oder „Radio“ |
Min | Minimalwert für diese CV, nur bei „Byte“ |
Max | Maximalwert für diese CV, nur bei „Byte“ |
Low | Bei Type „Int“ wird hier die CV des Lowbyte eingetragen |
High | Bei Type „Int“ wird hier die CV des Lowbyte eingetragen |
Values | Gültige Werte bei „Byte“, durch ; getrennt oder Bitmuster für „Bit“ |
Mode | Änderbarkeit: „rw“ = read/write, „ro“ = read only, „wo“ = write only, „w“ = write, „h“ = hide |
Rebootneeded | CV-Änderung wird erst bei einem Neustart des Knoten wirksam - „true“ |
Radiovalues | Es kann ein Wert für die Optionen bei Type „Radio“ und „Bit“ (mit Radiobits) vorgegeben werden. |
Radiobits | Gibt bei Type „Bit“ an, welche Bits als Radiobutton verwendet werden (siehe 4.2) |
<Description> definiert den beschreibenden Text der CV:
Attribut | Beschreibung |
---|---|
Lang | Sprache des beschreibenden Textes. Im Moment wird nur „de-DE“ und „en-EN“ ausgewertet. |
Text | Beschreibung der CV in der jeweiligen Sprache. |
Help | Hilfebeschreibung der CV in der jeweiligen Sprache. |
Gültige Werte vorgeben :
Bei den CV-Typen „Bit“ und „Byte“, können dem Anwender, mit Min Max und Values Werte für
die CV vorgegeben werden.
Wenn Values eine, durch „;“ getrennte, Liste von Werten enthält, werden Min und Max nicht
berücksichtigt.
4.1. CV-Type "Bit"
<CV Number="4" Type="Bit" Min="-" Max="-" Low="-" High="-" Mode="rw" Values="3" > <Description Lang="de-DE" Text="Messstrecke aktiviert" /> <Description Lang="en-EN" Text="measuring track is aktive"/> <Bitdescription Bitnum="1" Help="Die Messung wird nur durchgeführt, wenn Bit 0 gesetzt ist." Lang="de-DE" Text="Messstrecke aktiv"/> <Bitdescription Bitnum="1" Help="The measurement is only performed when bit 0 is set" Lang="en-EN" Text="measuring track aktive"/> <Bitdescription Bitnum="2" Lang="de-DE" Text="Sende Messwert an Host"/> <Bitdescription Bitnum="2" Lang="en-EN" Text="Send result to host"/> </CV>
Ist der Type „Bit“ für die CV angeben, öffnet sich beim Anklicken des CV in der Baumstruktur eine
Eingabemaske in der jedes zugelassene Bit einzeln gesetzt werden kann.
Beispiele für Type=„Bit“:
Min und Max werden hier nicht berücksichtig.
In Values kann eine Bitmaske vorgegeben werden. Ein Integerwert zwischen 0 und 255 gibt an,
welche Bits im Eingabefeld freigegeben sind.
Values=„1“ nur Bit 0 kann auf 0 oder 1 gesetzt werden.
Values=„5“ nur Bit 0 und 2 können auf 0 oder 1 gesetzt werden.
Über das Tag <Bitdescription> kann für jedes Bit eine Beschreibung (Attribut Text) und ein Hilfetext (Attribut Help) hinterlegt werden.
Das Attribute Bitnum beginnt bei 1.
Attribut | Beschreibung |
---|---|
Bitnum | Bitnummer beginnend mit 1 |
Lang | Sprache des beschreibenden Textes. Im Moment wird nur „de-DE“ und „en-EN“ ausgewertet. |
Text | Beschreibung der CV in der jeweiligen Sprache. |
Help | Hilfebeschreibung des Bit in der jeweiligen Sprache. |
4.2. CV-Type "Bit" mit Attribut "Radiobits"
In dem „normalen“ CV-Type „Bit“ können alle Bits gleichzeitig angeklickt werden.
Für eine Auswahlliste ist es aber Sinnvoll, immer nur eine Option zuzulassen.
Wählt man eine Option an, werden die anderen „abgewählt“ (Radiobutton).
Um beide Möglichkeiten zu kombinieren, wurde das Attribut „Radiobits“ eingeführt.
<CV Number="81" Type="Bit" Radiobits="15" Min="-" Max="-" Low="-" High="-" Mode="rw" Radiovalues="0,1,2,3" Values="143"> <Description Lang="de-DE" Text="Anzeige-Hardware"/> <Description Lang="en-EN" Text="Display-Hardware"/> <Bitdescription Bitnum="1" Lang="de-DE" Text="Kein Display angeschlossen"/> <Bitdescription Bitnum="1" Lang="en-EN" Text="no display connected"/> <Bitdescription Bitnum="2" Lang="de-DE" Text="20 LEDs (Portstatus)"/> <Bitdescription Bitnum="2" Lang="en-EN" Text="20 LEDs for Portstatus"/> <Bitdescription Bitnum="3" Lang="de-DE" Text="LCD DOGM163 16 x 3"/> <Bitdescription Bitnum="3" Lang="en-EN" Text="LCD DOGM163 16 x 3"/> <Bitdescription Bitnum="4" Lang="de-DE" Text="7-Segment LED ( vierstellig )"/> <Bitdescription Bitnum="4" Lang="en-EN" Text="7-Segment LED ( four digits )"/> <Bitdescription Bitnum="8" Lang="de-DE" Text="Ausgabe im Debug-Interface (FTDI)"/> <Bitdescription Bitnum="8" Lang="en-EN" Text="Output in Debug-Interface (FTDI)"/> </CV>
Das Attribute „Radiobits“ gibt an, welche Bits als Auswahlliste verwendet werden.
Die anderen Bits können, wie im CV-Type „Bit“, weiter an- und abgeklickt werden.
Im Beispiel oben wird Radiobits=„15“ verwendet (Bitmuster = 0000 1111). Damit werden die Bits 0-3 als Radiobutton verwendet.
4.3. CV-Type "Byte"
Durch Mausklick auf eine CV vom Type „Byte“, wird im unteren, rechten Bereich eine Eingabemaske
für den Bytewert angezeigt.
Über die Attribute Min, Max und Values können die möglichen Eingaben vorgegeben werden.
Beispiele für Type=„Byte“:
Hier wird die Eingabe über die Min- und Max-Werte auf 3 bis 20 eingegrenzt.
<CV Number="51" Type="Byte" Min="3" Max="20" Low="-" High="-" Values="-" Mode="ro"> <Description Lang="de-DE" Text="Test-CV"/> <Description Lang="en-EN" Text="CV for some tests"/> </CV>
Hier wird die Eingabe über Values auf die Werte 4, 6, 13 und 20 beschränkt.
Min und Max werden ignoriert.
<CV Number="51" Type="Byte" Min="3" Max="20" Low="-" High="-" Values="4;6;13;20" Mode="ro"> <Description Lang="de-DE" Text="Test-CV"/> <Description Lang="en-EN" Text="CV for some tests"/> </CV>
Hier wird die Eingabe nicht eingegrenzt. Alle Werte von 0 bis 255 sind möglich.
<CV Number="51" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="ro"> <Description Lang="de-DE" Text="Test-CV"/> <Description Lang="en-EN" Text="CV for some tests"/> </CV>
4.4. CV-Type "Int"
Der Type „Int“ setzt sich immer aus zwei CV’s zusammen und bilden Low-Byte und High-Byte.
Beim Klick auf eines der beiden CV wird geprüft, ob die Partner CV vorhanden ist.
Wenn ja, wird im rechten, unteren Bereich eine Eingabemaske angezeigt.
Beide CV’s müssen mit den Attribute Low und High aufeinander verweisen.
Beispiel:
<CV Number="1" Type="Int" Min="-" Max="-" Low="1" High="9" Values="-" Mode="rw" > <Description Lang="de-DE" Text="DCC Adr. (low)" /> <Description Lang="en-EN" Text="DCC Addr. (low)"/> </CV> <CV Number="9" Type="Int" Min="-" Max="-" Low="1" High="9" Values="-" Mode="rw" > <Description Lang="de-DE" Text="DCC Adr. (high)" /> <Description Lang="en-EN" Text="DCC Addr. (high)"/> </CV>
4.5. CV-Type "DCC_ADDR_RG"
Der Type „DCC_ADDR_RG“ setzt sich immer aus zwei CV’s zusammen und bilden Low-Byte und High-
Byte. Beim Klick auf eines der beiden CV wird geprüft, ob die Partner CV vorhanden. Wenn ja, wird
im rechten, unteren Bereich eine Eingabemaske angezeigt.
Dieser Type arbeitet ähnlich wie „Int“.
Die eingegebene Integer-Zahl wird hier aber in den oberen 15 Bit gespeichert. Optisch wird der Wert also verdoppelt. Es ist also nur ein Wert zwischen 0 und 32767 möglich.
Das untere Bit der Lowbyte CV wird aber extra über zwei Radio-Button „R“ und „G“ gesetzt.
Der gültige Eingabebereich wird über die Attribute Min und Max der Lowbyte CV
bestimmt.
Beide CV’s müssen mit den Attribute Low und High aufeinander verweisen.
Beispiel:
<CV Number="59" Type="DCC_ADDR_RG" Min="0" Max="255" Low="59" High="60" Values="-" Mode="rw" > <Description Lang="de-DE" Text="Inhibit On, Addr (Low)" /> <Description Lang="en-EN" Text="Inhibit On, Addr (Low)"/> </CV> <CV Number="60" Type="DCC_ADDR_RG" Min="0" Max="255" Low="59" High="60" Values="-" Mode="rw" > <Description Lang="de-DE" Text="Inhibit On, Addr (High)" /> <Description Lang="en-EN" Text="Inhibit On, Addr (High)"/> </CV>
4.6. CV-Type "DccAccAddr"
Der Type DccAccAddr
setzt sich immer aus zwei CV’s zusammen und bilden Low-Byte und High-
Byte. Beim Klick auf eines der beiden CV wird geprüft, ob die Partner CV vorhanden. Falls dies zutrifft werden
im rechten, unteren Bereich Eingabefelder angezeigt, über welche die DCC Accessory Adresse geändert werden kann.
Beide CV’s müssen mit den Attribute Low und High aufeinander verweisen.
Beispiel:
<CV Number="1" Type="DccAccAddr" Min="-" Max="-" Low="1" High="9" Values="-" Mode="rw"> <Description Lang="de-DE" Text="Dekoderadresse (low)"/> <Description Lang="en-EN" Text="Decoder address (low)"/> </CV> <CV Number="9" Type="DccAccAddr" Min="-" Max="-" Low="1" High="9" Values="-" Mode="rw"> <Description Lang="de-DE" Text="Dekoderadresse (high)"/> <Description Lang="en-EN" Text="Decoder address (high)"/> </CV>
4.7. CV-Type "GBM16TReverser"
Dieser Type ist nur für einen GBM16T zugelassen.
Beim Anklicken einer CV-Zeile vom diesem Type, prüft der Monitor, ob es sich um eine CV
für die Kehrschleifenkonfiguratione eines GBM16T handelt und ob die UID zu einem GBMBoost passt.
Wenn nicht, ist diese CV nicht änderbar.
Wenn alles passt, wird die Maske zur Konfiguration der Kehrschleife angezeigt.
Beispiel:
<CV Number="46" Type="GBM16TReverser" Min="0" Max="255" Low="-" High="-" Values="-" Mode="rw" > <Description Lang="de-DE" Text="Kehrschleife Modus" /> <Description Lang="en-EN" Text="Reverser Mode"/> </CV>
4.8. CV-Type "Radio"
Der CV-Type „Radio“ ist zur Zeit nur im BiDiB-Monitor verwendbar.
Ist der Type Radio
für die CV angeben, öffnet sich beim Anklicken der CV in der Baumstruktur eine Eingabemaske in der eine Auswahlliste von max. 16 möglichen Optionen angezeigt wird.
Es können auch mehr als 16 Optionen per <Bitdescription>
angegeben werden, aber nur die ersten 16 können den RadioButtons zugewiesen werden (siehe unten „RadioGroups“).
Mit dem Attribute Radiovalues
kann ein Wert für jede der 16 möglichen Optionen vorgegeben werden.
Beispiel:
Radiovalues="0,15,3"
Klick auf Option 0 → CV hat Wert 0
Klick auf Option 1 → CV hat Wert 15
Klick auf Option 2 → CV hat Wert 3
Ist Radiovalues
nicht vorhanden, werden den Optionen die Werte 0-15 zugewiesen.
Beispiel:
<CV Number="82" Type="Radio" Radiovalues="0,1,2,3,4,5" Min="-" Max="-" Low="-" High="-" Mode="rw" > <Description Lang="de-DE" Text="Angezeige Daten"/> <Description Lang="en-EN" Text="Shown data on Display"/> <Bitdescription Bitnum="1" Lang="de-DE" Text="Keine Daten anzeigen"/> <Bitdescription Bitnum="1" Lang="en-EN" Text="Don't show any data"/> <Bitdescription Bitnum="2" Lang="de-DE" Text="Modelbahnuhr"/> <Bitdescription Bitnum="2" Lang="en-EN" Text="Clock"/> <Bitdescription Bitnum="3" Lang="de-DE" Text="Messwert der Strecke aus CV83"/> <Bitdescription Bitnum="3" Lang="en-EN" Text="Result of one track from CV83"/> <Bitdescription Bitnum="4" Lang="de-DE" Text="Alle Messergebnisse"/> <Bitdescription Bitnum="4" Lang="en-EN" Text="All results"/> <Bitdescription Bitnum="5" Lang="de-DE" Text="Nur Portstatus"/> <Bitdescription Bitnum="5" Lang="en-EN" Text="Only status of ports"/> <Bitdescription Bitnum="6" Lang="de-DE" Text="Portstatus und Modelbahnuhr"/> <Bitdescription Bitnum="6" Lang="en-EN" Text="Status of ports and clock"/> </CV>
Attribute RadioGroups
: Die, per <Bitdescription>
aufgelisteten Auswahlmöglichkeiten, können in zwei Gruppen aufgeteilt werden werden. Die beiden Gruppen bestehen jeweils aus der Auflistung (durch Komma getrennt) der Bitnum-Nummern. Die beiden Gruppen werden durch ein ;
getrennt.
- Die Bitnum-Nummern vor dem
;
, werden als RadioButton dargestellt und dürfen nur die ersten 16 Bitnum-Nummern enthalten. - Die Bitnum-Nummern nach dem
;
werden in der Combobox aufgelistet und kann jede vorkommende Bitnum-Nummer enthalten.
Beispiel:
RadioGroups="1,2,3,4,5,6,7,8,9,10,11,12,13;14,15"
Hier werden die Werte für die RadioButton 1-13 als RadioButton dargestellt.
Die Werte der RadioButton 14 und 15 als Auswahl in einer Combobox angezeigt.
Der CV-Wert wird dann aus der Addition beider Eingaben gebildet.
Beispiel-XML:
<CV Number="47" Type="Radio" RadioGroups="1,2,3,4,5,6,7,8,9,10,11,12,13,;14,15,16" Radiovalues="0,1,2,0,4,5,6,7,8,9,0,0,12,0,64,32" Min="-" Max="-" Low="-" High="-" Mode="rw"> <Description Lang="de-DE" Text="Effekte Ausgang E (Lötpad E)"/> <Bitdescription Bitnum=" 1" Lang="de-DE" Text="Ein/Aus" Help="Rest der ToolTps"/> <Bitdescription Bitnum=" 2" Lang="de-DE" Text="Mars-Licht (pulsierend)"/> <Bitdescription Bitnum=" 3" Lang="de-DE" Text="Blitzlicht (Strobe)"/> <Bitdescription Bitnum=" 4" Lang="de-DE" Text="z.Z. nicht benutzt"/> <Bitdescription Bitnum=" 5" Lang="de-DE" Text="Blinken Phase A"/> <Bitdescription Bitnum=" 6" Lang="de-DE" Text="Abblenden mit Funktionstaste"/> <Bitdescription Bitnum=" 7" Lang="de-DE" Text="Abblenden, wenn Fahr-St. = 0"/> <Bitdescription Bitnum=" 8" Lang="de-DE" Text="Abblenden, wenn Fahr-St. > 0"/> <Bitdescription Bitnum=" 9" Lang="de-DE" Text="Blinken Phase B"/> <Bitdescription Bitnum="10" Lang="de-DE" Text="Zufalls-Licht"/> <Bitdescription Bitnum="11" Lang="de-DE" Text="z.Z. nicht benutzt"/> <Bitdescription Bitnum="12" Lang="de-DE" Text="z.Z. nicht benutzt"/> <Bitdescription Bitnum="13" Lang="de-DE" Text="Kupplungsfunktion"/> <Bitdescription Bitnum="14" Lang="de-DE" Text="fahrtrichtungsabhängige Beleuchtung durch Dekoder"/> <Bitdescription Bitnum="15" Lang="de-DE" Text="Aus, wenn vorwärts (bei Steuerung durch F1 bis F12)"/> <Bitdescription Bitnum="16" Lang="de-DE" Text="Aus, wenn rückwärts (bei Steuerung durch F1 bis F12)"/> </CV>
4.9. CV-Type "SignedChar"
Durch Mausklick auf eine CV vom Type „SignedChar“, wird im unteren, rechten Bereich eine Eingabemaske
für den Bytewert angezeigt. Im Unterschied zum Type „Byte“ können hier auch negative Werte eingegeben werden.
Ansonsten sind die Attribute wie beim Type „Byte“ zu verwenden.
Beispiele für Type=„SignedChar“:
Hier wird die Eingabe über die Min- und Max-Werte auf den Bereich -20 bis 20 begrenzt.
<CV Number="23" Type="SignedChar" Min="-20" Max="20" Low="-" High="-" Values="-" Mode="rw"> <Description Lang="de-DE" Text="Temperaturoffset: 0=standard, positiv: Korrektur zu höheren Werten" Help="Die Temperaturmessung mit dem atxmega ist nicht sehr genau, mit diesem Offsetwert kann ein individueller Abgleich vorgenommen werden."/> <Description Lang="en-EN" Text="Temperature offset: 0 default, otherwise add this value"/> </CV>
4.10. CV-Type "Long"
Implementiert ab Wizard vom 14.10.2015 und Monitor ab Version 0.6.4.8.
Durch Mausklick auf eine CV vom Type „Long“, wird im unteren, rechten Bereich eine Eingabemaske
für den Wert angezeigt.
Der Type „Long“ besteht aus 4 aufeinander folgenden CV's.
Beginnend mit der CV-Nummer die im Attribut Number angegeben ist.
Beispiele für Type=„Long“:
Hier wird der Long-Wert in den CV's 154, 155, 156 und 157 abgebildet.
<CV Number="154" Type="Long" Min="0" Max="4294967295" Low="-" High="-" Values="-" Mode="rw"> <Description Lang="de-DE" Text="Schritt Position (low)" Help="Exakte Schrittposition des Gleisabgangs"/> <Description Lang="en-EN" Text="Step position (low)"/ Help="Exact position of connected track"/> </CV>
4.11. CV-Type "String"
Implementiert ab Wizard vom 11.02.2017
<CV Number="800" Type="String" Min="0" Max="20" Low="-" High="-" Values="-" Mode="rw"> <Description Lang="de-DE" Text="Test String mit max 20 Zeichen" Help="Test String mit max 20 Zeichen"/> <Description Lang="en-EN" Text="Test String with max 20 characters"/ Help="Test String with max 20 characters"/> </CV>
Es können neu auch Strings für CV-Nummern (z.B. „TEST“) verwendet werden:
<CV Number="TEST" Type="String" Min="0" Max="20" Low="-" High="-" Values="-" Mode="rw"> <Description Lang="de-DE" Text="Test String mit max 20 Zeichen" Help="Test String mit max 20 Zeichen"/> <Description Lang="en-EN" Text="Test String with max 20 characters"/ Help="Test String with max 20 characters"/> </CV>
4.12. CV-Type "BiDiB_UID"
Der CV-Type BiDiB_UID
wird verwendet, um die Unique ID
eines BiDiB-Knoten in den CV zu definieren. Diese Definition belegt 7 aufeinanderfolgende CVs, in welcher
uid_cls_l uid_cls_h uid_vid uid_pid_l uid_pid_h uid_ser_l uid_ser_h
abgelegt werden.
<CV Number="10" Type="BiDiB_UID" Mode="rw"> <Description Lang="de-DE" Text="BiDiB-UID" Help="BiDiB-UID des Freundes."/> <Description Lang="en-EN" Text="BiDiB-UID" Help="BiDiB-UID of the friend."/> </CV>
Anwendung in einem Template:
Der nachfolgende Block erzeugt 4 Pairings beginnend an der CV 100:
<Template Name="Pairing"> <CV Number="0" Type="Byte" Min="0" Max="1" Values="-" Mode="rw"> <Description Lang="de-DE" Text="Freund" Help="0=Eintrag ist ungueltig, 1=Eintrag zeigt die BiDiB-Kennungen eines Freundes (=paired)"/> <Description Lang="en-EN" Text="Friend" Help="0=entry is void, 1=entry denotes a pairing partner"/> </CV> <CV Number="1" Type="BiDiB_UID" Mode="rw"> <Description Lang="de-DE" Text="BiDiB-UID" Help="BiDiB-UID des Freundes."/> <Description Lang="en-EN" Text="BiDiB-UID" Help="BiDiB-UID of the friend."/> </CV> </Template> <Node> <Nodetext Lang="de-DE" Text="Pairing Einstellungen"/> <Nodetext Lang="en-EN" Text="Pairing Settings"/> <Node Offset="100" Template="Pairing" Count="4" Next="8"> <Nodetext Lang="de-DE" Text="Pairing-%%d"/> <Nodetext Lang="en-EN" Text="Pairing-%%d"/> </Node> </Node>
4.13. CV-Type "NodeID"
Der CV-Type NodeID
wird verwendet, um die Knoten-ID
eines BiDiB-Knoten in den CV zu definieren. Diese Definition belegt 5 aufeinanderfolgende CVs (wie UniqueID
aber ohne Classbits) , in welcher
uid_vid uid_pid_l uid_pid_h uid_ser_l uid_ser_h
abgelegt werden.
<CV Number="10" Type="NodeID" Mode="rw"> <Description Lang="de-DE" Text="Knoten-ID" Help="Knoten-ID des Freundes."/> <Description Lang="en-EN" Text="NodeID" Help="NodeID of the friend."/> </CV>
Anwendung in einem Template:
Der nachfolgende Block erzeugt 4 Knoten-IDs beginnend an der CV 100:
<Template Name="KnotenIDs"> <CV Number="1" Type="NodeID" Mode="rw"> <Description Lang="de-DE" Text="Knoten-ID" Help="Knoten-ID des Freundes."/> <Description Lang="en-EN" Text="NodeID " Help="NodeID of the friend."/> </CV> </Template> <Node> <Nodetext Lang="de-DE" Text="Knoten-IDs Einstellungen"/> <Nodetext Lang="en-EN" Text="Node-IDs Settings"/> <Node Offset="100" Template="KnotenIDs" Count="4" Next="6"> <Nodetext Lang="de-DE" Text="Knoten-ID-%%d"/> <Nodetext Lang="en-EN" Text="Node-ID-%%d"/> </Node> </Node>
4.14. CV-Type "MAC_Address"
Der CV-Type MAC_Address
wird verwendet, um die MAC Adresse
in den CV zu definieren. Diese Definition belegt 6 aufeinanderfolgende CVs, in welcher
byte 1 byte 2 byte 3 byte 4 byte 5 byte 6
abgelegt werden.
<CV Number="10" Type="MAC_Address" Mode="rw"> <Description Lang="de-DE" Text="MAC-Adresse" Help="MAC-Adresse."/> <Description Lang="en-EN" Text="MAC-Address" Help="MAC address"/> </CV>
Anwendung in einem Template:
Der nachfolgende Block erzeugt 4 MAC-Adressen beginnend an der CV 100:
<Template Name="MAC_Addresses"> <CV Number="1" Type="MAC_Address" Mode="rw"> <Description Lang="de-DE" Text="MAC-Adresse" Help="MAC Adresse"/> <Description Lang="en-EN" Text="MAC-Address" Help="MAC address"/> </CV> </Template> <Node> <Nodetext Lang="de-DE" Text="MAC-Adresse Einstellungen"/> <Nodetext Lang="en-EN" Text="MAC-Address Settings"/> <Node Offset="100" Template="MAC_Addresses" Count="4" Next="7"> <Nodetext Lang="de-DE" Text="MAC-Adresse-%%d"/> <Nodetext Lang="en-EN" Text="MAC-Address-%%d"/> </Node> </Node>
5. Templates
Innerhalb der Tags <Templates></Templates> (mit s) können Templates definiert werden, die es vereinfachen, mehrfach vorkommende CV-Strukturen, in der Baumstruktur abzubilden. Jedes Template wird mit dem Tag <Template></Template> (ohne s) definiert. Hier ein Beispiel für die CV's der LED-Ports der LightControl)
<Template Name="LED"> <CV Number="0" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw"> <Description Lang="de-DE" Text="LED: Einstellung der Stromquelle"/> <Description Lang="en-EN" Text="LED: courrent source setup"/> </CV> <CV Number="1" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw"> <Description Lang="de-DE" Text="LED: Helligkeit für Zustand 'aus'"/> <Description Lang="en-EN" Text="LED: light intensity at status 'off'"/> </CV> <CV Number="2" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw"> <Description Lang="de-DE" Text="LED: Helligkeit für Zustand 'an'"/> <Description Lang="en-EN" Text="LED: light intensity at status 'on'"/> </CV> <CV Number="3" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw"> <Description Lang="de-DE" Text="LED: Dimmzeit in Richtung 'aus', 0 = schnell / 255 = langsam"/> <Description Lang="en-EN" Text="LED: time to dim, direction 'off', 0 = fast / 255 = slow" /> </CV> <CV Number="4" Type="Byte" Min="-" Max="-" Low="-" High="-" Values="-" Mode="rw"> <Description Lang="de-DE" Text="LED: Dimmzeit in Richtung 'an', 0 = schnell / 255 = langsam"/> <Description Lang="en-EN" Text="LED: time to dim, direction 'on', 0 = fast / 255 = slow" /> </CV> </Template>
Hier bitte nicht wundern, das die CV's mit den Nummern 0 bis 4 definiert sind. Die benötigten CV-Nummern werden später in der Baumstruktur, per Offset definiert.
6. Baumstruktur definieren
Die eigentliche Baumstruktur wird innerhalb des Tags <CVDefinition></CVDefinition> definiert.
Mit dem Tag <Node></Node> wird ein Knoten in der Baumstruktur angelegt.
Mit dem Tag <Nodetext> innerhalb von <Node></Node> wird der Text des Knoten hinterlegt.
Innerhalb von <Node></Node> werden per Template (Siehe 4.) oder
CV-Definition (siehe 3.) die CV's abgebildet.
Beispiel für einen einfachen
Knoten vom GBMBoost:
<Node> <Nodetext Lang="de-DE" Text="Allgemeine Daten"/> <Nodetext Lang="en-EN" Text="Basis"/> <CV Number="1" Type="Byte" Min="0" Max="255" Low="-" High="-" Values="-" Mode="ro"> <Description Lang="de-DE" Text="Parser Modus"/> <Description Lang="en-EN" Text="Parser Mode"/> </CV> <CV Number="2" Type="Byte" Min="0" Max="255" Low="-" High="-" Values="-" Mode="ro"> <Description Lang="de-DE" Text="DCC Herstellerkennung"/> <Description Lang="en-EN" Text="DCC Vendor ID"/> </CV> ... </Node>
6.1. Knoten mit Template
Um ein Template zu verwenden, kann das <Node>-Tag mit folgenden Attributen versehen werden:
Attribut | Beschreibung |
---|---|
Template | Name des Templates. |
Count | Angabe, wie oft das Template wiederholt werden soll. |
Offset | Angabe, mit welcher CV-Nummer die Nummerierung der CV's beginnt. |
Next | Multiplikator des Offset das jeweilige Template (Count). |
Beispiel:
<Node> <Nodetext Lang="de-DE" Text="GBM16T"/> <Nodetext Lang="en-EN" Text="GBM16T"/> <Node Offset="10000" Template="GBM16T" Count="3" Next="10000"> <Nodetext Lang="de-DE" Text="GBM16T-%%d"/> <Nodetext Lang="en-EN" Text="GBM16T-%%d"/> </Node> </Node>
Hier wird das Template GBM16T angezogen. Es wird 3 mal angewendet.
Beim ersten mal wird ein Offset von 10000 verwendet. Wenn also im Template die erste CV mit Nummer 0 definiert ist, wird im Baum diese CV als 10000 dargestellt.
Das zweite mal wird der Wert von Next auf das Offset addiert.
Also wird CV 0 hier mit 20000 dargestellt. Das dritte mal dann mit 30000.
Wie im Nodetext-Tag zu sehen ist, kann die Variable %%d als durchlaufende Nummer (Index, Count) verwendet werden, um den Knoten einen entsprechenden Namen zu geben.
Die Variable %%p kann gleich wie %%dverwendet werden, ist aber um +1 höher als der Index.
6.2. Repeater
Mit dem Repeater-Tag kann eine for-Schleife für CV-Values definiert werden.
Die Werte für Offset
, Count
und Next
sind mandatory.
Beispiel:
<Node> <Nodetext Lang="de-DE" Text="Basis Daten" /> <Nodetext Lang="en-EN" Text="Basis" /> <CV Number="81" Type="Radio" Radiobits="15" Min="-" Max="-" Low="-" High="-" Values="143" Mode="rw" Radiovalues="0,1,2,3"> <Description Lang="de-DE" Text="Test einfache CV vor Repeater" /> <Description Lang="en-EN" Text="Test simple CV before Repeater" /> </CV> <Repeater Offset="60" Count="3" Next="2"> <CV Number="1" Type="Byte" Min="-" Max="-" Low="-" High="-" Mode="rw"> <Description Lang="de-DE" Text="Anzeige-Hardware %%d" /> <Description Lang="en-EN" Text="Display-Hardware %%d" /> </CV> <CV Number="2" Type="Byte" Min="-" Max="-" Low="-" High="-" Mode="rw"> <Description Lang="de-DE" Text="Anzeige-Software %%d" /> <Description Lang="en-EN" Text="Display-Software %%d" /> </CV> </Repeater> <CV Number="181" Type="Radio" Radiobits="15" Min="-" Max="-" Low="-" High="-" Values="143" Mode="rw" Radiovalues="0,1,2,3"> <Description Lang="de-DE" Text="Test einfache CV nach Repeater" /> <Description Lang="en-EN" Text="Test simple CV after Repeater" /> </CV> </Node>
Die nachfolgende Abbildung zeigt das Resultat des Beispiels oben.