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