<!-- Paparazzi airframe DTD -->

<!ELEMENT airframe (include|servos|commands|rc_commands|auto_rc_commands|ap_only_commands|command_laws|section|makefile|modules|firmware|autopilot)*>
<!ELEMENT include EMPTY>
<!ELEMENT servos (servo)*>
<!ELEMENT commands (axis)*>
<!ELEMENT rc_commands (set)*>
<!ELEMENT auto_rc_commands (set)*>
<!ELEMENT ap_only_commands (copy)*>
<!ELEMENT command_laws (let|set|call|ratelimit)*>
<!ELEMENT section (define|linear)*>
<!ELEMENT servo EMPTY>
<!ELEMENT axis EMPTY>
<!ELEMENT set EMPTY>
<!ELEMENT call EMPTY>
<!ELEMENT ratelimit EMPTY>
<!ELEMENT copy EMPTY>
<!ELEMENT let EMPTY>
<!ELEMENT define EMPTY>
<!ELEMENT linear EMPTY>
<!ELEMENT makefile (#PCDATA)>
<!ELEMENT modules (load)*>
<!ELEMENT load (configure|define)*>
<!ELEMENT configure EMPTY>
<!ELEMENT firmware (target|subsystem|configure|define)*>
<!ELEMENT target (subsystem|configure|define)*>
<!ELEMENT subsystem (configure|define)*>
<!ELEMENT autopilot EMPTY>

<!ATTLIST include
href CDATA #REQUIRED>

<!ATTLIST firmware
name CDATA #REQUIRED>

<!ATTLIST autopilot
name CDATA #REQUIRED
freq CDATA #IMPLIED>

<!ATTLIST target
name CDATA #REQUIRED
board CDATA #REQUIRED
processor CDATA #IMPLIED>

<!ATTLIST subsystem
name CDATA #REQUIRED
type CDATA #IMPLIED>

<!ATTLIST airframe
name CDATA #IMPLIED>

<!ATTLIST servos
driver CDATA #IMPLIED>

<!ATTLIST commands>
<!ATTLIST rc_commands>
<!ATTLIST ap_only_commands>
<!ATTLIST command_laws>

<!ATTLIST section
name CDATA #IMPLIED
prefix CDATA #IMPLIED>

<!ATTLIST servo
name CDATA #REQUIRED
no CDATA #REQUIRED
min CDATA #REQUIRED
neutral CDATA #REQUIRED
max CDATA #REQUIRED>

<!ATTLIST axis
name CDATA #REQUIRED
failsafe_value CDATA #REQUIRED>

<!ATTLIST set
value CDATA #REQUIRED
command CDATA #IMPLIED
servo CDATA #IMPLIED>

<!ATTLIST call
fun CDATA #REQUIRED>

<!ATTLIST copy
command CDATA #REQUIRED>

<!ATTLIST let
var CDATA #REQUIRED
value CDATA #REQUIRED>

<!ATTLIST ratelimit
var CDATA #REQUIRED
value CDATA #REQUIRED
rate_min CDATA #REQUIRED
rate_max CDATA #REQUIRED>

<!ATTLIST define
name CDATA #REQUIRED
value CDATA #IMPLIED
unit CDATA #IMPLIED
code_unit CDATA #IMPLIED
integer CDATA #IMPLIED>

<!ATTLIST configure
name CDATA #REQUIRED
value CDATA #REQUIRED>

<!ATTLIST linear
name CDATA #REQUIRED
arity CDATA #REQUIRED
coeff1 CDATA #REQUIRED
coeff2 CDATA #IMPLIED
coeff3 CDATA #IMPLIED>

<!ATTLIST makefile
target CDATA #IMPLIED
location CDATA #IMPLIED>

<!ATTLIST modules
main_freq CDATA #IMPLIED
target CDATA #IMPLIED>

<!ATTLIST load
name CDATA #REQUIRED
target CDATA #IMPLIED
dir CDATA #IMPLIED>
