+ <section>
+ <title>TeleMega Sensor Data</title>
+ <informaltable frame='none' label='' tocentry='0'>
+ <tgroup cols='2' align='center' colsep='1' rowsep='1'>
+ <colspec align='center' colwidth='*' colname='Offset'/>
+ <colspec align='left' colwidth='3*' colname='Description'/>
+ <thead>
+ <row>
+ <entry>Type</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>0x08</entry>
+ <entry>TeleMega IMU Sensor Data</entry>
+ </row>
+ <row>
+ <entry>0x09</entry>
+ <entry>TeleMega Kalman and Voltage Data</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ TeleMega has a lot of sensors, and so it splits the sensor
+ data into two packets. The raw IMU data are sent more often;
+ the voltage values don't change very fast, and the Kalman
+ values can be reconstructed from the IMU data.
+ </para>
+ <para>
+ IMU Sensor Data packets are transmitted once per second on the
+ ground, 10 times per second during ascent and once per second
+ during descent and landing
+ </para>
+ <para>
+ Kalman and Voltage Data packets are transmitted once per second on the
+ ground, 5 times per second during ascent and once per second
+ during descent and landing
+ </para>
+ <para>
+ The high-g accelerometer is reported separately from the data
+ for the 9-axis IMU (accel/gyro/mag). The 9-axis IMU is mounted
+ so that the X axis is "across" the board (along the short
+ axis0, the Y axis is "along" the board (along the long axis,
+ with the high-g accelerometer) and the Z axis is "through" the
+ board (perpendicular to the board). Rotation measurements are
+ around the respective axis, so Y rotation measures the spin
+ rate of the rocket while X and Z rotation measure the tilt
+ rate.
+ </para>
+ <para>
+ The overall tilt angle of the rocket is computed by first
+ measuring the orientation of the rocket on the pad using the 3
+ axis accelerometer, and then integrating the overall tilt rate
+ from the 3 axis gyroscope to compute the total orientation
+ change of the airframe since liftoff.
+ </para>
+ <table frame='all'>
+ <title>TeleMega IMU Sensor Packet Contents</title>
+ <tgroup cols='4' align='center' colsep='1' rowsep='1'>
+ <colspec align='center' colwidth='*' colname='Offset'/>
+ <colspec align='center' colwidth='3*' colname='Data Type'/>
+ <colspec align='left' colwidth='3*' colname='Name'/>
+ <colspec align='left' colwidth='9*' colname='Description'/>
+ <thead>
+ <row>
+ <entry align='center'>Offset</entry>
+ <entry align='center'>Data Type</entry>
+ <entry align='center'>Name</entry>
+ <entry align='center'>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>5</entry><entry>uint8_t</entry><entry>orient</entry><entry>Angle from vertical in degrees</entry>
+ </row>
+ <row>
+ <entry>6</entry><entry>int16_t</entry><entry>accel</entry><entry>High G accelerometer</entry>
+ </row>
+ <row>
+ <entry>8</entry><entry>int32_t</entry><entry>pres</entry><entry>pressure (Pa * 10)</entry>
+ </row>
+ <row>
+ <entry>12</entry><entry>int16_t</entry><entry>temp</entry><entry>temperature (°C * 100)</entry>
+ </row>
+ <row>
+ <entry>14</entry><entry>int16_t</entry><entry>accel_x</entry><entry>X axis acceleration (across)</entry>
+ </row>
+ <row>
+ <entry>16</entry><entry>int16_t</entry><entry>accel_y</entry><entry>Y axis acceleration (along)</entry>
+ </row>
+ <row>
+ <entry>18</entry><entry>int16_t</entry><entry>accel_z</entry><entry>Z axis acceleration (through)</entry>
+ </row>
+ <row>
+ <entry>20</entry><entry>int16_t</entry><entry>gyro_x</entry><entry>X axis rotation (across)</entry>
+ </row>
+ <row>
+ <entry>22</entry><entry>int16_t</entry><entry>gyro_y</entry><entry>Y axis rotation (along)</entry>
+ </row>
+ <row>
+ <entry>24</entry><entry>int16_t</entry><entry>gyro_z</entry><entry>Z axis rotation (through)</entry>
+ </row>
+ <row>
+ <entry>26</entry><entry>int16_t</entry><entry>mag_x</entry><entry>X field strength (across)</entry>
+ </row>
+ <row>
+ <entry>28</entry><entry>int16_t</entry><entry>mag_y</entry><entry>Y field strength (along)</entry>
+ </row>
+ <row>
+ <entry>30</entry><entry>int16_t</entry><entry>mag_z</entry><entry>Z field strength (through)</entry>
+ </row>
+ <row>
+ <entry>32</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table frame='all'>
+ <title>TeleMega Kalman and Voltage Data Packet Contents</title>
+ <tgroup cols='4' align='center' colsep='1' rowsep='1'>
+ <colspec align='center' colwidth='*' colname='Offset'/>
+ <colspec align='center' colwidth='3*' colname='Data Type'/>
+ <colspec align='left' colwidth='3*' colname='Name'/>
+ <colspec align='left' colwidth='9*' colname='Description'/>
+ <thead>
+ <row>
+ <entry align='center'>Offset</entry>
+ <entry align='center'>Data Type</entry>
+ <entry align='center'>Name</entry>
+ <entry align='center'>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>5</entry><entry>uint8_t</entry><entry>state</entry><entry>Flight state</entry>
+ </row>
+ <row>
+ <entry>6</entry><entry>int16_t</entry><entry>v_batt</entry><entry>battery voltage</entry>
+ </row>
+ <row>
+ <entry>8</entry><entry>int16_t</entry><entry>v_pyro</entry><entry>pyro battery voltage</entry>
+ </row>
+ <row>
+ <entry>10</entry><entry>int8_t[6]</entry><entry>sense</entry><entry>pyro continuity sense</entry>
+ </row>
+ <row>
+ <entry>16</entry><entry>int32_t</entry><entry>ground_pres</entry><entry>Average barometer reading on ground</entry>
+ </row>
+ <row>
+ <entry>20</entry><entry>int16_t</entry><entry>ground_accel</entry><entry>Average accelerometer reading on ground</entry>
+ </row>
+ <row>
+ <entry>22</entry><entry>int16_t</entry><entry>accel_plus_g</entry><entry>Accel calibration at +1g</entry>
+ </row>
+ <row>
+ <entry>24</entry><entry>int16_t</entry><entry>accel_minus_g</entry><entry>Accel calibration at -1g</entry>
+ </row>
+ <row>
+ <entry>26</entry><entry>int16_t</entry><entry>acceleration</entry><entry>m/s² * 16</entry>
+ </row>
+ <row>
+ <entry>28</entry><entry>int16_t</entry><entry>speed</entry><entry>m/s * 16</entry>
+ </row>
+ <row>
+ <entry>30</entry><entry>int16_t</entry><entry>height</entry><entry>m</entry>
+ </row>
+ <row>
+ <entry>32</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>
+ <section>
+ <title>TeleMetrum v2 Sensor Data</title>
+ <informaltable frame='none' label='' tocentry='0'>
+ <tgroup cols='2' align='center' colsep='1' rowsep='1'>
+ <colspec align='center' colwidth='*' colname='Offset'/>
+ <colspec align='left' colwidth='3*' colname='Description'/>
+ <thead>
+ <row>
+ <entry>Type</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>0x0A</entry>
+ <entry>TeleMetrum v2 Sensor Data</entry>
+ </row>
+ <row>
+ <entry>0x0B</entry>
+ <entry>TeleMetrum v2 Calibration Data</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ <para>
+ TeleMetrum v2 has higher resolution barometric data than
+ TeleMetrum v1, and so the constant calibration data is
+ split out into a separate packet.
+ </para>
+ <para>
+ TeleMetrum v2 Sensor Data packets are transmitted once per second on the
+ ground, 10 times per second during ascent and once per second
+ during descent and landing
+ </para>
+ <para>
+ TeleMetrum v2 Calibration Data packets are always transmitted once per second.
+ </para>
+ <table frame='all'>
+ <title>TeleMetrum v2 Sensor Packet Contents</title>
+ <tgroup cols='4' align='center' colsep='1' rowsep='1'>
+ <colspec align='center' colwidth='*' colname='Offset'/>
+ <colspec align='center' colwidth='3*' colname='Data Type'/>
+ <colspec align='left' colwidth='3*' colname='Name'/>
+ <colspec align='left' colwidth='9*' colname='Description'/>
+ <thead>
+ <row>
+ <entry align='center'>Offset</entry>
+ <entry align='center'>Data Type</entry>
+ <entry align='center'>Name</entry>
+ <entry align='center'>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>5</entry><entry>uint8_t</entry><entry>state</entry><entry>Flight state</entry>
+ </row>
+ <row>
+ <entry>6</entry><entry>int16_t</entry><entry>accel</entry><entry>accelerometer</entry>
+ </row>
+ <row>
+ <entry>8</entry><entry>int32_t</entry><entry>pres</entry><entry>pressure sensor (Pa * 10)</entry>
+ </row>
+ <row>
+ <entry>12</entry><entry>int16_t</entry><entry>temp</entry><entry>temperature sensor (°C * 100)</entry>
+ </row>
+
+ <row>
+ <entry>14</entry><entry>int16_t</entry><entry>acceleration</entry><entry>m/s² * 16</entry>
+ </row>
+ <row>
+ <entry>16</entry><entry>int16_t</entry><entry>speed</entry><entry>m/s * 16</entry>
+ </row>
+ <row>
+ <entry>18</entry><entry>int16_t</entry><entry>height</entry><entry>m</entry>
+ </row>
+
+ <row>
+ <entry>20</entry><entry>int16_t</entry><entry>v_batt</entry><entry>battery voltage</entry>
+ </row>
+ <row>
+ <entry>22</entry><entry>int16_t</entry><entry>sense_d</entry><entry>drogue continuity sense</entry>
+ </row>
+ <row>
+ <entry>24</entry><entry>int16_t</entry><entry>sense_m</entry><entry>main continuity sense</entry>
+ </row>
+ <row>
+ <entry>26</entry><entry>pad[6]</entry><entry>pad bytes</entry><entry></entry>
+ </row>
+ <row>
+ <entry>32</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <table frame='all'>
+ <title>TeleMetrum v2 Calibration Data Packet Contents</title>
+ <tgroup cols='4' align='center' colsep='1' rowsep='1'>
+ <colspec align='center' colwidth='*' colname='Offset'/>
+ <colspec align='center' colwidth='3*' colname='Data Type'/>
+ <colspec align='left' colwidth='3*' colname='Name'/>
+ <colspec align='left' colwidth='9*' colname='Description'/>
+ <thead>
+ <row>
+ <entry align='center'>Offset</entry>
+ <entry align='center'>Data Type</entry>
+ <entry align='center'>Name</entry>
+ <entry align='center'>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>5</entry><entry>pad[3]</entry><entry>pad bytes</entry><entry></entry>
+ </row>
+ <row>
+ <entry>8</entry><entry>int32_t</entry><entry>ground_pres</entry><entry>Average barometer reading on ground</entry>
+ </row>
+ <row>
+ <entry>12</entry><entry>int16_t</entry><entry>ground_accel</entry><entry>Average accelerometer reading on ground</entry>
+ </row>
+ <row>
+ <entry>14</entry><entry>int16_t</entry><entry>accel_plus_g</entry><entry>Accel calibration at +1g</entry>
+ </row>
+ <row>
+ <entry>16</entry><entry>int16_t</entry><entry>accel_minus_g</entry><entry>Accel calibration at -1g</entry>
+ </row>
+ <row>
+ <entry>18</entry><entry>pad[14]</entry><entry>pad bytes</entry><entry></entry>
+ </row>
+ <row>
+ <entry>32</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </section>