</xs:restriction>
</xs:simpleType>
+<xs:simpleType name="modetype">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[rwb]+"/>
+ <!-- (r)ead and /or (w)rite, plus maybe (b)lock, if a no-more-data from this registers transports some vital information-->
+ </xs:restriction>
+</xs:simpleType>
+
+<xs:simpleType name="functiontype">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="config"/>
+ <xs:enumeration value="trigger"/>
+ <xs:enumeration value="status"/>
+ <xs:enumeration value="statistics"/>
+ </xs:restriction>
+</xs:simpleType>
+
+<xs:simpleType name="bittype">
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="31"/>
+ </xs:restriction>
+</xs:simpleType>
+
+<xs:simpleType name="formattype">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="signed"/>
+ <xs:enumeration value="unsigned"/>
+ <xs:enumeration value="hex"/>
+ <xs:enumeration value="bitmask"/>
+ <xs:enumeration value="time"/>
+ <xs:enumeration value="string"/>
+ </xs:restriction>
+</xs:simpleType>
<xs:element name="description" type="xs:string" />
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="address" type="addresstype" />
<xs:attribute name="offset" type="addresstype" />
-<xs:attribute name="mode" type="xs:string" />
-<xs:attribute name="type" type="xs:string" />
-<xs:attribute name="function" type="xs:string" />
-<xs:attribute name="start" type="xs:positiveInteger" />
+<xs:attribute name="mode" type="modetype" />
+<xs:attribute name="type" type="functiontype" />
+<xs:attribute name="function" type="functiontype" />
+<xs:attribute name="start" type="bittype" />
<xs:attribute name="size" type="xs:positiveInteger" />
<xs:attribute name="defaultValue" type="valuetype" />
<xs:attribute name="value" type="valuetype" />
-<xs:attribute name="format" type="xs:string" />
+<xs:attribute name="format" type="formattype" />
<xs:attribute name="continuous" type="xs:boolean" />
<xs:element ref="memory" maxOccurs="unbounded" />
<xs:element ref="fifo" maxOccurs="unbounded" />
</xs:choice>
- <xs:attribute ref="type" />
+ <xs:attribute ref="name" />
<xs:attribute ref="offset" />
</xs:complexType>
</xs:element>
<xs:attribute ref="name" use="required" />
<xs:attribute ref="address" />
<xs:attribute ref="size" />
- <xs:attribute ref="type" />
+ <xs:attribute ref="function" />
<xs:attribute ref="continuous" />
<xs:attribute ref="defaultValue" />
<xs:attribute ref="format" />