• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="UTF-8"?>
2<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
3    <xs:attributeGroup name="Nameable">
4        <xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
5        <xs:attribute name="Description" type="xs:string" use="optional"/>
6    </xs:attributeGroup>
7    <xs:attributeGroup name="TypedNameable">
8        <xs:attributeGroup ref="Nameable"/>
9        <xs:attribute name="Type" type="xs:NMTOKEN" use="required"/>
10    </xs:attributeGroup>
11    <xs:complexType name="ComponentInstance">
12        <xs:attributeGroup ref="TypedNameable"/>
13        <xs:attributeGroup ref="ArrayLengthAttribute"/>
14        <xs:attribute name="Mapping" use="optional" type="xs:string"/>
15    </xs:complexType>
16    <xs:simpleType name="SizeType">
17        <xs:restriction base="xs:positiveInteger">
18            <xs:pattern value="8|16|32"/>
19        </xs:restriction>
20    </xs:simpleType>
21    <xs:simpleType name="SizeType64">
22        <xs:restriction base="xs:positiveInteger">
23            <xs:pattern value="8|16|32|64"/>
24        </xs:restriction>
25    </xs:simpleType>
26    <xs:attributeGroup name="IntegerParameterAttributes">
27        <xs:attribute name="Size" type="SizeType" use="required"/>
28        <xs:attribute name="Min" type="xs:integer" use="optional"/>
29        <xs:attribute name="Max" type="xs:integer" use="optional"/>
30        <xs:attribute name="Signed" type="xs:boolean" use="optional" default="false"/>
31    </xs:attributeGroup>
32    <xs:attributeGroup name="ArrayLengthAttribute">
33        <xs:attribute name="ArrayLength" type="xs:nonNegativeInteger" use="optional" default="0"/>
34    </xs:attributeGroup>
35    <xs:complexType name="Adaptation">
36        <xs:attribute name="Offset" type="xs:integer" default="0"/>
37    </xs:complexType>
38    <xs:complexType name="LinearAdaptationType">
39        <xs:complexContent>
40            <xs:extension base="Adaptation">
41                <xs:attribute name="SlopeNumerator" type="xs:double" default="1"/>
42                <xs:attribute name="SlopeDenominator" type="xs:double" default="1"/>
43            </xs:extension>
44        </xs:complexContent>
45    </xs:complexType>
46    <xs:element name="LinearAdaptation" type="LinearAdaptationType"/>
47    <xs:element name="LogarithmicAdaptation">
48        <xs:complexType>
49            <xs:complexContent>
50                <xs:extension base="LinearAdaptationType">
51                    <xs:attribute name="LogarithmBase" type="xs:double" default="10"/>
52                    <xs:attribute name="FloorValue" type="xs:double" default="-INF"/>
53                </xs:extension>
54            </xs:complexContent>
55        </xs:complexType>
56    </xs:element>
57    <xs:complexType name="Parameter" abstract="true">
58        <xs:attributeGroup ref="Nameable"/>
59        <xs:attribute name="Mapping" type="xs:string" use="optional"/>
60        <xs:attributeGroup ref="ArrayLengthAttribute"/>
61    </xs:complexType>
62    <xs:element name="BooleanParameter">
63        <xs:complexType>
64            <xs:complexContent>
65                <xs:extension base="Parameter">
66                    <xs:attribute name="Size" fixed="8" type="SizeType"/>
67                </xs:extension>
68            </xs:complexContent>
69        </xs:complexType>
70    </xs:element>
71    <xs:complexType name="IntegerParameterType">
72        <xs:complexContent>
73            <xs:extension base="Parameter">
74                <xs:choice minOccurs="0">
75                    <xs:element ref="LinearAdaptation"/>
76                    <xs:element ref="LogarithmicAdaptation"/>
77                </xs:choice>
78                <xs:attributeGroup ref="IntegerParameterAttributes"/>
79                <xs:attribute name="Unit" type="xs:token" use="optional"/>
80            </xs:extension>
81        </xs:complexContent>
82    </xs:complexType>
83    <xs:element name="IntegerParameter" type="IntegerParameterType"/>
84    <xs:complexType name="EnumParameterType">
85        <xs:complexContent>
86            <xs:extension base="Parameter">
87                <xs:sequence>
88                    <xs:element name="ValuePair" maxOccurs="unbounded">
89                        <xs:complexType>
90                            <xs:attribute name="Literal" type="xs:string" use="required"/>
91                            <xs:attribute name="Numerical" use="required">
92                                <xs:simpleType>
93                                    <xs:restriction base="xs:string">
94                                        <xs:pattern value="0|[+-]?[1-9][0-9]*"/>
95                                        <xs:pattern value="0x[0-9a-fA-F]+"/>
96                                    </xs:restriction>
97                                </xs:simpleType>
98                            </xs:attribute>
99                        </xs:complexType>
100                    </xs:element>
101                </xs:sequence>
102                <xs:attribute name="Size" type="SizeType" use="required"/>
103            </xs:extension>
104        </xs:complexContent>
105    </xs:complexType>
106    <xs:element name="EnumParameter" type="EnumParameterType">
107        <xs:unique name="LiteralUniqueness">
108            <xs:selector xpath="ValuePair"/>
109            <xs:field xpath="@Literal"/>
110        </xs:unique>
111        <xs:unique name="NumericalUniqueness">
112            <xs:selector xpath="ValuePair"/>
113            <xs:field xpath="@Numerical"/>
114        </xs:unique>
115    </xs:element>
116    <xs:simpleType name="PointBound">
117        <xs:restriction base="xs:string">
118            <xs:pattern value="(0|[+-]?0\.[0-9]+|(([+-]?[1-9][0-9]*)(\.[0-9]+)?))([Ee][+-]?[0-9]+)?"/>
119        </xs:restriction>
120    </xs:simpleType>
121    <xs:complexType name="PointParameterType">
122        <xs:complexContent>
123            <xs:extension base="Parameter">
124                <xs:attribute name="Unit" type="xs:token" use="optional"/>
125            </xs:extension>
126        </xs:complexContent>
127    </xs:complexType>
128    <xs:complexType name="FixedPointParameterType">
129        <xs:complexContent>
130            <xs:extension base="PointParameterType">
131                <xs:attribute name="Size" type="SizeType" use="required"/>
132                <xs:attribute name="Integral" type="xs:nonNegativeInteger" use="required"/>
133                <xs:attribute name="Fractional" type="xs:nonNegativeInteger" use="required"/>
134            </xs:extension>
135        </xs:complexContent>
136    </xs:complexType>
137    <xs:element name="FixedPointParameter" type="FixedPointParameterType"/>
138    <xs:complexType name="FloatingPointParameterType">
139        <xs:complexContent>
140            <xs:extension base="PointParameterType">
141                <xs:attribute name="Size" fixed="32" type="SizeType"/>
142                <xs:attribute name="Min" type="PointBound" use="optional"/>
143                <xs:attribute name="Max" type="PointBound" use="optional"/>
144            </xs:extension>
145        </xs:complexContent>
146    </xs:complexType>
147    <xs:element name="FloatingPointParameter" type="FloatingPointParameterType"/>
148    <xs:complexType name="BitParameterType">
149        <xs:attributeGroup ref="Nameable"/>
150        <xs:attribute name="Size" use="required">
151            <xs:simpleType>
152                <xs:restriction base="xs:positiveInteger">
153                    <xs:maxInclusive value="64"/>
154                </xs:restriction>
155            </xs:simpleType>
156        </xs:attribute>
157        <xs:attribute name="Pos" use="required">
158            <xs:simpleType>
159                <xs:restriction base="xs:nonNegativeInteger">
160                    <xs:maxInclusive value="63"/>
161                </xs:restriction>
162            </xs:simpleType>
163        </xs:attribute>
164        <xs:attribute name="Max" type="xs:integer" use="optional"/>
165    </xs:complexType>
166    <xs:element name="BitParameterBlock">
167        <xs:complexType>
168            <xs:sequence>
169                <xs:element name="BitParameter" type="BitParameterType" maxOccurs="unbounded"/>
170            </xs:sequence>
171            <xs:attributeGroup ref="Nameable"/>
172            <xs:attribute name="Size" type="SizeType64" use="required"/>
173            <xs:attribute name="Mapping" type="xs:string" use="optional"/>
174        </xs:complexType>
175        <xs:unique name="BitParameterBlockSubElementsUniqueness">
176            <xs:selector xpath="*"/>
177            <xs:field xpath="@Name"/>
178        </xs:unique>
179    </xs:element>
180    <xs:element name="StringParameter">
181        <xs:complexType>
182            <xs:attributeGroup ref="Nameable"/>
183            <xs:attribute name="Mapping" type="xs:string" use="optional"/>
184            <xs:attribute name="MaxLength" type="xs:nonNegativeInteger" use="required"/>
185        </xs:complexType>
186    </xs:element>
187    <xs:group name="ParameterBlockGroup">
188        <xs:choice>
189            <xs:element ref="BooleanParameter"/>
190            <xs:element ref="IntegerParameter"/>
191            <xs:element ref="EnumParameter"/>
192            <xs:element ref="FixedPointParameter"/>
193            <xs:element ref="FloatingPointParameter"/>
194            <xs:element ref="BitParameterBlock"/>
195            <xs:element ref="StringParameter"/>
196            <xs:element name="Component" type="ComponentInstance"/>
197            <xs:element name="ParameterBlock" type="ParameterBlockType">
198                <xs:unique name="ParameterBlockSubElementsUniqueness">
199                    <xs:selector xpath="*"/>
200                    <xs:field xpath="@Name"/>
201                </xs:unique>
202            </xs:element>
203        </xs:choice>
204    </xs:group>
205    <xs:complexType name="ParameterBlockType">
206        <xs:sequence>
207            <xs:group ref="ParameterBlockGroup" maxOccurs="unbounded"/>
208        </xs:sequence>
209        <xs:attributeGroup ref="Nameable"/>
210        <xs:attributeGroup ref="ArrayLengthAttribute"/>
211        <xs:attribute name="Mapping" type="xs:string" use="optional"/>
212    </xs:complexType>
213</xs:schema>
214