| <?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:attributeGroup name="TypedNameable"> |
| <xs:attributeGroup ref="Nameable"/> |
| <xs:attribute name="Type" type="xs:NMTOKEN" use="required"/> |
| </xs:attributeGroup> |
| <xs:complexType name="ComponentInstance"> |
| <xs:attributeGroup ref="TypedNameable"/> |
| <xs:attribute name="Mapping" use="optional"/> |
| </xs:complexType> |
| <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:complexType name="LinearAdaptationType"> |
| <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 name="LinearAdaptation" type="LinearAdaptationType"/> |
| <xs:element name="LogarithmicAdaptation"> |
| <xs:complexType> |
| <xs:complexContent> |
| <xs:extension base="LinearAdaptationType"> |
| <xs:attribute name="LogarithmBase" type="xs:double" default="10"/> |
| <xs:attribute name="FloorValue" type="xs:double" default="-INF"/> |
| </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:element ref="LogarithmicAdaptation"/> |
| </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="Component" type="ComponentInstance"/> |
| <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> |