1<?xml version="1.0" encoding="UTF-8"?>
  2<!-- CHART PUS Packet definition files -->
  3<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  4  <start>
  5    <ref name="packet"/>
  6  </start>
  7  <define name="packet">
  8    <element name="packet">
  9      <interleave>
 10        <attribute name="xsi:noNamespaceSchemaLocation"/>
 11        <element name="name">
 12          <a:documentation>packet name</a:documentation>
 13          <text/>
 14        </element>
 15        <element name="description">
 16          <a:documentation>table description string</a:documentation>
 17          <text/>
 18        </element>
 19        <optional>
 20          <element name="spid">
 21            <a:documentation>Special Packet IDentifier</a:documentation>
 22            <data type="integer"/>
 23          </element>
 24        </optional>
 25        <optional>
 26          <element name="service">
 27            <a:documentation>PUS service</a:documentation>
 28            <data type="integer"/>
 29          </element>
 30        </optional>
 31        <optional>
 32          <element name="subservice">
 33            <a:documentation>PUS subservice</a:documentation>
 34            <data type="integer"/>
 35          </element>
 36        </optional>
 37        <element name="apid">
 38          <a:documentation>PUS application ID</a:documentation>
 39          <data type="integer"/>
 40        </element>
 41        <optional>
 42          <element name="dynamic-start">
 43            <a:documentation>First byte where dynamic parameter processing begins</a:documentation>
 44            <data type="integer"/>
 45          </element>
 46        </optional>
 47        <optional>
 48          <element name="param1">
 49            <a:documentation>First additional identifier parameter</a:documentation>
 50            <data type="integer"/>
 51          </element>
 52        </optional>
 53        <optional>
 54          <element name="param2">
 55            <a:documentation>Second additional identifier parameter</a:documentation>
 56            <data type="integer"/>
 57          </element>
 58        </optional>
 59        <optional>
 60          <element name="header-type">
 61            <a:documentation>Type of binary pre-paremeter standard header</a:documentation>
 62            <choice>
 63              <value>TM</value>
 64              <value>STDXPUSS</value>
 65              <value>STDXCCSD</value>
 66            </choice>
 67          </element>
 68        </optional>
 69        <optional>
 70          <element name="format">
 71            <a:documentation>Event configuration</a:documentation>
 72            <choice>
 73              <value>xdr</value>
 74              <value>zxdr</value>
 75            </choice>
 76          </element>
 77        </optional>
 78        <zeroOrMore>
 79          <element name="table">
 80            <a:documentation>List of tables we write to</a:documentation>
 81            <interleave>
 82              <!-- raw only -->
 83              <element name="name">
 84                <a:documentation>Our table name</a:documentation>
 85                <text/>
 86              </element>
 87              <zeroOrMore>
 88                <element name="field">
 89                  <a:documentation>List of parameters</a:documentation>
 90                  <interleave>
 91                    <element name="name">
 92                      <a:documentation>Parameter name</a:documentation>
 93                      <text/>
 94                    </element>
 95                    <optional>
 96                      <element name="byte">
 97                        <a:documentation>Byte offset for static fields</a:documentation>
 98                        <data type="integer"/>
 99                      </element>
100                    </optional>
101                    <optional>
102                      <element name="bit">
103                        <a:documentation>Bit offset for static fields</a:documentation>
104                        <data type="integer"/>
105                      </element>
106                    </optional>
107                    <optional>
108                      <element name="group-size">
109                        <a:documentation>If this field cotrols duplication of subsequenct parameters</a:documentation>
110                        <data type="integer"/>
111                      </element>
112                    </optional>
113                    <optional>
114                      <element name="offset-mod">
115                        <a:documentation>Bit offset to introduce a gap inbetween variable parameters</a:documentation>
116                        <data type="integer"/>
117                      </element>
118                    </optional>
119                    <optional>
120                      <element name="time-offset">
121                        <a:documentation>Time offset in ms if this parameter has a different time to the main packet</a:documentation>
122                        <data type="integer"/>
123                      </element>
124                    </optional>
125                    <optional>
126                      <element name="num-occ">
127                        <a:documentation>Specific a number of fixed repeats of this parameter (sic)</a:documentation>
128                        <data type="integer"/>
129                      </element>
130                    </optional>
131                    <optional>
132                      <element name="bits-between-occ">
133                        <a:documentation>Stride between fixed repeats (sic)</a:documentation>
134                        <data type="integer"/>
135                      </element>
136                    </optional>
137                    <optional>
138                      <element name="time-delta-occ">
139                        <a:documentation>Time delta between repeats (sic)</a:documentation>
140                        <data type="integer"/>
141                      </element>
142                    </optional>
143                  </interleave>
144                </element>
145              </zeroOrMore>
146            </interleave>
147          </element>
148        </zeroOrMore>
149      </interleave>
150    </element>
151  </define>
152</grammar>