<!-- Paparazzi Modules DTD -->

<!ELEMENT module (doc?,depend?,header,init*,periodic*,event*,datalink*,makefile*)>
<!ELEMENT doc (description|define|configure|section)*>
<!ELEMENT depend EMPTY>
<!ELEMENT header (file*)>
<!ELEMENT init EMPTY>
<!ELEMENT periodic EMPTY>
<!ELEMENT event (handler*)>
<!ELEMENT handler EMPTY>
<!ELEMENT datalink EMPTY>
<!ELEMENT makefile (configure|define|file|file_arch|raw)*>
<!ELEMENT section (define|configure)*>
<!ELEMENT description (#PCDATA)>
<!ELEMENT configure EMPTY>
<!ELEMENT define EMPTY>
<!ELEMENT file EMPTY>
<!ELEMENT file_arch EMPTY>
<!ELEMENT raw (#PCDATA)>

<!ATTLIST module
name CDATA #REQUIRED
dir CDATA #IMPLIED>

<!ATTLIST depend
require CDATA #IMPLIED
conflict CDATA #IMPLIED>

<!ATTLIST header>

<!ATTLIST init
fun CDATA #REQUIRED>

<!ATTLIST periodic
fun CDATA #REQUIRED
period CDATA #IMPLIED
freq CDATA #IMPLIED
delay CDATA #IMPLIED
start CDATA #IMPLIED
stop CDATA #IMPLIED
autorun (TRUE|FALSE|LOCK) #IMPLIED >

<!ATTLIST event
fun CDATA #REQUIRED>

<!ATTLIST handler
fun CDATA #REQUIRED>

<!ATTLIST datalink
message CDATA #REQUIRED
fun CDATA #REQUIRED>

<!ATTLIST makefile
target CDATA #IMPLIED>

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

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

<!ATTLIST define
name CDATA #REQUIRED
value CDATA #IMPLIED
type CDATA #IMPLIED
description CDATA #IMPLIED>

<!ATTLIST file
name CDATA #REQUIRED
dir CDATA #IMPLIED>

<!ATTLIST file_arch
name CDATA #REQUIRED
dir CDATA #IMPLIED>

