| <?xml version="1.0" encoding="UTF-8"?> | |
| <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> | |
| <xs:attributeGroup name="Nameable"> | |
| <xs:attribute name="Name" type="xs:NMTOKEN" use="required"/> | |
| <xs:attribute name="Description" type="xs:string" use="optional"/> | |
| </xs:attributeGroup> | |
| <xs:simpleType name="SizeType"> | |
| <xs:restriction base="xs:positiveInteger"> | |
| <xs:pattern value="8|16|32"/> | |
| </xs:restriction> | |
| </xs:simpleType> | |
| <xs:simpleType name="SizeType64"> | |
| <xs:restriction base="xs:positiveInteger"> | |
| <xs:pattern value="8|16|32|64"/> | |
| </xs:restriction> | |
| </xs:simpleType> | |
| <xs:attributeGroup name="IntegerParameterAttributes"> | |
| <xs:attribute name="Size" type="SizeType" use="required"/> | |
| <xs:attribute name="Min" type="xs:integer" use="optional"/> | |
| <xs:attribute name="Max" type="xs:integer" use="optional"/> | |
| <xs:attribute name="Signed" type="xs:boolean" use="optional" default="false"/> | |
| </xs:attributeGroup> | |
| <xs:attributeGroup name="ArrayLengthAttribute"> | |
| <xs:attribute name="ArrayLength" type="xs:nonNegativeInteger" use="optional" default="0"/> | |
| </xs:attributeGroup> | |
| <xs:complexType name="Adaptation"> | |
| <xs:attribute name="Offset" type="xs:integer" default="0"/> | |
| </xs:complexType> | |
| <xs:element name="LinearAdaptation"> | |
| <xs:complexType> | |
| <xs:complexContent> | |
| <xs:extension base="Adaptation"> | |
| <xs:attribute name="SlopeNumerator" type="xs:double" default="1"/> | |
| <xs:attribute name="SlopeDenominator" type="xs:double" default="1"/> | |
| </xs:extension> | |
| </xs:complexContent> | |
| </xs:complexType> | |
| </xs:element> | |
| <xs:complexType name="Parameter" abstract="true"> | |
| <xs:attributeGroup ref="Nameable"/> | |
| <xs:attribute name="Mapping" type="xs:string" use="optional"/> | |
| <xs:attributeGroup ref="ArrayLengthAttribute"/> | |
| </xs:complexType> | |
| <xs:element name="BooleanParameter"> | |
| <xs:complexType> | |
| <xs:complexContent> | |
| <xs:extension base="Parameter"> | |
| <xs:attribute name="Size" fixed="8"/> | |
| </xs:extension> | |
| </xs:complexContent> | |
| </xs:complexType> | |
| </xs:element> | |
| <xs:complexType name="IntegerParameterType"> | |
| <xs:complexContent> | |
| <xs:extension base="Parameter"> | |
| <xs:choice minOccurs="0"> | |
| <xs:element ref="LinearAdaptation"/> | |
| </xs:choice> | |
| <xs:attributeGroup ref="IntegerParameterAttributes"/> | |
| <xs:attribute name="Unit" type="xs:token" use="optional"/> | |
| </xs:extension> | |
| </xs:complexContent> | |
| </xs:complexType> | |
| <xs:element name="IntegerParameter" type="IntegerParameterType"/> | |
| <xs:complexType name="EnumParameterType"> | |
| <xs:complexContent> | |
| <xs:extension base="Parameter"> | |
| <xs:sequence> | |
| <xs:element name="ValuePair" maxOccurs="unbounded"> | |
| <xs:complexType> | |
| <xs:attribute name="Literal" type="xs:string" use="required"/> | |
| <xs:attribute name="Numerical" use="required"> | |
| <xs:simpleType> | |
| <xs:restriction base="xs:string"> | |
| <xs:pattern value="0|[+-]?[1-9][0-9]*"/> | |
| <xs:pattern value="0x[0-9a-fA-F]+"/> | |
| </xs:restriction> | |
| </xs:simpleType> | |
| </xs:attribute> | |
| </xs:complexType> | |
| </xs:element> | |
| </xs:sequence> | |
| <xs:attribute name="Size" type="SizeType" use="required"/> | |
| </xs:extension> | |
| </xs:complexContent> | |
| </xs:complexType> | |
| <xs:element name="EnumParameter" type="EnumParameterType"> | |
| <xs:unique name="LiteralUniqueness"> | |
| <xs:selector xpath="ValuePair"/> | |
| <xs:field xpath="@Literal"/> | |
| </xs:unique> | |
| <xs:unique name="NumericalUniqueness"> | |
| <xs:selector xpath="ValuePair"/> | |
| <xs:field xpath="@Numerical"/> | |
| </xs:unique> | |
| </xs:element> | |
| <xs:complexType name="FixedPointParameterType"> | |
| <xs:complexContent> | |
| <xs:extension base="Parameter"> | |
| <xs:attribute name="Size" type="SizeType" use="required"/> | |
| <xs:attribute name="Integral" type="xs:nonNegativeInteger" use="required"/> | |
| <xs:attribute name="Fractional" type="xs:nonNegativeInteger" use="required"/> | |
| <xs:attribute name="Unit" type="xs:token" use="optional"/> | |
| </xs:extension> | |
| </xs:complexContent> | |
| </xs:complexType> | |
| <xs:element name="FixedPointParameter" type="FixedPointParameterType"/> | |
| <xs:complexType name="BitParameterType"> | |
| <xs:attributeGroup ref="Nameable"/> | |
| <xs:attribute name="Size" use="required"> | |
| <xs:simpleType> | |
| <xs:restriction base="xs:positiveInteger"> | |
| <xs:maxInclusive value="64"/> | |
| </xs:restriction> | |
| </xs:simpleType> | |
| </xs:attribute> | |
| <xs:attribute name="Pos" use="required"> | |
| <xs:simpleType> | |
| <xs:restriction base="xs:nonNegativeInteger"> | |
| <xs:maxInclusive value="63"/> | |
| </xs:restriction> | |
| </xs:simpleType> | |
| </xs:attribute> | |
| <xs:attribute name="Max" type="xs:integer" use="optional"/> | |
| </xs:complexType> | |
| <xs:element name="BitParameterBlock"> | |
| <xs:complexType> | |
| <xs:sequence> | |
| <xs:element name="BitParameter" type="BitParameterType" maxOccurs="unbounded"/> | |
| </xs:sequence> | |
| <xs:attributeGroup ref="Nameable"/> | |
| <xs:attribute name="Size" type="SizeType64" use="required"/> | |
| <xs:attribute name="Mapping" type="xs:string" use="optional"/> | |
| </xs:complexType> | |
| <xs:unique name="BitParameterBlockSubElementsUniqueness"> | |
| <xs:selector xpath="*"/> | |
| <xs:field xpath="@Name"/> | |
| </xs:unique> | |
| </xs:element> | |
| <xs:element name="StringParameter"> | |
| <xs:complexType> | |
| <xs:attributeGroup ref="Nameable"/> | |
| <xs:attribute name="Mapping" type="xs:string" use="optional"/> | |
| <xs:attribute name="MaxLength" type="xs:nonNegativeInteger" use="required"/> | |
| </xs:complexType> | |
| </xs:element> | |
| <xs:group name="ParameterBlockGroup"> | |
| <xs:choice> | |
| <xs:element ref="BooleanParameter"/> | |
| <xs:element ref="IntegerParameter"/> | |
| <xs:element ref="EnumParameter"/> | |
| <xs:element ref="FixedPointParameter"/> | |
| <xs:element ref="BitParameterBlock"/> | |
| <xs:element ref="StringParameter"/> | |
| <xs:element name="ParameterBlock" type="ParameterBlockType"> | |
| <xs:unique name="ParameterBlockSubElementsUniqueness"> | |
| <xs:selector xpath="*"/> | |
| <xs:field xpath="@Name"/> | |
| </xs:unique> | |
| </xs:element> | |
| </xs:choice> | |
| </xs:group> | |
| <xs:complexType name="ParameterBlockType"> | |
| <xs:sequence> | |
| <xs:group ref="ParameterBlockGroup" maxOccurs="unbounded"/> | |
| </xs:sequence> | |
| <xs:attributeGroup ref="Nameable"/> | |
| <xs:attributeGroup ref="ArrayLengthAttribute"/> | |
| <xs:attribute name="Mapping" type="xs:string" use="optional"/> | |
| </xs:complexType> | |
| </xs:schema> |