Fix doc path
[opentx.git] / companion / src / radio.xsd
blobfca4d96bc34320c4ae5bea207fe82334d56aeb04
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
4 <xs:annotation>
5 <xs:documentation xml:lang="en">
6 Radio data schema for companion9x.
7 </xs:documentation>
8 </xs:annotation>
10 <xs:simpleType name="CalibrationValue">
11 <xs:restriction base="xs:int">
12 <xs:minInclusive value="-125"/>
13 <xs:maxInclusive value="125"/>
14 </xs:restriction>
15 </xs:simpleType>
17 <xs:complexType name="Calibration">
18 <xs:attribute name="middle" type="CalibrationValue" use="required"/>
19 <xs:attribute name="negative" type="CalibrationValue" use="required"/>
20 <xs:attribute name="positive" type="CalibrationValue" use="required"/>
21 </xs:complexType>
23 <xs:complexType name="PPMCalibration">
24 <xs:attribute name="middle" type="CalibrationValue" use="required"/>
25 </xs:complexType>
27 <xs:simpleType name="Switch">
28 <xs:restriction base="xs:string">
29 <!-- TODO accepter minuscules/majuscules -->
30 <xs:enumeration value="OFF"/>
31 <xs:enumeration value="!SWC"/>
32 <xs:enumeration value="!SWB"/>
33 <xs:enumeration value="!SWA"/>
34 <xs:enumeration value="!SW9"/>
35 <xs:enumeration value="!SW8"/>
36 <xs:enumeration value="!SW7"/>
37 <xs:enumeration value="!SW6"/>
38 <xs:enumeration value="!SW5"/>
39 <xs:enumeration value="!SW4"/>
40 <xs:enumeration value="!SW3"/>
41 <xs:enumeration value="!SW2"/>
42 <xs:enumeration value="!SW1"/>
43 <xs:enumeration value="!TRN"/>
44 <xs:enumeration value="!GEA"/>
45 <xs:enumeration value="!AIL"/>
46 <xs:enumeration value="!ID2"/>
47 <xs:enumeration value="!ID1"/>
48 <xs:enumeration value="!ID0"/>
49 <xs:enumeration value="!ELE"/>
50 <xs:enumeration value="!RUD"/>
51 <xs:enumeration value="!THR"/>
52 <!-- 0 -->
53 <xs:enumeration value="THR"/>
54 <xs:enumeration value="RUD"/>
55 <xs:enumeration value="ELE"/>
56 <xs:enumeration value="ID0"/>
57 <xs:enumeration value="ID1"/>
58 <xs:enumeration value="ID2"/>
59 <xs:enumeration value="AIL"/>
60 <xs:enumeration value="GEA"/>
61 <xs:enumeration value="TRN"/>
62 <xs:enumeration value="SW1"/>
63 <xs:enumeration value="SW2"/>
64 <xs:enumeration value="SW3"/>
65 <xs:enumeration value="SW4"/>
66 <xs:enumeration value="SW5"/>
67 <xs:enumeration value="SW6"/>
68 <xs:enumeration value="SW7"/>
69 <xs:enumeration value="SW8"/>
70 <xs:enumeration value="SW9"/>
71 <xs:enumeration value="SWA"/>
72 <xs:enumeration value="SWB"/>
73 <xs:enumeration value="SWC"/>
74 <xs:enumeration value="ON"/>
75 </xs:restriction>
76 </xs:simpleType>
78 <xs:simpleType name="TimerSwitch">
79 <xs:restriction base="xs:string">
80 <xs:enumeration value="!mSWC"/>
81 <xs:enumeration value="!mSWB"/>
82 <xs:enumeration value="!mSWA"/>
83 <xs:enumeration value="!mSW9"/>
84 <xs:enumeration value="!mSW8"/>
85 <xs:enumeration value="!mSW7"/>
86 <xs:enumeration value="!mSW6"/>
87 <xs:enumeration value="!mSW5"/>
88 <xs:enumeration value="!mSW4"/>
89 <xs:enumeration value="!mSW3"/>
90 <xs:enumeration value="!mSW2"/>
91 <xs:enumeration value="!mSW1"/>
92 <xs:enumeration value="!mTRN"/>
93 <xs:enumeration value="!mGEA"/>
94 <xs:enumeration value="!mAIL"/>
95 <xs:enumeration value="!mID2"/>
96 <xs:enumeration value="!mID1"/>
97 <xs:enumeration value="!mID0"/>
98 <xs:enumeration value="!mELE"/>
99 <xs:enumeration value="!mRUD"/>
100 <xs:enumeration value="!mTHR"/>
101 <xs:enumeration value="!SWC"/>
102 <xs:enumeration value="!SWB"/>
103 <xs:enumeration value="!SWA"/>
104 <xs:enumeration value="!SW9"/>
105 <xs:enumeration value="!SW8"/>
106 <xs:enumeration value="!SW7"/>
107 <xs:enumeration value="!SW6"/>
108 <xs:enumeration value="!SW5"/>
109 <xs:enumeration value="!SW4"/>
110 <xs:enumeration value="!SW3"/>
111 <xs:enumeration value="!SW2"/>
112 <xs:enumeration value="!SW1"/>
113 <xs:enumeration value="!TRN"/>
114 <xs:enumeration value="!GEA"/>
115 <xs:enumeration value="!AIL"/>
116 <xs:enumeration value="!ID2"/>
117 <xs:enumeration value="!ID1"/>
118 <xs:enumeration value="!ID0"/>
119 <xs:enumeration value="!ELE"/>
120 <xs:enumeration value="!RUD"/>
121 <xs:enumeration value="!THR"/>
122 <xs:enumeration value="!P3%"/>
123 <xs:enumeration value="!P3"/>
124 <xs:enumeration value="!P2%"/>
125 <xs:enumeration value="!P2"/>
126 <xs:enumeration value="!P1%"/>
127 <xs:enumeration value="!P1"/>
128 <xs:enumeration value="!AL%"/>
129 <xs:enumeration value="!ALs"/>
130 <xs:enumeration value="!TH%"/>
131 <xs:enumeration value="!THs"/>
132 <xs:enumeration value="!EL%"/>
133 <xs:enumeration value="!ELs"/>
134 <xs:enumeration value="!RU%"/>
135 <xs:enumeration value="!RUs"/>
136 <xs:enumeration value="!ABS"/>
137 <!-- TODO on affiche 2x ABS -->
138 <xs:enumeration value="OFF"/>
139 <!-- TODO a retirer + decalage -->
140 <xs:enumeration value="ABS"/>
141 <xs:enumeration value="RUs"/>
142 <xs:enumeration value="RU%"/>
143 <xs:enumeration value="ELs"/>
144 <xs:enumeration value="EL%"/>
145 <xs:enumeration value="THs"/>
146 <xs:enumeration value="TH%"/>
147 <xs:enumeration value="ALs"/>
148 <xs:enumeration value="AL%"/>
149 <xs:enumeration value="P1"/>
150 <xs:enumeration value="P1%"/>
151 <xs:enumeration value="P2"/>
152 <xs:enumeration value="P2%"/>
153 <xs:enumeration value="P3"/>
154 <xs:enumeration value="P3%"/>
155 <xs:enumeration value="THR"/>
156 <xs:enumeration value="RUD"/>
157 <xs:enumeration value="ELE"/>
158 <xs:enumeration value="ID0"/>
159 <xs:enumeration value="ID1"/>
160 <xs:enumeration value="ID2"/>
161 <xs:enumeration value="AIL"/>
162 <xs:enumeration value="GEA"/>
163 <xs:enumeration value="TRN"/>
164 <xs:enumeration value="SW1"/>
165 <xs:enumeration value="SW2"/>
166 <xs:enumeration value="SW3"/>
167 <xs:enumeration value="SW4"/>
168 <xs:enumeration value="SW5"/>
169 <xs:enumeration value="SW6"/>
170 <xs:enumeration value="SW7"/>
171 <xs:enumeration value="SW8"/>
172 <xs:enumeration value="SW9"/>
173 <xs:enumeration value="SWA"/>
174 <xs:enumeration value="SWB"/>
175 <xs:enumeration value="SWC"/>
176 <xs:enumeration value="mTHR"/>
177 <xs:enumeration value="mRUD"/>
178 <xs:enumeration value="mELE"/>
179 <xs:enumeration value="mID0"/>
180 <xs:enumeration value="mID1"/>
181 <xs:enumeration value="mID2"/>
182 <xs:enumeration value="mAIL"/>
183 <xs:enumeration value="mGEA"/>
184 <xs:enumeration value="mTRN"/>
185 <xs:enumeration value="mSW1"/>
186 <xs:enumeration value="mSW2"/>
187 <xs:enumeration value="mSW3"/>
188 <xs:enumeration value="mSW4"/>
189 <xs:enumeration value="mSW5"/>
190 <xs:enumeration value="mSW6"/>
191 <xs:enumeration value="mSW7"/>
192 <xs:enumeration value="mSW8"/>
193 <xs:enumeration value="mSW9"/>
194 <xs:enumeration value="mSWA"/>
195 <xs:enumeration value="mSWB"/>
196 <xs:enumeration value="mSWC"/>
197 </xs:restriction>
198 </xs:simpleType>
200 <xs:simpleType name="Source">
201 <xs:restriction base="xs:string">
202 <!-- TODO accepter minuscules/majuscules -->
203 <xs:enumeration value="RUD"/>
204 <xs:enumeration value="THR"/>
205 <xs:enumeration value="ELE"/>
206 <xs:enumeration value="AIL"/>
207 <xs:enumeration value="P1"/>
208 <xs:enumeration value="P2"/>
209 <xs:enumeration value="P3"/>
210 <xs:enumeration value="MAX"/>
211 <xs:enumeration value="FULL"/>
212 <xs:enumeration value="CYC1"/>
213 <xs:enumeration value="CYC2"/>
214 <xs:enumeration value="CYC3"/>
215 <xs:enumeration value="PPM1"/>
216 <xs:enumeration value="PPM2"/>
217 <xs:enumeration value="PPM3"/>
218 <xs:enumeration value="PPM4"/>
219 <xs:enumeration value="PPM5"/>
220 <xs:enumeration value="PPM6"/>
221 <xs:enumeration value="PPM7"/>
222 <xs:enumeration value="PPM8"/>
223 <xs:enumeration value="CH1"/>
224 <xs:enumeration value="CH2"/>
225 <xs:enumeration value="CH3"/>
226 <xs:enumeration value="CH4"/>
227 <xs:enumeration value="CH5"/>
228 <xs:enumeration value="CH6"/>
229 <xs:enumeration value="CH7"/>
230 <xs:enumeration value="CH8"/>
231 <xs:enumeration value="CH9"/>
232 <xs:enumeration value="CH10"/>
233 <xs:enumeration value="CH11"/>
234 <xs:enumeration value="CH12"/>
235 <xs:enumeration value="CH13"/>
236 <xs:enumeration value="CH14"/>
237 <xs:enumeration value="CH15"/>
238 <xs:enumeration value="CH16"/>
239 </xs:restriction>
240 </xs:simpleType>
242 <xs:simpleType name="Output">
243 <xs:restriction base="xs:string">
244 <xs:enumeration value="CH1"/>
245 <xs:enumeration value="CH2"/>
246 <xs:enumeration value="CH3"/>
247 <xs:enumeration value="CH4"/>
248 <xs:enumeration value="CH5"/>
249 <xs:enumeration value="CH6"/>
250 <xs:enumeration value="CH7"/>
251 <xs:enumeration value="CH8"/>
252 <xs:enumeration value="CH9"/>
253 <xs:enumeration value="CH10"/>
254 <xs:enumeration value="CH11"/>
255 <xs:enumeration value="CH12"/>
256 <xs:enumeration value="CH13"/>
257 <xs:enumeration value="CH14"/>
258 <xs:enumeration value="CH15"/>
259 <xs:enumeration value="CH16"/>
260 </xs:restriction>
261 </xs:simpleType>
263 <xs:simpleType name="Stick">
264 <xs:restriction base="xs:string">
265 <xs:enumeration value="rudder"/>
266 <xs:enumeration value="aileron"/>
267 <xs:enumeration value="elevator"/>
268 <xs:enumeration value="throttle"/>
269 </xs:restriction>
270 </xs:simpleType>
272 <xs:simpleType name="Weight100">
273 <xs:restriction base="xs:int">
274 <xs:minInclusive value="-100"/>
275 <xs:maxInclusive value="100"/>
276 </xs:restriction>
277 </xs:simpleType>
279 <xs:simpleType name="Weight125">
280 <xs:restriction base="xs:int">
281 <xs:minInclusive value="-125"/>
282 <xs:maxInclusive value="125"/>
283 </xs:restriction>
284 </xs:simpleType>
286 <xs:simpleType name="TrimValue">
287 <xs:restriction base="xs:int">
288 <xs:minInclusive value="-1024"/>
289 <xs:maxInclusive value="+1024"/>
290 </xs:restriction>
291 </xs:simpleType>
293 <xs:complexType name="TrimType">
294 <xs:attribute name="phaseRef" type="xs:int"/>
295 <!-- TODO either phaseRef or value -->
296 <xs:attribute name="value" type="TrimValue"/>
297 </xs:complexType>
298 <!-- TODO <xs:key name="phaseRef">
299 <xs:selector xpath="model/phases/phase"/>
300 <xs:field xpath="@id"/>
301 </xs:key> -->
304 <xs:element name="radio">
305 <xs:complexType>
306 <xs:sequence>
307 <xs:element name="global-settings" minOccurs="0">
308 <xs:complexType>
309 <xs:sequence>
310 <xs:element name="calibration" minOccurs="0">
311 <xs:complexType>
312 <xs:all>
313 <xs:element name="rudder" type="Calibration"/>
314 <xs:element name="throttle" type="Calibration"/>
315 <xs:element name="aileron" type="Calibration"/>
316 <xs:element name="elevator" type="Calibration"/>
317 <xs:element name="p1" type="Calibration"/>
318 <xs:element name="p2" type="Calibration"/>
319 <xs:element name="p3" type="Calibration"/>
320 </xs:all>
321 </xs:complexType>
322 </xs:element>
324 <xs:element name="contrast" type="xs:unsignedByte" minOccurs="0"/>
326 <xs:element name="battery" minOccurs="0">
327 <xs:complexType>
328 <xs:attribute name="calibration" type="xs:unsignedByte" use="required"/>
329 <xs:attribute name="warning" type="xs:unsignedByte" use="required"/>
330 </xs:complexType>
331 </xs:element>
333 <xs:element name="light-switch" type="Switch" minOccurs="0"/>
335 <xs:element name="ppm-input-calibration" minOccurs="0">
336 <xs:complexType>
337 <xs:sequence>
338 <xs:element name="multiplier" type="xs:int"/>
339 <xs:element name="ch1" type="PPMCalibration"/>
340 <xs:element name="ch2" type="PPMCalibration"/>
341 <xs:element name="ch3" type="PPMCalibration"/>
342 <xs:element name="ch4" type="PPMCalibration"/>
343 <!-- <xs:element name="ch5" type="PPMCalibration"/>
344 <xs:element name="ch6" type="PPMCalibration"/>
345 <xs:element name="ch7" type="PPMCalibration"/>
346 <xs:element name="ch8" type="PPMCalibration"/> //-->
347 </xs:sequence>
348 </xs:complexType>
349 </xs:element>
350 <xs:element name="view" type="xs:unsignedByte" minOccurs="0"/>
351 <!-- switch -->
352 <xs:element name="beeper" type="xs:unsignedByte" minOccurs="0"/>
353 <!-- switch -->
354 <xs:element name="inactivity-timer" type="xs:byte" minOccurs="0"/>
355 <xs:element name="timer-beeps" minOccurs="0">
356 <xs:complexType>
357 <xs:attribute name="minute" type="xs:boolean"/>
358 <xs:attribute name="countdown" type="xs:boolean"/>
359 <xs:attribute name="screen-flash" type="xs:boolean"/>
360 </xs:complexType>
361 </xs:element>
362 <xs:element name="splash-screen" type="xs:boolean" minOccurs="0"/>
363 <xs:element name="filter-input" minOccurs="0">
364 <xs:simpleType>
365 <xs:restriction base="xs:string">
366 <xs:enumeration value="single"/>
367 <xs:enumeration value="oversample"/>
368 <xs:enumeration value="filter"/>
369 </xs:restriction>
370 </xs:simpleType>
371 </xs:element>
372 <xs:element name="light-auto-off-timer" type="xs:unsignedByte" minOccurs="0"/>
373 <xs:element name="default-channel-order" type="xs:unsignedByte" minOccurs="0"/>
374 <xs:element name="PPM_Multiplier" type="xs:byte" minOccurs="0"/>
375 <xs:element name="owner-name" type="xs:string" minOccurs="0"/>
376 <xs:element name="sticks" minOccurs="0">
377 <xs:complexType>
378 <xs:attribute name="mode" type="xs:unsignedByte" use="required"/>
379 <xs:attribute name="throttle-reverse" type="xs:boolean"/>
380 </xs:complexType>
381 </xs:element>
382 <xs:element name="warnings" minOccurs="0">
383 <xs:complexType>
384 <xs:sequence>
385 <xs:element name="warning" minOccurs="0" maxOccurs="unbounded">
386 <xs:complexType>
387 <xs:attribute name="name" use="required" >
388 <xs:simpleType>
389 <xs:restriction base="xs:NMTOKEN">
390 <xs:enumeration value="throttle"/>
391 <xs:enumeration value="switchs"/>
392 <xs:enumeration value="memory"/>
393 <xs:enumeration value="silent"/>
394 </xs:restriction>
395 </xs:simpleType>
396 </xs:attribute>
397 <xs:attribute name="value" type="xs:boolean" use="required"/>
398 </xs:complexType>
399 </xs:element>
400 </xs:sequence>
401 </xs:complexType>
402 </xs:element>
403 </xs:sequence>
404 </xs:complexType>
405 </xs:element>
407 <xs:element name="models" minOccurs="0">
408 <xs:complexType>
409 <xs:sequence>
410 <xs:element name="model" minOccurs="0" maxOccurs="unbounded">
411 <xs:complexType>
412 <xs:sequence>
413 <xs:element name="name" type="xs:normalizedString"/>
414 <xs:element name="timer" minOccurs="0" maxOccurs="unbounded">
415 <xs:complexType>
416 <xs:attribute name="mode" type="TimerSwitch" use="required"/>
417 <xs:attribute name="direction" use="required">
418 <xs:simpleType>
419 <xs:restriction base="xs:string">
420 <xs:enumeration value="down"/>
421 <xs:enumeration value="up"/>
422 </xs:restriction>
423 </xs:simpleType>
424 </xs:attribute>
425 <xs:attribute name="value" type="xs:time" use="required"/>
426 </xs:complexType>
427 </xs:element>
428 <xs:element name="modulation" minOccurs="0">
429 <xs:complexType>
430 <xs:attribute name="type">
431 <xs:simpleType>
432 <xs:restriction base="xs:string">
433 <!-- TODO accepter minuscules/majuscules -->
434 <xs:enumeration value="PPM"/>
435 <xs:enumeration value="PCM"/>
436 <xs:enumeration value="Silver A"/>
437 <xs:enumeration value="Silver B"/>
438 <xs:enumeration value="Silver C"/>
439 <xs:enumeration value="Trac 09"/>
440 </xs:restriction>
441 </xs:simpleType>
442 </xs:attribute>
443 <xs:attribute name="channels">
444 <xs:simpleType>
445 <xs:restriction base="xs:nonNegativeInteger">
446 <xs:maxExclusive value="17"/>
447 </xs:restriction>
448 </xs:simpleType>
449 </xs:attribute>
450 <xs:attribute name="delay" type="xs:nonNegativeInteger"/>
451 <xs:attribute name="polarity">
452 <xs:simpleType>
453 <xs:restriction base="xs:string">
454 <xs:enumeration value="positive"/>
455 <xs:enumeration value="negative"/>
456 </xs:restriction>
457 </xs:simpleType>
458 </xs:attribute>
459 </xs:complexType>
460 </xs:element>
461 <xs:element name="trims" minOccurs="0">
462 <xs:complexType>
463 <xs:attribute name="extended" type="xs:boolean"/>
464 <xs:attribute name="inc">
465 <xs:simpleType>
466 <xs:restriction base="xs:string">
467 <xs:enumeration value="exponential"/>
468 <xs:enumeration value="extra-fine"/>
469 <xs:enumeration value="fine"/>
470 <xs:enumeration value="medium"/>
471 <xs:enumeration value="coarse"/>
472 </xs:restriction>
473 </xs:simpleType>
474 </xs:attribute>
475 <xs:attribute name="throttleTrim" type="xs:boolean"/>
476 <xs:attribute name="throttleTrimExpo" type="xs:boolean"/>
477 </xs:complexType>
478 </xs:element>
479 <xs:element name="centerBeep" minOccurs="0">
480 <xs:complexType>
481 <xs:attribute name="rudder" type="xs:boolean"/>
482 <xs:attribute name="elevator" type="xs:boolean"/>
483 <xs:attribute name="throttle" type="xs:boolean"/>
484 <xs:attribute name="aileron" type="xs:boolean"/>
485 <xs:attribute name="p1" type="xs:boolean"/>
486 <xs:attribute name="p2" type="xs:boolean"/>
487 <xs:attribute name="p3" type="xs:boolean"/>
488 </xs:complexType>
489 </xs:element>
491 <xs:element name="heliSwashplate" minOccurs="0">
492 <xs:complexType>
493 <xs:sequence>
494 <xs:element name="invert">
495 <xs:complexType>
496 <xs:sequence>
497 <xs:element name="aileron" type="xs:boolean"/>
498 <xs:element name="collective" type="xs:boolean"/>
499 <xs:element name="elevator" type="xs:boolean"/>
500 </xs:sequence>
501 </xs:complexType>
502 </xs:element>
503 </xs:sequence>
504 <xs:attribute name="type">
505 <xs:simpleType>
506 <xs:restriction base="xs:string">
507 <xs:enumeration value="off"/>
508 <xs:enumeration value="120"/>
509 <xs:enumeration value="120Xfine"/>
510 <xs:enumeration value="140"/>
511 <xs:enumeration value="90"/>
512 </xs:restriction>
513 </xs:simpleType>
514 </xs:attribute>
515 <xs:attribute name="source" type="Source"/>
516 <xs:attribute name="value" type="xs:int"/>
517 </xs:complexType>
518 </xs:element>
520 <xs:element name="phases" minOccurs="0">
521 <xs:complexType>
522 <xs:sequence>
523 <xs:element name="phase" maxOccurs="unbounded">
524 <xs:complexType>
525 <xs:sequence>
526 <xs:element name="trims">
527 <xs:complexType>
528 <xs:sequence>
529 <xs:element name="rudder" type="TrimType"/>
530 <xs:element name="elevator" type="TrimType"/>
531 <xs:element name="throttle" type="TrimType"/>
532 <xs:element name="aileron" type="TrimType"/>
533 </xs:sequence>
534 </xs:complexType>
535 </xs:element>
536 </xs:sequence>
537 <xs:attribute name="id" type="xs:int" use="required"/>
538 <xs:attribute name="name" type="xs:string"/>
539 <xs:attribute name="switch" type="Switch"/>
540 <xs:attribute name="fadeIn" type="xs:int"/>
541 <xs:attribute name="fadeOut" type="xs:int"/>
542 </xs:complexType>
543 <xs:unique name="uniquePhaseId">
544 <xs:selector xpath="model/phases/phase"/>
545 <xs:field xpath="@id"/>
546 </xs:unique>
547 </xs:element>
548 </xs:sequence>
549 </xs:complexType>
550 </xs:element>
554 <xs:element name="outputs" minOccurs="0">
555 <!-- TODO pas de minOccurs -->
556 <xs:complexType>
557 <xs:sequence>
558 <xs:element name="curve" maxOccurs="unbounded">
559 <xs:complexType>
560 <xs:sequence>
561 <xs:element name="point">
562 <xs:complexType>
563 <xs:attribute name="x" type="Weight100"/>
564 <xs:attribute name="y" type="Weight100"/>
565 </xs:complexType>
566 </xs:element>
567 </xs:sequence>
568 <xs:attribute name="id" type="xs:string"/>
569 </xs:complexType>
570 <xs:unique name="uniqueCurveForEachModel">
571 <xs:selector xpath="model/outputs/curve"/>
572 <xs:field xpath="@id"/>
573 </xs:unique>
574 </xs:element>
576 <xs:element name="output" maxOccurs="unbounded">
577 <xs:complexType>
578 <xs:sequence>
579 <xs:element name="limit">
580 <xs:complexType>
581 <xs:attribute name="min" type="Weight100"/>
582 <xs:attribute name="max" type="Weight100"/>
583 </xs:complexType>
584 </xs:element>
585 <xs:element name="revert" type="xs:boolean"/>
586 <xs:element name="offset" type="Weight100"/>
587 <xs:element name="mixer" minOccurs="1" maxOccurs="unbounded">
588 <xs:complexType>
589 <xs:sequence>
590 <xs:element name="source" type="Source"/>
591 <xs:element name="weight" type="Weight125"/>
592 <xs:element name="offset" type="Weight125"/>
593 <xs:element name="switch" type="Switch"/>
594 <xs:element name="curve" type="xs:string"/>
595 <xs:element name="delay">
596 <xs:complexType>
597 <xs:attribute name="up" type="xs:int"/>
598 <xs:attribute name="down" type="xs:int"/>
599 </xs:complexType>
600 </xs:element>
601 <xs:element name="speed">
602 <xs:complexType>
603 <xs:attribute name="up" type="xs:int"/>
604 <xs:attribute name="down" type="xs:int"/>
605 </xs:complexType>
606 </xs:element>
607 <xs:element name="trim" type="xs:boolean"/>
608 <xs:element name="warning">
609 <xs:simpleType>
610 <xs:restriction base="xs:int">
611 <xs:minInclusive value="0"/>
612 <xs:maxInclusive value="3"/>
613 </xs:restriction>
614 </xs:simpleType>
615 </xs:element>
616 </xs:sequence>
617 <xs:attribute name="method">
618 <xs:simpleType>
619 <xs:restriction base="xs:string">
620 <xs:enumeration value="add"/>
621 <xs:enumeration value="replace"/>
622 <xs:enumeration value="multiply"/>
623 </xs:restriction>
624 </xs:simpleType>
625 </xs:attribute>
626 </xs:complexType>
627 <xs:key name="curveKeyRef">
628 <xs:selector xpath="model/outputs/curve"/>
629 <xs:field xpath="@id"/>
630 </xs:key>
631 </xs:element>
632 </xs:sequence>
633 <xs:attribute name="id" type="Output"/>
634 </xs:complexType>
635 <xs:unique name="uniqueOutputForEachModel">
636 <xs:selector xpath="model/outputs/output"/>
637 <xs:field xpath="@id"/>
638 </xs:unique>
639 </xs:element>
640 </xs:sequence>
641 <xs:attribute name="extendedLimits" type="xs:boolean"/>
642 </xs:complexType>
643 </xs:element>
645 <xs:element name="inputs" minOccurs="0">
646 <xs:complexType>
647 <xs:sequence>
648 <xs:element name="input">
649 <xs:complexType>
650 <xs:sequence>
651 <xs:element name="switch">
652 <xs:complexType>
653 <xs:sequence>
654 <xs:element name="expo">
655 <xs:complexType>
656 <xs:attribute name="left" type="Weight100"/>
657 <xs:attribute name="right" type="Weight100"/>
658 </xs:complexType>
659 </xs:element>
660 <xs:element name="max">
661 <xs:complexType>
662 <xs:attribute name="left" type="Weight100"/>
663 <xs:attribute name="right" type="Weight100"/>
664 </xs:complexType>
665 </xs:element>
666 </xs:sequence>
667 <xs:attribute name="value" type="Switch"/>
668 </xs:complexType>
669 </xs:element>
670 <xs:element name="trim" type="TrimValue"/>
671 </xs:sequence>
672 <xs:attribute name="id" type="Stick"/>
673 </xs:complexType>
674 <xs:unique name="uniqueInputForEachModel">
675 <xs:selector xpath="model/inputs/input"/>
676 <xs:field xpath="@id"/>
677 </xs:unique>
678 </xs:element>
679 </xs:sequence>
680 </xs:complexType>
681 </xs:element>
682 </xs:sequence>
683 </xs:complexType>
684 </xs:element>
685 </xs:sequence>
686 </xs:complexType>
687 </xs:element>
688 </xs:sequence>
689 </xs:complexType>
690 </xs:element>
691 </xs:schema>