update docs
authorBdale Garbee <bdale@gag.com>
Thu, 3 Jan 2019 07:40:40 +0000 (00:40 -0700)
committerBdale Garbee <bdale@gag.com>
Thu, 3 Jan 2019 07:40:40 +0000 (00:40 -0700)
32 files changed:
AltOS/doc/altos.html
AltOS/doc/altos.pdf
AltOS/doc/altusmetrum.html
AltOS/doc/altusmetrum.pdf
AltOS/doc/am-notoc.css [new file with mode: 0644]
AltOS/doc/am.css
AltOS/doc/companion.html
AltOS/doc/companion.pdf
AltOS/doc/easymega-outline.pdf
AltOS/doc/easymini-outline.pdf
AltOS/doc/easymini.html
AltOS/doc/easymini.pdf
AltOS/doc/images/icons/caution.svg [new file with mode: 0644]
AltOS/doc/images/icons/important.svg [new file with mode: 0644]
AltOS/doc/images/icons/note.svg [new file with mode: 0644]
AltOS/doc/images/icons/tip.svg [new file with mode: 0644]
AltOS/doc/images/icons/warning.svg [new file with mode: 0644]
AltOS/doc/map-loading.html
AltOS/doc/map-loading.pdf
AltOS/doc/map-loading.svg [new file with mode: 0644]
AltOS/doc/micropeak-oneline.svg
AltOS/doc/micropeak.html
AltOS/doc/micropeak.pdf
AltOS/doc/telegps-outline.pdf
AltOS/doc/telegps.html
AltOS/doc/telegps.pdf
AltOS/doc/telemega-outline.pdf
AltOS/doc/telemetrum-outline.pdf
AltOS/doc/telemetry.html
AltOS/doc/telemetry.pdf
AltOS/doc/telemini-v1-outline.pdf
AltOS/doc/telemini-v3-outline.pdf

index 7ca6a09f0487c1b1b54d8357987915bd0247724d..2593c7b13a97b055cc1ffa3f94710e1565f35109 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AltOS</title><link rel="stylesheet" type="text/css" href="am.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /></head><body><div xml:lang="en" class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="idm1"></a>AltOS</h1></div><div><h2 class="subtitle">Altos Metrum Operating System</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3><code class="email">&lt;<a class="email" href="mailto:keithp@keithp.com">keithp@keithp.com</a>&gt;</code></div></div><div><p class="copyright">Copyright © 2012 Keith Packard</p></div><div><div class="legalnotice"><a id="idm13"></a><p>
-    This document is released under the terms of the
-    <a class="ulink" href="http://creativecommons.org/licenses/by-sa/3.0/" target="_top">
-      Creative Commons ShareAlike 3.0
-    </a>
-    license.
-  </p></div></div><div><a href="altos-revhistory.html">Revision History</a></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="#_overview">1. Overview</a></span></dt><dt><span class="chapter"><a href="#_altos_porting_layer">2. AltOS Porting Layer</a></span></dt><dd><dl><dt><span class="section"><a href="#_low_level_cpu_operations">2.1. Low-level CPU operations</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_arch_block_interrupts_ao_arch_release_interrupts">2.1.1. ao_arch_block_interrupts/ao_arch_release_interrupts</a></span></dt><dt><span class="section"><a href="#_ao_arch_save_regs_ao_arch_save_stack_ao_arch_restore_stack">2.1.2. ao_arch_save_regs, ao_arch_save_stack, ao_arch_restore_stack</a></span></dt><dt><span class="section"><a href="#_ao_arch_wait_interupt">2.1.3. ao_arch_wait_interupt</a></span></dt></dl></dd><dt><span class="section"><a href="#_gpio_operations">2.2. GPIO operations</a></span></dt><dd><dl><dt><span class="section"><a href="#_gpio_setup">2.2.1. GPIO setup</a></span></dt><dt><span class="section"><a href="#_reading_and_writing_gpio_pins">2.2.2. Reading and writing GPIO pins</a></span></dt></dl></dd><dt><span class="section"><a href="#_8051_memory_spaces">2.3. 8051 memory spaces</a></span></dt><dd><dl><dt><span class="section"><a href="#_data">2.3.1. __data</a></span></dt><dt><span class="section"><a href="#_idata">2.3.2. __idata</a></span></dt><dt><span class="section"><a href="#_xdata">2.3.3. __xdata</a></span></dt><dt><span class="section"><a href="#_pdata">2.3.4. __pdata</a></span></dt><dt><span class="section"><a href="#_code">2.3.5. __code</a></span></dt><dt><span class="section"><a href="#_bit">2.3.6. __bit</a></span></dt><dt><span class="section"><a href="#_emphasis_sfr_emphasis_sfr16_emphasis_sfr32_emphasis_sbit">2.3.7. <span class="emphasis"><em>sfr, </em></span>sfr16, <span class="emphasis"><em>sfr32, </em></span>sbit</a></span></dt></dl></dd><dt><span class="section"><a href="#_function_calls_on_the_8051">2.4. Function calls on the 8051</a></span></dt><dd><dl><dt><span class="section"><a href="#_reentrant_functions">2.4.1. __reentrant functions</a></span></dt><dt><span class="section"><a href="#_non___reentrant_functions">2.4.2. Non __reentrant functions</a></span></dt><dt><span class="section"><a href="#_interrupt_functions">2.4.3. __interrupt functions</a></span></dt><dt><span class="section"><a href="#_critical_functions_and_statements">2.4.4. __critical functions and statements</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#_task_functions">3. Task functions</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_add_task">3.1. ao_add_task</a></span></dt><dt><span class="section"><a href="#_ao_exit">3.2. ao_exit</a></span></dt><dt><span class="section"><a href="#_ao_sleep">3.3. ao_sleep</a></span></dt><dt><span class="section"><a href="#_ao_wakeup">3.4. ao_wakeup</a></span></dt><dt><span class="section"><a href="#_ao_alarm">3.5. ao_alarm</a></span></dt><dt><span class="section"><a href="#_ao_start_scheduler">3.6. ao_start_scheduler</a></span></dt><dt><span class="section"><a href="#_ao_clock_init">3.7. ao_clock_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_timer_functions">4. Timer Functions</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_time">4.1. ao_time</a></span></dt><dt><span class="section"><a href="#_ao_delay">4.2. ao_delay</a></span></dt><dt><span class="section"><a href="#_ao_timer_set_adc_interval">4.3. ao_timer_set_adc_interval</a></span></dt><dt><span class="section"><a href="#_ao_timer_init">4.4. ao_timer_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_altos_mutexes">5. AltOS Mutexes</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_mutex_get">5.1. ao_mutex_get</a></span></dt><dt><span class="section"><a href="#_ao_mutex_put">5.2. ao_mutex_put</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_dma_engine">6. DMA engine</a></span></dt><dd><dl><dt><span class="section"><a href="#_cc1111_dma_engine">6.1. CC1111 DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_dma_alloc">6.1.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#_ao_dma_set_transfer">6.1.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#_ao_dma_start">6.1.3. ao_dma_start</a></span></dt><dt><span class="section"><a href="#_ao_dma_trigger">6.1.4. ao_dma_trigger</a></span></dt><dt><span class="section"><a href="#_ao_dma_abort">6.1.5. ao_dma_abort</a></span></dt></dl></dd><dt><span class="section"><a href="#_stm32l_dma_engine">6.2. STM32L DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_dma_alloc_2">6.2.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#_ao_dma_set_transfer_2">6.2.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#_ao_dma_set_isr">6.2.3. ao_dma_set_isr</a></span></dt><dt><span class="section"><a href="#_ao_dma_start_2">6.2.4. ao_dma_start</a></span></dt><dt><span class="section"><a href="#_ao_dma_done_transfer">6.2.5. ao_dma_done_transfer</a></span></dt><dt><span class="section"><a href="#_ao_dma_abort_2">6.2.6. ao_dma_abort</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#_stdio_interface">7. Stdio interface</a></span></dt><dd><dl><dt><span class="section"><a href="#_putchar">7.1. putchar</a></span></dt><dt><span class="section"><a href="#_getchar">7.2. getchar</a></span></dt><dt><span class="section"><a href="#_flush">7.3. flush</a></span></dt><dt><span class="section"><a href="#_ao_add_stdio">7.4. ao_add_stdio</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_command_line_interface">8. Command line interface</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_cmd_register">8.1. ao_cmd_register</a></span></dt><dt><span class="section"><a href="#_ao_cmd_lex">8.2. ao_cmd_lex</a></span></dt><dt><span class="section"><a href="#_ao_cmd_put16">8.3. ao_cmd_put16</a></span></dt><dt><span class="section"><a href="#_ao_cmd_put8">8.4. ao_cmd_put8</a></span></dt><dt><span class="section"><a href="#_ao_cmd_white">8.5. ao_cmd_white</a></span></dt><dt><span class="section"><a href="#_ao_cmd_hex">8.6. ao_cmd_hex</a></span></dt><dt><span class="section"><a href="#_ao_cmd_decimal">8.7. ao_cmd_decimal</a></span></dt><dt><span class="section"><a href="#_ao_match_word">8.8. ao_match_word</a></span></dt><dt><span class="section"><a href="#_ao_cmd_init">8.9. ao_cmd_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_usb_target_device">9. USB target device</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_usb_flush">9.1. ao_usb_flush</a></span></dt><dt><span class="section"><a href="#_ao_usb_putchar">9.2. ao_usb_putchar</a></span></dt><dt><span class="section"><a href="#_ao_usb_pollchar">9.3. ao_usb_pollchar</a></span></dt><dt><span class="section"><a href="#_ao_usb_getchar">9.4. ao_usb_getchar</a></span></dt><dt><span class="section"><a href="#_ao_usb_disable">9.5. ao_usb_disable</a></span></dt><dt><span class="section"><a href="#_ao_usb_enable">9.6. ao_usb_enable</a></span></dt><dt><span class="section"><a href="#_ao_usb_init">9.7. ao_usb_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_serial_peripherals">10. Serial peripherals</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_serial_getchar">10.1. ao_serial_getchar</a></span></dt><dt><span class="section"><a href="#_ao_serial_putchar">10.2. ao_serial_putchar</a></span></dt><dt><span class="section"><a href="#_ao_serial_drain">10.3. ao_serial_drain</a></span></dt><dt><span class="section"><a href="#_ao_serial_set_speed">10.4. ao_serial_set_speed</a></span></dt><dt><span class="section"><a href="#_ao_serial_init">10.5. ao_serial_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_cc1111_cc1120_cc1200_radio_peripheral">11. CC1111/CC1120/CC1200 Radio peripheral</a></span></dt><dd><dl><dt><span class="section"><a href="#_radio_introduction">11.1. Radio Introduction</a></span></dt><dt><span class="section"><a href="#_ao_radio_set_telemetry">11.2. ao_radio_set_telemetry</a></span></dt><dt><span class="section"><a href="#_ao_radio_set_packet">11.3. ao_radio_set_packet</a></span></dt><dt><span class="section"><a href="#_ao_radio_set_rdf">11.4. ao_radio_set_rdf</a></span></dt><dt><span class="section"><a href="#_ao_radio_idle">11.5. ao_radio_idle</a></span></dt><dt><span class="section"><a href="#_ao_radio_get">11.6. ao_radio_get</a></span></dt><dt><span class="section"><a href="#_ao_radio_put">11.7. ao_radio_put</a></span></dt><dt><span class="section"><a href="#_ao_radio_abort">11.8. ao_radio_abort</a></span></dt><dt><span class="section"><a href="#_radio_telemetry">11.9. Radio Telemetry</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_radio_send">11.9.1. ao_radio_send</a></span></dt><dt><span class="section"><a href="#_ao_radio_recv">11.9.2. ao_radio_recv</a></span></dt></dl></dd><dt><span class="section"><a href="#_radio_direction_finding">11.10. Radio Direction Finding</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_radio_rdf">11.10.1. ao_radio_rdf</a></span></dt></dl></dd><dt><span class="section"><a href="#_radio_packet_mode">11.11. Radio Packet Mode</a></span></dt><dd><dl><dt><span class="section"><a href="#_ao_packet_putchar">11.11.1. ao_packet_putchar</a></span></dt><dt><span class="section"><a href="#_ao_packet_pollchar">11.11.2. ao_packet_pollchar</a></span></dt><dt><span class="section"><a href="#_ao_packet_slave_start">11.11.3. ao_packet_slave_start</a></span></dt><dt><span class="section"><a href="#_ao_packet_slave_stop">11.11.4. ao_packet_slave_stop</a></span></dt><dt><span class="section"><a href="#_ao_packet_slave_init">11.11.5. ao_packet_slave_init</a></span></dt><dt><span class="section"><a href="#_ao_packet_master_init">11.11.6. ao_packet_master_init</a></span></dt></dl></dd></dl></dd></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_overview"></a>Chapter 1. Overview</h1></div></div></div><p>AltOS is a operating system built for a variety of
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<meta name="author" content="Keith Packard">
+<title>AltOS</title>
+<link rel="stylesheet" href="./am.css">
+</head>
+<body class="book">
+<div id="header">
+<h1>AltOS</h1>
+<div class="details">
+<span id="author" class="author">Keith Packard</span><br>
+<span id="email" class="email"><a href="mailto:keithp@keithp.com">keithp@keithp.com</a></span><br>
+</div>
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_license">License</a></li>
+<li><a href="#_overview">1. Overview</a></li>
+<li><a href="#_altos_porting_layer">2. AltOS Porting Layer</a>
+<ul class="sectlevel2">
+<li><a href="#_low_level_cpu_operations">2.1. Low-level CPU operations</a></li>
+<li><a href="#_gpio_operations">2.2. GPIO operations</a></li>
+<li><a href="#_8051_memory_spaces">2.3. 8051 memory spaces</a></li>
+<li><a href="#_function_calls_on_the_8051">2.4. Function calls on the 8051</a></li>
+</ul>
+</li>
+<li><a href="#_task_functions">3. Task functions</a>
+<ul class="sectlevel2">
+<li><a href="#_ao_add_task">3.1. ao_add_task</a></li>
+<li><a href="#_ao_exit">3.2. ao_exit</a></li>
+<li><a href="#_ao_sleep">3.3. ao_sleep</a></li>
+<li><a href="#_ao_wakeup">3.4. ao_wakeup</a></li>
+<li><a href="#_ao_alarm">3.5. ao_alarm</a></li>
+<li><a href="#_ao_start_scheduler">3.6. ao_start_scheduler</a></li>
+<li><a href="#_ao_clock_init">3.7. ao_clock_init</a></li>
+</ul>
+</li>
+<li><a href="#_timer_functions">4. Timer Functions</a>
+<ul class="sectlevel2">
+<li><a href="#_ao_time">4.1. ao_time</a></li>
+<li><a href="#_ao_delay">4.2. ao_delay</a></li>
+<li><a href="#_ao_timer_set_adc_interval">4.3. ao_timer_set_adc_interval</a></li>
+<li><a href="#_ao_timer_init">4.4. ao_timer_init</a></li>
+</ul>
+</li>
+<li><a href="#_altos_mutexes">5. AltOS Mutexes</a>
+<ul class="sectlevel2">
+<li><a href="#_ao_mutex_get">5.1. ao_mutex_get</a></li>
+<li><a href="#_ao_mutex_put">5.2. ao_mutex_put</a></li>
+</ul>
+</li>
+<li><a href="#_dma_engine">6. DMA engine</a>
+<ul class="sectlevel2">
+<li><a href="#_cc1111_dma_engine">6.1. CC1111 DMA Engine</a></li>
+<li><a href="#_stm32l_dma_engine">6.2. STM32L DMA Engine</a></li>
+</ul>
+</li>
+<li><a href="#_stdio_interface">7. Stdio interface</a>
+<ul class="sectlevel2">
+<li><a href="#_putchar">7.1. putchar</a></li>
+<li><a href="#_getchar">7.2. getchar</a></li>
+<li><a href="#_flush">7.3. flush</a></li>
+<li><a href="#_ao_add_stdio">7.4. ao_add_stdio</a></li>
+</ul>
+</li>
+<li><a href="#_command_line_interface">8. Command line interface</a>
+<ul class="sectlevel2">
+<li><a href="#_ao_cmd_register">8.1. ao_cmd_register</a></li>
+<li><a href="#_ao_cmd_lex">8.2. ao_cmd_lex</a></li>
+<li><a href="#_ao_cmd_put16">8.3. ao_cmd_put16</a></li>
+<li><a href="#_ao_cmd_put8">8.4. ao_cmd_put8</a></li>
+<li><a href="#_ao_cmd_white">8.5. ao_cmd_white</a></li>
+<li><a href="#_ao_cmd_hex">8.6. ao_cmd_hex</a></li>
+<li><a href="#_ao_cmd_decimal">8.7. ao_cmd_decimal</a></li>
+<li><a href="#_ao_match_word">8.8. ao_match_word</a></li>
+<li><a href="#_ao_cmd_init">8.9. ao_cmd_init</a></li>
+</ul>
+</li>
+<li><a href="#_usb_target_device">9. USB target device</a>
+<ul class="sectlevel2">
+<li><a href="#_ao_usb_flush">9.1. ao_usb_flush</a></li>
+<li><a href="#_ao_usb_putchar">9.2. ao_usb_putchar</a></li>
+<li><a href="#_ao_usb_pollchar">9.3. ao_usb_pollchar</a></li>
+<li><a href="#_ao_usb_getchar">9.4. ao_usb_getchar</a></li>
+<li><a href="#_ao_usb_disable">9.5. ao_usb_disable</a></li>
+<li><a href="#_ao_usb_enable">9.6. ao_usb_enable</a></li>
+<li><a href="#_ao_usb_init">9.7. ao_usb_init</a></li>
+</ul>
+</li>
+<li><a href="#_serial_peripherals">10. Serial peripherals</a>
+<ul class="sectlevel2">
+<li><a href="#_ao_serial_getchar">10.1. ao_serial_getchar</a></li>
+<li><a href="#_ao_serial_putchar">10.2. ao_serial_putchar</a></li>
+<li><a href="#_ao_serial_drain">10.3. ao_serial_drain</a></li>
+<li><a href="#_ao_serial_set_speed">10.4. ao_serial_set_speed</a></li>
+<li><a href="#_ao_serial_init">10.5. ao_serial_init</a></li>
+</ul>
+</li>
+<li><a href="#_cc1111cc1120cc1200_radio_peripheral">11. CC1111/CC1120/CC1200 Radio peripheral</a>
+<ul class="sectlevel2">
+<li><a href="#_radio_introduction">11.1. Radio Introduction</a></li>
+<li><a href="#_ao_radio_set_telemetry">11.2. ao_radio_set_telemetry</a></li>
+<li><a href="#_ao_radio_set_packet">11.3. ao_radio_set_packet</a></li>
+<li><a href="#_ao_radio_set_rdf">11.4. ao_radio_set_rdf</a></li>
+<li><a href="#_ao_radio_idle">11.5. ao_radio_idle</a></li>
+<li><a href="#_ao_radio_get">11.6. ao_radio_get</a></li>
+<li><a href="#_ao_radio_put">11.7. ao_radio_put</a></li>
+<li><a href="#_ao_radio_abort">11.8. ao_radio_abort</a></li>
+<li><a href="#_radio_telemetry">11.9. Radio Telemetry</a></li>
+<li><a href="#_radio_direction_finding">11.10. Radio Direction Finding</a></li>
+<li><a href="#_radio_packet_mode">11.11. Radio Packet Mode</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div id="logo" class="imageblock">
+<div class="content">
+<a class="image" href="https://altusmetrum.org"><img src="altusmetrum-oneline.svg" alt="Altus Metrum"></a>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_license">License</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright © 2018 Bdale Garbee and Keith Packard</p>
+</div>
+<div class="paragraph">
+<p>This document is released under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons ShareAlike 3.0 License</a></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_overview">1. Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>AltOS is a operating system built for a variety of
 microcontrollers used in Altus Metrum devices. It has a simple
 porting layer for each CPU while providing a convenient
 operating enviroment for the developer. AltOS currently
-supports three different CPUs:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-STM32L series from ST Microelectronics. This ARM Cortex-M3
+supports three different CPUs:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>STM32L series from ST Microelectronics. This ARM Cortex-M3
 based microcontroller offers low power consumption and a
 wide variety of built-in peripherals. Altus Metrum uses this
-in the TeleMega, MegaDongle and TeleLCO projects.
-</li><li class="listitem">
-CC1111 from Texas Instruments. This device includes a
+in the TeleMega, MegaDongle and TeleLCO projects.</p>
+</li>
+<li>
+<p>CC1111 from Texas Instruments. This device includes a
 fabulous 10mW digital RF transceiver along with an
 8051-compatible processor core and a range of
 peripherals. This is used in the TeleMetrum, TeleMini,
 TeleDongle and TeleFire projects which share the need for a
-small microcontroller and an RF interface.
-</li><li class="listitem">
-ATmega32U4 from Atmel. This 8-bit AVR microcontroller is one
+small microcontroller and an RF interface.</p>
+</li>
+<li>
+<p>ATmega32U4 from Atmel. This 8-bit AVR microcontroller is one
 of the many used to create Arduino boards. The 32U4 includes
 a USB interface, making it easy to connect to other
 computers. Altus Metrum used this in prototypes of the
 TeleScience and TelePyro boards; those have been switched to
-the STM32L which is more capable and cheaper.
-</li></ul></div><p>Among the features of AltOS are:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Multi-tasking. While microcontrollers often don’t
-provide separate address spaces, it’s often easier to write
+the STM32L which is more capable and cheaper.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Among the features of AltOS are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Multi-tasking. While microcontrollers often don&#8217;t
+provide separate address spaces, it&#8217;s often easier to write
 code that operates in separate threads instead of tying
-everything into one giant event loop.
-</li><li class="listitem">
-Non-preemptive. This increases latency for thread
+everything into one giant event loop.</p>
+</li>
+<li>
+<p>Non-preemptive. This increases latency for thread
 switching but reduces the number of places where context
 switching can occur. It also simplifies the operating system
 design somewhat. Nothing in the target system (rocket flight
 control) has tight timing requirements, and so this seems like
-a reasonable compromise.
-</li><li class="listitem">
-Sleep/wakeup scheduling. Taken directly from ancient
+a reasonable compromise.</p>
+</li>
+<li>
+<p>Sleep/wakeup scheduling. Taken directly from ancient
 Unix designs, these two provide the fundemental scheduling
-primitive within AltOS.
-</li><li class="listitem">
-Mutexes. As a locking primitive, mutexes are easier to
-use than semaphores, at least in my experience.
-</li><li class="listitem">
-Timers. Tasks can set an alarm which will abort any
+primitive within AltOS.</p>
+</li>
+<li>
+<p>Mutexes. As a locking primitive, mutexes are easier to
+use than semaphores, at least in my experience.</p>
+</li>
+<li>
+<p>Timers. Tasks can set an alarm which will abort any
 pending sleep, allowing operations to time-out instead of
-blocking forever.
-</li></ul></div><p>The device drivers and other subsystems in AltOS are
+blocking forever.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>The device drivers and other subsystems in AltOS are
 conventionally enabled by invoking their _init() function from
-the <span class="emphasis"><em>main</em></span> function before that calls
+the 'main' function before that calls
 ao_start_scheduler(). These functions initialize the pin
 assignments, add various commands to the command processor and
 may add tasks to the scheduler to handle the device. A typical
-main program, thus, looks like:</p><pre class="literallayout">void
+main program, thus, looks like:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>void
 main(void)
 {
-        ao_clock_init();
+       ao_clock_init();
 
-        /* Turn on the LED until the system is stable */
-        ao_led_init(LEDS_AVAILABLE);
-        ao_led_on(AO_LED_RED);
-        ao_timer_init();
-        ao_cmd_init();
-        ao_usb_init();
-        ao_monitor_init(AO_LED_GREEN, TRUE);
-        ao_rssi_init(AO_LED_RED);
-        ao_radio_init();
-        ao_packet_slave_init();
-        ao_packet_master_init();
+       /* Turn on the LED until the system is stable */
+       ao_led_init(LEDS_AVAILABLE);
+       ao_led_on(AO_LED_RED);
+       ao_timer_init();
+       ao_cmd_init();
+       ao_usb_init();
+       ao_monitor_init(AO_LED_GREEN, TRUE);
+       ao_rssi_init(AO_LED_RED);
+       ao_radio_init();
+       ao_packet_slave_init();
+       ao_packet_master_init();
 #if HAS_DBG
-        ao_dbg_init();
+       ao_dbg_init();
 #endif
-        ao_config_init();
-        ao_start_scheduler();
-}</pre><p>As you can see, a long sequence of subsystems are initialized
-and then the scheduler is started.</p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_altos_porting_layer"></a>Chapter 2. AltOS Porting Layer</h1></div></div></div><p>AltOS provides a CPU-independent interface to various common
+       ao_config_init();
+       ao_start_scheduler();
+}</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>As you can see, a long sequence of subsystems are initialized
+and then the scheduler is started.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_altos_porting_layer">2. AltOS Porting Layer</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>AltOS provides a CPU-independent interface to various common
 microcontroller subsystems, including GPIO pins, interrupts,
 SPI, I2C, USB and asynchronous serial interfaces. By making
 these CPU-independent, device drivers, generic OS and
 application code can all be written that work on any supported
 CPU. Many of the architecture abstraction interfaces are
-prefixed with ao_arch.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_low_level_cpu_operations"></a>2.1. Low-level CPU operations</h2></div></div></div><p>These primitive operations provide the abstraction needed to
+prefixed with ao_arch.</p>
+</div>
+<div class="sect2">
+<h3 id="_low_level_cpu_operations">2.1. Low-level CPU operations</h3>
+<div class="paragraph">
+<p>These primitive operations provide the abstraction needed to
 run the multi-tasking framework while providing reliable
-interrupt delivery.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_arch_block_interrupts_ao_arch_release_interrupts"></a>2.1.1. ao_arch_block_interrupts/ao_arch_release_interrupts</h3></div></div></div><pre class="literallayout">static inline void
+interrupt delivery.</p>
+</div>
+<div class="sect3">
+<h4 id="_ao_arch_block_interruptsao_arch_release_interrupts">2.1.1. ao_arch_block_interrupts/ao_arch_release_interrupts</h4>
+<div class="literalblock">
+<div class="content">
+<pre>static inline void
 ao_arch_block_interrupts(void);
 
 static inline void
-ao_arch_release_interrupts(void);</pre><p>These disable/enable interrupt delivery, they may not
+ao_arch_release_interrupts(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>These disable/enable interrupt delivery, they may not
 discard any interrupts. Use these for sections of code that
 must be atomic with respect to any code run from an
-interrupt handler.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_arch_save_regs_ao_arch_save_stack_ao_arch_restore_stack"></a>2.1.2. ao_arch_save_regs, ao_arch_save_stack, ao_arch_restore_stack</h3></div></div></div><pre class="literallayout">static inline void
+interrupt handler.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_arch_save_regs_ao_arch_save_stack_ao_arch_restore_stack">2.1.2. ao_arch_save_regs, ao_arch_save_stack, ao_arch_restore_stack</h4>
+<div class="literalblock">
+<div class="content">
+<pre>static inline void
 ao_arch_save_regs(void);
 
 static inline void
 ao_arch_save_stack(void);
 
 static inline void
-ao_arch_restore_stack(void);</pre><p>These provide all of the support needed to switch
+ao_arch_restore_stack(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>These provide all of the support needed to switch
 between tasks.. ao_arch_save_regs must save all CPU
 registers to the current stack, including the
 interrupt enable state. ao_arch_save_stack records the
 current stack location in the current ao_task
 structure. ao_arch_restore_stack switches back to the
 saved stack, restores all registers and branches to
-the saved return address.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_arch_wait_interupt"></a>2.1.3. ao_arch_wait_interupt</h3></div></div></div><pre class="literallayout">#define ao_arch_wait_interrupt()</pre><p>This stops the CPU, leaving clocks and interrupts
+the saved return address.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_arch_wait_interupt">2.1.3. ao_arch_wait_interupt</h4>
+<div class="literalblock">
+<div class="content">
+<pre>#define ao_arch_wait_interrupt()</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This stops the CPU, leaving clocks and interrupts
 enabled. When an interrupt is received, this must wake up
 and handle the interrupt. ao_arch_wait_interrupt is entered
 with interrupts disabled to ensure that there is no gap
 between determining that no task wants to run and idling the
 CPU. It must sleep the CPU, process interrupts and then
-disable interrupts again. If the CPU doesnt have any
+disable interrupts again. If the CPU doesn&#8217;t have any
 reduced power mode, this must at the least allow pending
-interrupts to be processed.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_gpio_operations"></a>2.2. GPIO operations</h2></div></div></div><p>These functions provide an abstract interface to configure and
-manipulate GPIO pins.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_gpio_setup"></a>2.2.1. GPIO setup</h3></div></div></div><p>These macros may be invoked at system
+interrupts to be processed.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_gpio_operations">2.2. GPIO operations</h3>
+<div class="paragraph">
+<p>These functions provide an abstract interface to configure and
+manipulate GPIO pins.</p>
+</div>
+<div class="sect3">
+<h4 id="_gpio_setup">2.2.1. GPIO setup</h4>
+<div class="paragraph">
+<p>These macros may be invoked at system
 initialization time to configure pins as
 needed for system operation. One tricky aspect
 is that some chips provide direct access to
@@ -126,429 +352,1265 @@ access to a whole register full of pins. To
 support this, the GPIO macros provide both
 port+bit and pin arguments. Simply define the
 arguments needed for the target platform and
-leave the others undefined.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_ao_enable_output"></a>ao_enable_output</h4></div></div></div><pre class="literallayout">#define ao_enable_output(port, bit, pin, value)</pre><p>Set the specified port+bit (also called <span class="emphasis"><em>pin</em></span>)
+leave the others undefined.</p>
+</div>
+<div class="sect4">
+<h5 id="_ao_enable_output">ao_enable_output</h5>
+<div class="literalblock">
+<div class="content">
+<pre>#define ao_enable_output(port, bit, pin, value)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Set the specified port+bit (also called 'pin')
 for output, initializing to the specified
 value. The macro must avoid driving the pin
-with the opposite value if at all possible.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_ao_enable_input"></a>ao_enable_input</h4></div></div></div><pre class="literallayout">#define ao_enable_input(port, bit, mode)</pre><p>Sets the specified port/bit to be an input
-pin. <span class="emphasis"><em>mode</em></span> is a combination of one or more of
+with the opposite value if at all possible.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_ao_enable_input">ao_enable_input</h5>
+<div class="literalblock">
+<div class="content">
+<pre>#define ao_enable_input(port, bit, mode)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Sets the specified port/bit to be an input
+pin. 'mode' is a combination of one or more of
 the following. Note that some platforms may
 not support the desired mode. In that case,
 the value will not be defined so that the
-program will fail to compile.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-AO_EXTI_MODE_PULL_UP. Apply a pull-up to the
-pin; a disconnected pin will read as 1.
-</li><li class="listitem">
-AO_EXTI_MODE_PULL_DOWN. Apply a pull-down to
-the pin; a disconnected pin will read as 0.
-</li><li class="listitem">
-0. Don’t apply either a pull-up or
+program will fail to compile.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>AO_EXTI_MODE_PULL_UP. Apply a pull-up to the
+pin; a disconnected pin will read as 1.</p>
+</li>
+<li>
+<p>AO_EXTI_MODE_PULL_DOWN. Apply a pull-down to
+the pin; a disconnected pin will read as 0.</p>
+</li>
+<li>
+<p>0. Don&#8217;t apply either a pull-up or
 pull-down. A disconnected pin will read an
-undetermined value.
-</li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_reading_and_writing_gpio_pins"></a>2.2.2. Reading and writing GPIO pins</h3></div></div></div><p>These macros read and write individual GPIO pins.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_ao_gpio_set"></a>ao_gpio_set</h4></div></div></div><pre class="literallayout">#define ao_gpio_set(port, bit, pin, value)</pre><p>Sets the specified port/bit or pin to
-the indicated value</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_ao_gpio_get"></a>ao_gpio_get</h4></div></div></div><pre class="literallayout">#define ao_gpio_get(port, bit, pin)</pre><p>Returns either 1 or 0 depending on
+undetermined value.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_reading_and_writing_gpio_pins">2.2.2. Reading and writing GPIO pins</h4>
+<div class="paragraph">
+<p>These macros read and write individual GPIO pins.</p>
+</div>
+<div class="sect4">
+<h5 id="_ao_gpio_set">ao_gpio_set</h5>
+<div class="literalblock">
+<div class="content">
+<pre>#define ao_gpio_set(port, bit, pin, value)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Sets the specified port/bit or pin to
+the indicated value</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_ao_gpio_get">ao_gpio_get</h5>
+<div class="literalblock">
+<div class="content">
+<pre>#define ao_gpio_get(port, bit, pin)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Returns either 1 or 0 depending on
 whether the input to the pin is high
 or low.
-== Programming the 8051 with SDCC</p><p>The 8051 is a primitive 8-bit processor, designed in the mists
+== Programming the 8051 with SDCC</p>
+</div>
+<div class="paragraph">
+<p>The 8051 is a primitive 8-bit processor, designed in the mists
 of time in as few transistors as possible. The architecture is
 highly irregular and includes several separate memory
 spaces. Furthermore, accessing stack variables is slow, and
 the stack itself is of limited size. While SDCC papers over
 the instruction set, it is not completely able to hide the
-memory architecture from the application designer.</p><p>When built on other architectures, the various SDCC-specific
-symbols are #defined as empty strings so they don’t affect the
-compiler.</p></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_8051_memory_spaces"></a>2.3. 8051 memory spaces</h2></div></div></div><p>The <span class="emphasis"><em>data/</em></span>xdata/__code memory spaces below were completely
+memory architecture from the application designer.</p>
+</div>
+<div class="paragraph">
+<p>When built on other architectures, the various SDCC-specific
+symbols are #defined as empty strings so they don&#8217;t affect the
+compiler.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_8051_memory_spaces">2.3. 8051 memory spaces</h3>
+<div class="paragraph">
+<p>The <em>data/</em>xdata/__code memory spaces below were completely
 separate in the original 8051 design. In the cc1111, this
-isnt true—they all live in a single unified 64kB address
-space, and so its possible to convert any address into a
-unique 16-bit address. SDCC doesnt know this, and so a
-<span class="emphasis"><em>global</em></span> address to SDCC consumes 3 bytes of memory, 1 byte as
+isn&#8217;t true—they all live in a single unified 64kB address
+space, and so it&#8217;s possible to convert any address into a
+unique 16-bit address. SDCC doesn&#8217;t know this, and so a
+'global' address to SDCC consumes 3 bytes of memory, 1 byte as
 a tag indicating the memory space and 2 bytes of offset within
 that space. AltOS avoids these 3-byte addresses as much as
 possible; using them involves a function call per byte
 access. The result is that nearly every variable declaration
 is decorated with a memory space identifier which clutters the
 code but makes the resulting code far smaller and more
-efficient.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_data"></a>2.3.1. __data</h3></div></div></div><p>The 8051 can directly address these 128 bytes of
+efficient.</p>
+</div>
+<div class="sect3">
+<h4 id="_data">2.3.1. __data</h4>
+<div class="paragraph">
+<p>The 8051 can directly address these 128 bytes of
 memory. This makes them precious so they should be
 reserved for frequently addressed values. Oh, just to
 confuse things further, the 8 general registers in the
 CPU are actually stored in this memory space. There are
-magic instructions to <span class="emphasis"><em>bank switch</em></span> among 4 banks of
+magic instructions to 'bank switch' among 4 banks of
 these registers located at 0x00 - 0x1F. AltOS uses only
 the first bank at 0x00 - 0x07, leaving the other 24
-bytes available for other data.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_idata"></a>2.3.2. __idata</h3></div></div></div><p>There are an additional 128 bytes of internal memory
+bytes available for other data.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_idata">2.3.2. __idata</h4>
+<div class="paragraph">
+<p>There are an additional 128 bytes of internal memory
 that share the same address space as __data but which
 cannot be directly addressed. The stack normally
-occupies this space and so AltOS doesn’t place any
-static storage here.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_xdata"></a>2.3.3. __xdata</h3></div></div></div><p>This is additional general memory accessed through a
+occupies this space and so AltOS doesn&#8217;t place any
+static storage here.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_xdata">2.3.3. __xdata</h4>
+<div class="paragraph">
+<p>This is additional general memory accessed through a
 single 16-bit address register. The CC1111F32 has 32kB
 of memory available here. Most program data should live
-in this memory space.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_pdata"></a>2.3.4. __pdata</h3></div></div></div><p>This is an alias for the first 256 bytes of __xdata
+in this memory space.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_pdata">2.3.4. __pdata</h4>
+<div class="paragraph">
+<p>This is an alias for the first 256 bytes of __xdata
 memory, but uses a shorter addressing mode with
 single global 8-bit value for the high 8 bits of the
 address and any of several 8-bit registers for the low 8
 bits. AltOS uses a few bits of this memory, it should
-probably use more.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_code"></a>2.3.5. __code</h3></div></div></div><p>All executable code must live in this address space, but
+probably use more.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_code">2.3.5. __code</h4>
+<div class="paragraph">
+<p>All executable code must live in this address space, but
 you can stick read-only data here too. It is addressed
-using the 16-bit address register and special <span class="emphasis"><em>code</em></span>
-access opcodes. Anything read-only should live in this space.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_bit"></a>2.3.6. __bit</h3></div></div></div><p>The 8051 has 128 bits of bit-addressible memory that
-lives in the <span class="emphasis"><em>data segment from 0x20 through
+using the 16-bit address register and special 'code'
+access opcodes. Anything read-only should live in this space.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_bit">2.3.6. __bit</h4>
+<div class="paragraph">
+<p>The 8051 has 128 bits of bit-addressible memory that
+lives in the <em>data segment from 0x20 through
 0x2f. Special instructions access these bits
-in a single atomic operation. This isnt so much a
+in a single atomic operation. This isn&#8217;t so much a
 separate address space as a special addressing mode for
-a few bytes in the </em></span>data segment.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_emphasis_sfr_emphasis_sfr16_emphasis_sfr32_emphasis_sbit"></a>2.3.7. <span class="emphasis"><em>sfr, </em></span>sfr16, <span class="emphasis"><em>sfr32, </em></span>sbit</h3></div></div></div><p>Access to physical registers in the device use this mode
+a few bytes in the </em>data segment.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_sfr_sfr16_sfr32_sbit">2.3.7. <em>sfr, </em>sfr16, <em>sfr32, </em>sbit</h4>
+<div class="paragraph">
+<p>Access to physical registers in the device use this mode
 which declares the variable name, its type and the
 address it lives at. No memory is allocated for these
-variables.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_function_calls_on_the_8051"></a>2.4. Function calls on the 8051</h2></div></div></div><p>Because stack addressing is expensive, and stack space
+variables.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_function_calls_on_the_8051">2.4. Function calls on the 8051</h3>
+<div class="paragraph">
+<p>Because stack addressing is expensive, and stack space
 limited, the default function call declaration in SDCC
 allocates all parameters and local variables in static global
 memory. Just like fortran. This makes these functions
 non-reentrant, and also consume space for parameters and
 locals even when they are not running. The benefit is smaller
-code and faster execution.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_reentrant_functions"></a>2.4.1. __reentrant functions</h3></div></div></div><p>All functions which are re-entrant, either due to recursion
+code and faster execution.</p>
+</div>
+<div class="sect3">
+<h4 id="_reentrant_functions">2.4.1. __reentrant functions</h4>
+<div class="paragraph">
+<p>All functions which are re-entrant, either due to recursion
 or due to a potential context switch while executing, should
 be marked as __reentrant so that their parameters and local
 variables get allocated on the stack. This ensures that
 these values are not overwritten by another invocation of
-the function.</p><p>Functions which use significant amounts of space for
+the function.</p>
+</div>
+<div class="paragraph">
+<p>Functions which use significant amounts of space for
 arguments and/or local variables and which are not often
 invoked can also be marked as __reentrant. The resulting
 code will be larger, but the savings in memory are
-frequently worthwhile.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_non___reentrant_functions"></a>2.4.2. Non __reentrant functions</h3></div></div></div><p>All parameters and locals in non-reentrant functions can
+frequently worthwhile.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_non_reentrant_functions">2.4.2. Non __reentrant functions</h4>
+<div class="paragraph">
+<p>All parameters and locals in non-reentrant functions can
 have data space decoration so that they are allocated in
-<span class="emphasis"><em>xdata, </em></span>pdata or <span class="emphasis"><em>data space as desired. This can avoid
-consuming </em></span>data space for infrequently used variables in
-frequently used functions.</p><p>All library functions called by SDCC, including functions
+<em>xdata, </em>pdata or <em>data space as desired. This can avoid
+consuming </em>data space for infrequently used variables in
+frequently used functions.</p>
+</div>
+<div class="paragraph">
+<p>All library functions called by SDCC, including functions
 for multiplying and dividing large data types, are
 non-reentrant. Because of this, interrupt handlers must not
 invoke any library functions, including the multiply and
-divide code.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_interrupt_functions"></a>2.4.3. __interrupt functions</h3></div></div></div><p>Interrupt functions are declared with with an __interrupt
+divide code.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_interrupt_functions">2.4.3. __interrupt functions</h4>
+<div class="paragraph">
+<p>Interrupt functions are declared with with an __interrupt
 decoration that includes the interrupt number. SDCC saves
 and restores all of the registers in these functions and
-uses the <span class="emphasis"><em>reti</em></span> instruction at the end so that they operate
+uses the 'reti' instruction at the end so that they operate
 as stand-alone interrupt handlers. Interrupt functions may
-call the ao_wakeup function to wake AltOS tasks.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_critical_functions_and_statements"></a>2.4.4. __critical functions and statements</h3></div></div></div><p>SDCC has built-in support for suspending interrupts during
-critical code. Functions marked as <span class="emphasis"><em>critical will have
+call the ao_wakeup function to wake AltOS tasks.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_critical_functions_and_statements">2.4.4. __critical functions and statements</h4>
+<div class="paragraph">
+<p>SDCC has built-in support for suspending interrupts during
+critical code. Functions marked as <em>critical will have
 interrupts suspended for the whole period of
 execution. Individual statements may also be marked as
-</em></span>critical which blocks interrupts during the execution of
+</em>critical which blocks interrupts during the execution of
 that statement. Keeping critical sections as short as
 possible is key to ensuring that interrupts are handled as
-quickly as possible. AltOS doesn’t use this form in shared
-code as other compilers wouldn’t know what to do. Use
-ao_arch_block_interrupts and ao_arch_release_interrupts instead.</p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_task_functions"></a>Chapter 3. Task functions</h1></div></div></div><p>This chapter documents how to create, destroy and schedule
-AltOS tasks.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_add_task"></a>3.1. ao_add_task</h2></div></div></div><pre class="literallayout">void
+quickly as possible. AltOS doesn&#8217;t use this form in shared
+code as other compilers wouldn&#8217;t know what to do. Use
+ao_arch_block_interrupts and ao_arch_release_interrupts instead.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_task_functions">3. Task functions</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This chapter documents how to create, destroy and schedule
+AltOS tasks.</p>
+</div>
+<div class="sect2">
+<h3 id="_ao_add_task">3.1. ao_add_task</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
 ao_add_task(__xdata struct ao_task * task,
-            void (*start)(void),
-            __code char *name);</pre><p>This initializes the statically allocated task structure,
+           void (*start)(void),
+           __code char *name);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This initializes the statically allocated task structure,
 assigns a name to it (not used for anything but the task
 display), and the start address. It does not switch to the
-new task. <span class="emphasis"><em>start</em></span> must not ever return; there is no place
-to return to.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_exit"></a>3.2. ao_exit</h2></div></div></div><pre class="literallayout">void
-ao_exit(void)</pre><p>This terminates the current task.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_sleep"></a>3.3. ao_sleep</h2></div></div></div><pre class="literallayout">void
-ao_sleep(__xdata void *wchan)</pre><p>This suspends the current task until <span class="emphasis"><em>wchan</em></span> is signaled
+new task. 'start' must not ever return; there is no place
+to return to.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_exit">3.2. ao_exit</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_exit(void)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This terminates the current task.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_sleep">3.3. ao_sleep</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_sleep(__xdata void *wchan)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This suspends the current task until 'wchan' is signaled
 by ao_wakeup, or until the timeout, set by ao_alarm,
-fires. If <span class="emphasis"><em>wchan</em></span> is signaled, ao_sleep returns 0, otherwise
-it returns 1. This is the only way to switch to another task.</p><p>Because ao_wakeup wakes every task waiting on a particular
+fires. If 'wchan' is signaled, ao_sleep returns 0, otherwise
+it returns 1. This is the only way to switch to another task.</p>
+</div>
+<div class="paragraph">
+<p>Because ao_wakeup wakes every task waiting on a particular
 location, ao_sleep should be used in a loop that first checks
 the desired condition, blocks in ao_sleep and then rechecks
 until the condition is satisfied. If the location may be
 signaled from an interrupt handler, the code will need to
-block interrupts around the block of code. Here’s a complete
-example:</p><pre class="literallayout">ao_arch_block_interrupts();
+block interrupts around the block of code. Here&#8217;s a complete
+example:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>ao_arch_block_interrupts();
 while (!ao_radio_done)
-        ao_sleep(&amp;amp;ao_radio_done);
-ao_arch_release_interrupts();</pre></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_wakeup"></a>3.4. ao_wakeup</h2></div></div></div><pre class="literallayout">void
-ao_wakeup(__xdata void *wchan)</pre><p>Wake all tasks blocked on <span class="emphasis"><em>wchan</em></span>. This makes them
+       ao_sleep(&amp;amp;ao_radio_done);
+ao_arch_release_interrupts();</pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_wakeup">3.4. ao_wakeup</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_wakeup(__xdata void *wchan)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Wake all tasks blocked on 'wchan'. This makes them
 available to be run again, but does not actually switch
-to another task. Here’s an example of using this:</p><pre class="literallayout">if (RFIF &amp;amp; RFIF_IM_DONE) {
-        ao_radio_done = 1;
-        ao_wakeup(&amp;amp;ao_radio_done);
-        RFIF &amp;amp;= ~RFIF_IM_DONE;
-}</pre><p>Note that this need not block interrupts as the
+to another task. Here&#8217;s an example of using this:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>if (RFIF &amp;amp; RFIF_IM_DONE) {
+       ao_radio_done = 1;
+       ao_wakeup(&amp;amp;ao_radio_done);
+       RFIF &amp;amp;= ~RFIF_IM_DONE;
+}</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Note that this need not block interrupts as the
 ao_sleep block can only be run from normal mode, and
 so this sequence can never be interrupted with
-execution of the other sequence.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_alarm"></a>3.5. ao_alarm</h2></div></div></div><pre class="literallayout">void
+execution of the other sequence.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_alarm">3.5. ao_alarm</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
 ao_alarm(uint16_t delay);
 
 void
-ao_clear_alarm(void);</pre><p>Schedules an alarm to fire in at least <span class="emphasis"><em>delay</em></span>
+ao_clear_alarm(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Schedules an alarm to fire in at least 'delay'
 ticks. If the task is asleep when the alarm fires, it
 will wakeup and ao_sleep will return 1. ao_clear_alarm
-resets any pending alarm so that it doesn’t fire at
-some arbitrary point in the future.</p><pre class="literallayout">ao_alarm(ao_packet_master_delay);
+resets any pending alarm so that it doesn&#8217;t fire at
+some arbitrary point in the future.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>ao_alarm(ao_packet_master_delay);
 ao_arch_block_interrupts();
 while (!ao_radio_dma_done)
 if (ao_sleep(&amp;amp;ao_radio_dma_done) != 0)
 ao_radio_abort();
 ao_arch_release_interrupts();
-ao_clear_alarm();</pre><p>In this example, a timeout is set before waiting for
+ao_clear_alarm();</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>In this example, a timeout is set before waiting for
 incoming radio data. If no data is received before the
 timeout fires, ao_sleep will return 1 and then this
-code will abort the radio receive operation.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_start_scheduler"></a>3.6. ao_start_scheduler</h2></div></div></div><pre class="literallayout">void
-ao_start_scheduler(void);</pre><p>This is called from <span class="emphasis"><em>main</em></span> when the system is all
-initialized and ready to run. It will not return.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_clock_init"></a>3.7. ao_clock_init</h2></div></div></div><pre class="literallayout">void
-ao_clock_init(void);</pre><p>This initializes the main CPU clock and switches to it.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_timer_functions"></a>Chapter 4. Timer Functions</h1></div></div></div><p>AltOS sets up one of the CPU timers to run at 100Hz and
+code will abort the radio receive operation.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_start_scheduler">3.6. ao_start_scheduler</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_start_scheduler(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This is called from 'main' when the system is all
+initialized and ready to run. It will not return.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_clock_init">3.7. ao_clock_init</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_clock_init(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This initializes the main CPU clock and switches to it.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_timer_functions">4. Timer Functions</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>AltOS sets up one of the CPU timers to run at 100Hz and
 exposes this tick as the fundemental unit of time. At each
 interrupt, AltOS increments the counter, and schedules any tasks
 waiting for that time to pass, then fires off the sensors to
 collect current data readings. Doing this from the ISR ensures
 that the values are sampled at a regular rate, independent
-of any scheduling jitter.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_time"></a>4.1. ao_time</h2></div></div></div><pre class="literallayout">uint16_t
-ao_time(void)</pre><p>Returns the current system tick count. Note that this is
-only a 16 bit value, and so it wraps every 655.36 seconds.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_delay"></a>4.2. ao_delay</h2></div></div></div><pre class="literallayout">void
-ao_delay(uint16_t ticks);</pre><p>Suspend the current task for at least <span class="emphasis"><em>ticks</em></span> clock units.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_timer_set_adc_interval"></a>4.3. ao_timer_set_adc_interval</h2></div></div></div><pre class="literallayout">void
-ao_timer_set_adc_interval(uint8_t interval);</pre><p>This sets the number of ticks between ADC samples. If set
+of any scheduling jitter.</p>
+</div>
+<div class="sect2">
+<h3 id="_ao_time">4.1. ao_time</h3>
+<div class="literalblock">
+<div class="content">
+<pre>uint16_t
+ao_time(void)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Returns the current system tick count. Note that this is
+only a 16 bit value, and so it wraps every 655.36 seconds.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_delay">4.2. ao_delay</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_delay(uint16_t ticks);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Suspend the current task for at least 'ticks' clock units.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_timer_set_adc_interval">4.3. ao_timer_set_adc_interval</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_timer_set_adc_interval(uint8_t interval);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This sets the number of ticks between ADC samples. If set
 to 0, no ADC samples are generated. AltOS uses this to
-slow down the ADC sampling rate to save power.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_timer_init"></a>4.4. ao_timer_init</h2></div></div></div><pre class="literallayout">void
-ao_timer_init(void)</pre><p>This turns on the 100Hz tick. It is required for any of the
-time-based functions to work. It should be called by <span class="emphasis"><em>main</em></span>
-before ao_start_scheduler.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_altos_mutexes"></a>Chapter 5. AltOS Mutexes</h1></div></div></div><p>AltOS provides mutexes as a basic synchronization primitive. Each
+slow down the ADC sampling rate to save power.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_timer_init">4.4. ao_timer_init</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_timer_init(void)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This turns on the 100Hz tick. It is required for any of the
+time-based functions to work. It should be called by 'main'
+before ao_start_scheduler.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_altos_mutexes">5. AltOS Mutexes</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>AltOS provides mutexes as a basic synchronization primitive. Each
 mutexes is simply a byte of memory which holds 0 when the mutex
 is free or the task id of the owning task when the mutex is
 owned. Mutex calls are checked—attempting to acquire a mutex
 already held by the current task or releasing a mutex not held
-by the current task will both cause a panic.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_mutex_get"></a>5.1. ao_mutex_get</h2></div></div></div><pre class="literallayout">void
-ao_mutex_get(__xdata uint8_t *mutex);</pre><p>Acquires the specified mutex, blocking if the mutex is
-owned by another task.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_mutex_put"></a>5.2. ao_mutex_put</h2></div></div></div><pre class="literallayout">void
-ao_mutex_put(__xdata uint8_t *mutex);</pre><p>Releases the specified mutex, waking up all tasks waiting
-for it.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_dma_engine"></a>Chapter 6. DMA engine</h1></div></div></div><p>The CC1111 and STM32L both contain a useful bit of extra
+by the current task will both cause a panic.</p>
+</div>
+<div class="sect2">
+<h3 id="_ao_mutex_get">5.1. ao_mutex_get</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_mutex_get(__xdata uint8_t *mutex);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Acquires the specified mutex, blocking if the mutex is
+owned by another task.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_mutex_put">5.2. ao_mutex_put</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_mutex_put(__xdata uint8_t *mutex);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Releases the specified mutex, waking up all tasks waiting
+for it.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_dma_engine">6. DMA engine</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The CC1111 and STM32L both contain a useful bit of extra
 hardware in the form of a number of programmable DMA
 engines. They can be configured to copy data in memory, or
 between memory and devices (or even between two devices). AltOS
 exposes a general interface to this hardware and uses it to
-handle both internal and external devices.</p><p>Because the CC1111 and STM32L DMA engines are different, the
+handle both internal and external devices.</p>
+</div>
+<div class="paragraph">
+<p>Because the CC1111 and STM32L DMA engines are different, the
 interface to them is also different. As the DMA engines are
 currently used to implement platform-specific drivers, this
-isn’t yet a problem.</p><p>Code using a DMA engine should allocate one at startup
+isn&#8217;t yet a problem.</p>
+</div>
+<div class="paragraph">
+<p>Code using a DMA engine should allocate one at startup
 time. There is no provision to free them, and if you run out,
-AltOS will simply panic.</p><p>During operation, the DMA engine is initialized with the
+AltOS will simply panic.</p>
+</div>
+<div class="paragraph">
+<p>During operation, the DMA engine is initialized with the
 transfer parameters. Then it is started, at which point it
 awaits a suitable event to start copying data. When copying data
 from hardware to memory, that trigger event is supplied by the
 hardware device. When copying data from memory to hardware, the
-transfer is usually initiated by software.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_cc1111_dma_engine"></a>6.1. CC1111 DMA Engine</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_alloc"></a>6.1.1. ao_dma_alloc</h3></div></div></div><pre class="literallayout">uint8_t
-ao_dma_alloc(__xdata uint8_t *done)</pre><p>Allocate a DMA engine, returning the
-identifier.  <span class="emphasis"><em>done</em></span> is cleared when the DMA is
+transfer is usually initiated by software.</p>
+</div>
+<div class="sect2">
+<h3 id="_cc1111_dma_engine">6.1. CC1111 DMA Engine</h3>
+<div class="sect3">
+<h4 id="_ao_dma_alloc">6.1.1. ao_dma_alloc</h4>
+<div class="literalblock">
+<div class="content">
+<pre>uint8_t
+ao_dma_alloc(__xdata uint8_t *done)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Allocate a DMA engine, returning the
+identifier.  'done' is cleared when the DMA is
 started, and then receives the AO_DMA_DONE bit
 on a successful transfer or the AO_DMA_ABORTED
 bit if ao_dma_abort was called. Note that it
 is possible to get both bits if the transfer
-was aborted after it had finished.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_set_transfer"></a>6.1.2. ao_dma_set_transfer</h3></div></div></div><pre class="literallayout">void
+was aborted after it had finished.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_dma_set_transfer">6.1.2. ao_dma_set_transfer</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
 ao_dma_set_transfer(uint8_t id,
 void __xdata *srcaddr,
 void __xdata *dstaddr,
 uint16_t count,
 uint8_t cfg0,
-uint8_t cfg1)</pre><p>Initializes the specified dma engine to copy
-data from <span class="emphasis"><em>srcaddr</em></span> to <span class="emphasis"><em>dstaddr</em></span> for <span class="emphasis"><em>count</em></span>
+uint8_t cfg1)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Initializes the specified dma engine to copy
+data from 'srcaddr' to 'dstaddr' for 'count'
 units. cfg0 and cfg1 are values directly out
 of the CC1111 documentation and tell the DMA
 engine what the transfer unit size, direction
-and step are.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_start"></a>6.1.3. ao_dma_start</h3></div></div></div><pre class="literallayout">void
-ao_dma_start(uint8_t id);</pre><p>Arm the specified DMA engine and await a
+and step are.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_dma_start">6.1.3. ao_dma_start</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_dma_start(uint8_t id);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Arm the specified DMA engine and await a
 signal from either hardware or software to
-start transferring data.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_trigger"></a>6.1.4. ao_dma_trigger</h3></div></div></div><pre class="literallayout">void
-ao_dma_trigger(uint8_t id)</pre><p>Trigger the specified DMA engine to start
-copying data.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_abort"></a>6.1.5. ao_dma_abort</h3></div></div></div><pre class="literallayout">void
-ao_dma_abort(uint8_t id)</pre><p>Terminate any in-progress DMA transaction,
-marking its <span class="emphasis"><em>done</em></span> variable with the
-AO_DMA_ABORTED bit.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_stm32l_dma_engine"></a>6.2. STM32L DMA Engine</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_alloc_2"></a>6.2.1. ao_dma_alloc</h3></div></div></div><pre class="literallayout">uint8_t ao_dma_done[];
+start transferring data.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_dma_trigger">6.1.4. ao_dma_trigger</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_dma_trigger(uint8_t id)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Trigger the specified DMA engine to start
+copying data.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_dma_abort">6.1.5. ao_dma_abort</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_dma_abort(uint8_t id)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Terminate any in-progress DMA transaction,
+marking its 'done' variable with the
+AO_DMA_ABORTED bit.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_stm32l_dma_engine">6.2. STM32L DMA Engine</h3>
+<div class="sect3">
+<h4 id="_ao_dma_alloc_2">6.2.1. ao_dma_alloc</h4>
+<div class="literalblock">
+<div class="content">
+<pre>uint8_t ao_dma_done[];
 
 void
-ao_dma_alloc(uint8_t index);</pre><p>Reserve a DMA engine for exclusive use by one
-driver.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_set_transfer_2"></a>6.2.2. ao_dma_set_transfer</h3></div></div></div><pre class="literallayout">void
+ao_dma_alloc(uint8_t index);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Reserve a DMA engine for exclusive use by one
+driver.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_dma_set_transfer_2">6.2.2. ao_dma_set_transfer</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
 ao_dma_set_transfer(uint8_t id,
 void *peripheral,
 void *memory,
 uint16_t count,
-uint32_t ccr);</pre><p>Initializes the specified dma engine to copy
-data between <span class="emphasis"><em>peripheral</em></span> and <span class="emphasis"><em>memory</em></span> for
-<span class="emphasis"><em>count</em></span> units. <span class="emphasis"><em>ccr</em></span> is a value directly out
+uint32_t ccr);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Initializes the specified dma engine to copy
+data between 'peripheral' and 'memory' for
+'count' units. 'ccr' is a value directly out
 of the STM32L documentation and tells the DMA
 engine what the transfer unit size, direction
-and step are.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_set_isr"></a>6.2.3. ao_dma_set_isr</h3></div></div></div><pre class="literallayout">void
-ao_dma_set_isr(uint8_t index, void (*isr)(int))</pre><p>This sets a function to be called when the DMA
+and step are.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_dma_set_isr">6.2.3. ao_dma_set_isr</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_dma_set_isr(uint8_t index, void (*isr)(int))</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This sets a function to be called when the DMA
 transfer completes in lieu of setting the
 ao_dma_done bits. Use this when some work
 needs to be done when the DMA finishes that
-cannot wait until user space resumes.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_start_2"></a>6.2.4. ao_dma_start</h3></div></div></div><pre class="literallayout">void
-ao_dma_start(uint8_t id);</pre><p>Arm the specified DMA engine and await a
+cannot wait until user space resumes.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_dma_start_2">6.2.4. ao_dma_start</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_dma_start(uint8_t id);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Arm the specified DMA engine and await a
 signal from either hardware or software to
-start transferring data.  <span class="emphasis"><em>ao_dma_done[index]</em></span>
+start transferring data.  'ao_dma_done[index]'
 is cleared when the DMA is started, and then
 receives the AO_DMA_DONE bit on a successful
 transfer or the AO_DMA_ABORTED bit if
 ao_dma_abort was called. Note that it is
 possible to get both bits if the transfer was
-aborted after it had finished.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_done_transfer"></a>6.2.5. ao_dma_done_transfer</h3></div></div></div><pre class="literallayout">void
-ao_dma_done_transfer(uint8_t id);</pre><p>Signals that a specific DMA engine is done
+aborted after it had finished.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_dma_done_transfer">6.2.5. ao_dma_done_transfer</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_dma_done_transfer(uint8_t id);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Signals that a specific DMA engine is done
 being used. This allows multiple drivers to
-use the same DMA engine safely.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_dma_abort_2"></a>6.2.6. ao_dma_abort</h3></div></div></div><pre class="literallayout">void
-ao_dma_abort(uint8_t id)</pre><p>Terminate any in-progress DMA transaction,
-marking its <span class="emphasis"><em>done</em></span> variable with the
-AO_DMA_ABORTED bit.</p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_stdio_interface"></a>Chapter 7. Stdio interface</h1></div></div></div><p>AltOS offers a stdio interface over USB, serial and the RF
+use the same DMA engine safely.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_dma_abort_2">6.2.6. ao_dma_abort</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_dma_abort(uint8_t id)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Terminate any in-progress DMA transaction,
+marking its 'done' variable with the
+AO_DMA_ABORTED bit.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_stdio_interface">7. Stdio interface</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>AltOS offers a stdio interface over USB, serial and the RF
 packet link. This provides for control of the device locally or
 remotely. This is hooked up to the stdio functions by providing
 the standard putchar/getchar/flush functions. These
 automatically multiplex the available communication channels;
 output is always delivered to the channel which provided the
-most recent input.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_putchar"></a>7.1. putchar</h2></div></div></div><pre class="literallayout">void
-putchar(char c)</pre><p>Delivers a single character to the current console
-device.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_getchar"></a>7.2. getchar</h2></div></div></div><pre class="literallayout">char
-getchar(void)</pre><p>Reads a single character from any of the available
+most recent input.</p>
+</div>
+<div class="sect2">
+<h3 id="_putchar">7.1. putchar</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+putchar(char c)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Delivers a single character to the current console
+device.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_getchar">7.2. getchar</h3>
+<div class="literalblock">
+<div class="content">
+<pre>char
+getchar(void)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Reads a single character from any of the available
 console devices. The current console device is set to
 that which delivered this character. This blocks until
-a character is available.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_flush"></a>7.3. flush</h2></div></div></div><pre class="literallayout">void
-flush(void)</pre><p>Flushes the current console device output buffer. Any
-pending characters will be delivered to the target device.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_add_stdio"></a>7.4. ao_add_stdio</h2></div></div></div><pre class="literallayout">void
+a character is available.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_flush">7.3. flush</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+flush(void)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Flushes the current console device output buffer. Any
+pending characters will be delivered to the target device.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_add_stdio">7.4. ao_add_stdio</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
 ao_add_stdio(char (*pollchar)(void),
 void (*putchar)(char),
-void (*flush)(void))</pre><p>This adds another console device to the available
-list.</p><p><span class="emphasis"><em>pollchar</em></span> returns either an available character or
+void (*flush)(void))</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This adds another console device to the available
+list.</p>
+</div>
+<div class="paragraph">
+<p>'pollchar' returns either an available character or
 AO_READ_AGAIN if none is available. Significantly, it does
-not block. The device driver must set <span class="emphasis"><em>ao_stdin_ready</em></span> to
+not block. The device driver must set 'ao_stdin_ready' to
 1 and call ao_wakeup(&amp;ao_stdin_ready) when it receives
 input to tell getchar that more data is available, at
-which point <span class="emphasis"><em>pollchar</em></span> will be called again.</p><p><span class="emphasis"><em>putchar</em></span> queues a character for output, flushing if the output buffer is
-full. It may block in this case.</p><p><span class="emphasis"><em>flush</em></span> forces the output buffer to be flushed. It may
+which point 'pollchar' will be called again.</p>
+</div>
+<div class="paragraph">
+<p>'putchar' queues a character for output, flushing if the output buffer is
+full. It may block in this case.</p>
+</div>
+<div class="paragraph">
+<p>'flush' forces the output buffer to be flushed. It may
 block until the buffer is delivered, but it is not
-required to do so.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_command_line_interface"></a>Chapter 8. Command line interface</h1></div></div></div><p>AltOS includes a simple command line parser which is hooked up
+required to do so.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_command_line_interface">8. Command line interface</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>AltOS includes a simple command line parser which is hooked up
 to the stdio interfaces permitting remote control of the
 device over USB, serial or the RF link as desired. Each
 command uses a single character to invoke it, the remaining
 characters on the line are available as parameters to the
-command.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_cmd_register"></a>8.1. ao_cmd_register</h2></div></div></div><pre class="literallayout">void
-ao_cmd_register(__code struct ao_cmds *cmds)</pre><p>This registers a set of commands with the command
+command.</p>
+</div>
+<div class="sect2">
+<h3 id="_ao_cmd_register">8.1. ao_cmd_register</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_cmd_register(__code struct ao_cmds *cmds)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This registers a set of commands with the command
 parser. There is a fixed limit on the number of command
 sets, the system will panic if too many are registered.
-Each command is defined by a struct ao_cmds entry:</p><pre class="literallayout">struct ao_cmds {
-        char            cmd;
-        void            (*func)(void);
-        const char      *help;
-};</pre><p><span class="emphasis"><em>cmd</em></span> is the character naming the command. <span class="emphasis"><em>func</em></span> is the
-function to invoke and <span class="emphasis"><em>help</em></span> is a string displayed by the
-<span class="emphasis"><em>?</em></span> command. Syntax errors found while executing <span class="emphasis"><em>func</em></span>
+Each command is defined by a struct ao_cmds entry:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>struct ao_cmds {
+       char            cmd;
+       void            (*func)(void);
+       const char      *help;
+};</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>'cmd' is the character naming the command. 'func' is the
+function to invoke and 'help' is a string displayed by the
+'?' command. Syntax errors found while executing 'func'
 should be indicated by modifying the global ao_cmd_status
-variable with one of the following values:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-ao_cmd_success
-</span></dt><dd>
-The command was parsed successfully. There is no need
-to assign this value, it is the default.
-</dd><dt><span class="term">
-ao_cmd_lex_error
-</span></dt><dd>
-A token in the line was invalid, such as a number
+variable with one of the following values:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">ao_cmd_success</dt>
+<dd>
+<p>The command was parsed successfully. There is no need
+to assign this value, it is the default.</p>
+</dd>
+<dt class="hdlist1">ao_cmd_lex_error</dt>
+<dd>
+<p>A token in the line was invalid, such as a number
 containing invalid characters. The low-level lexing
-functions already assign this value as needed.
-</dd><dt><span class="term">
-ao_syntax_error
-</span></dt><dd>
-The command line is invalid for some reason other than
-invalid tokens.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_cmd_lex"></a>8.2. ao_cmd_lex</h2></div></div></div><pre class="literallayout">void
-ao_cmd_lex(void);</pre><p>This gets the next character out of the command line
+functions already assign this value as needed.</p>
+</dd>
+<dt class="hdlist1">ao_syntax_error</dt>
+<dd>
+<p>The command line is invalid for some reason other than
+invalid tokens.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_cmd_lex">8.2. ao_cmd_lex</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_cmd_lex(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This gets the next character out of the command line
 buffer and sticks it into ao_cmd_lex_c. At the end of
-the line, ao_cmd_lex_c will get a newline (<span class="emphasis"><em>\n</em></span>)
-character.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_cmd_put16"></a>8.3. ao_cmd_put16</h2></div></div></div><pre class="literallayout">void
-ao_cmd_put16(uint16_t v);</pre><p>Writes <span class="emphasis"><em>v</em></span> as four hexadecimal characters.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_cmd_put8"></a>8.4. ao_cmd_put8</h2></div></div></div><pre class="literallayout">void
-ao_cmd_put8(uint8_t v);</pre><p>Writes <span class="emphasis"><em>v</em></span> as two hexadecimal characters.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_cmd_white"></a>8.5. ao_cmd_white</h2></div></div></div><pre class="literallayout">void
-ao_cmd_white(void)</pre><p>This skips whitespace by calling ao_cmd_lex while
+the line, ao_cmd_lex_c will get a newline ('\n')
+character.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_cmd_put16">8.3. ao_cmd_put16</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_cmd_put16(uint16_t v);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Writes 'v' as four hexadecimal characters.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_cmd_put8">8.4. ao_cmd_put8</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_cmd_put8(uint8_t v);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Writes 'v' as two hexadecimal characters.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_cmd_white">8.5. ao_cmd_white</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_cmd_white(void)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This skips whitespace by calling ao_cmd_lex while
 ao_cmd_lex_c is either a space or tab. It does not
-skip any characters if ao_cmd_lex_c already non-white.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_cmd_hex"></a>8.6. ao_cmd_hex</h2></div></div></div><pre class="literallayout">void
-ao_cmd_hex(void)</pre><p>This reads a 16-bit hexadecimal value from the command
+skip any characters if ao_cmd_lex_c already non-white.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_cmd_hex">8.6. ao_cmd_hex</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_cmd_hex(void)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This reads a 16-bit hexadecimal value from the command
 line with optional leading whitespace. The resulting
-value is stored in ao_cmd_lex_i;</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_cmd_decimal"></a>8.7. ao_cmd_decimal</h2></div></div></div><pre class="literallayout">void
-ao_cmd_decimal(void)</pre><p>This reads a 32-bit decimal value from the command
+value is stored in ao_cmd_lex_i;</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_cmd_decimal">8.7. ao_cmd_decimal</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_cmd_decimal(void)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This reads a 32-bit decimal value from the command
 line with optional leading whitespace. The resulting
 value is stored in ao_cmd_lex_u32 and the low 16 bits
-are stored in ao_cmd_lex_i;</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_match_word"></a>8.8. ao_match_word</h2></div></div></div><pre class="literallayout">uint8_t
-ao_match_word(__code char *word)</pre><p>This checks to make sure that <span class="emphasis"><em>word</em></span> occurs on the
+are stored in ao_cmd_lex_i;</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_match_word">8.8. ao_match_word</h3>
+<div class="literalblock">
+<div class="content">
+<pre>uint8_t
+ao_match_word(__code char *word)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This checks to make sure that 'word' occurs on the
 command line. It does not skip leading white space. If
-<span class="emphasis"><em>word</em></span> is found, then 1 is returned. Otherwise,
+'word' is found, then 1 is returned. Otherwise,
 ao_cmd_status is set to ao_cmd_syntax_error and 0 is
-returned.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_cmd_init"></a>8.9. ao_cmd_init</h2></div></div></div><pre class="literallayout">void
-ao_cmd_init(void</pre><p>Initializes the command system, setting up the
+returned.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_cmd_init">8.9. ao_cmd_init</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_cmd_init(void</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Initializes the command system, setting up the
 built-in commands and adding a task to run the command
-processing loop. It should be called by <span class="emphasis"><em>main</em></span> before
-ao_start_scheduler.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_usb_target_device"></a>Chapter 9. USB target device</h1></div></div></div><p>AltOS contains a full-speed USB target device driver. It can
+processing loop. It should be called by 'main' before
+ao_start_scheduler.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_usb_target_device">9. USB target device</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>AltOS contains a full-speed USB target device driver. It can
 be programmed to offer any kind of USB target, but to simplify
 interactions with a variety of operating systems, AltOS
 provides only a single target device profile, that of a USB
 modem which has native drivers for Linux, Windows and Mac OS
 X. It would be easy to change the code to provide an alternate
-target device if necessary.</p><p>To the rest of the system, the USB device looks like a simple
+target device if necessary.</p>
+</div>
+<div class="paragraph">
+<p>To the rest of the system, the USB device looks like a simple
 two-way byte stream. It can be hooked into the command line
 interface if desired, offering control of the device over the
 USB link. Alternatively, the functions can be accessed
-directly to provide for USB-specific I/O.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_usb_flush"></a>9.1. ao_usb_flush</h2></div></div></div><pre class="literallayout">void
-ao_usb_flush(void);</pre><p>Flushes any pending USB output. This queues an <span class="emphasis"><em>IN</em></span>
+directly to provide for USB-specific I/O.</p>
+</div>
+<div class="sect2">
+<h3 id="_ao_usb_flush">9.1. ao_usb_flush</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_usb_flush(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Flushes any pending USB output. This queues an 'IN'
 packet to be delivered to the USB host if there is
 pending data, or if the last IN packet was full to
-indicate to the host that there isn’t any more pending
-data available.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_usb_putchar"></a>9.2. ao_usb_putchar</h2></div></div></div><pre class="literallayout">void
-ao_usb_putchar(char c);</pre><p>If there is a pending <span class="emphasis"><em>IN</em></span> packet awaiting delivery to
+indicate to the host that there isn&#8217;t any more pending
+data available.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_usb_putchar">9.2. ao_usb_putchar</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_usb_putchar(char c);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If there is a pending 'IN' packet awaiting delivery to
 the host, this blocks until that has been
 fetched. Then, this adds a byte to the pending IN
 packet for delivery to the USB host. If the USB packet
-is full, this queues the <span class="emphasis"><em>IN</em></span> packet for delivery.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_usb_pollchar"></a>9.3. ao_usb_pollchar</h2></div></div></div><pre class="literallayout">char
-ao_usb_pollchar(void);</pre><p>If there are no characters remaining in the last <span class="emphasis"><em>OUT</em></span>
+is full, this queues the 'IN' packet for delivery.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_usb_pollchar">9.3. ao_usb_pollchar</h3>
+<div class="literalblock">
+<div class="content">
+<pre>char
+ao_usb_pollchar(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If there are no characters remaining in the last 'OUT'
 packet received, this returns
 AO_READ_AGAIN. Otherwise, it returns the next
 character, reporting to the host that it is ready for
-more data when the last character is gone.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_usb_getchar"></a>9.4. ao_usb_getchar</h2></div></div></div><pre class="literallayout">char
-ao_usb_getchar(void);</pre><p>This uses ao_pollchar to receive the next character,
-blocking while ao_pollchar returns AO_READ_AGAIN.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_usb_disable"></a>9.5. ao_usb_disable</h2></div></div></div><pre class="literallayout">void
-ao_usb_disable(void);</pre><p>This turns off the USB controller. It will no longer
+more data when the last character is gone.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_usb_getchar">9.4. ao_usb_getchar</h3>
+<div class="literalblock">
+<div class="content">
+<pre>char
+ao_usb_getchar(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This uses ao_pollchar to receive the next character,
+blocking while ao_pollchar returns AO_READ_AGAIN.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_usb_disable">9.5. ao_usb_disable</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_usb_disable(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This turns off the USB controller. It will no longer
 respond to host requests, nor return
 characters. Calling any of the i/o routines while the
 USB device is disabled is undefined, and likely to
 break things. Disabling the USB device when not needed
-saves power.</p><p>Note that neither TeleDongle v0.2 nor TeleMetrum v1
+saves power.</p>
+</div>
+<div class="paragraph">
+<p>Note that neither TeleDongle v0.2 nor TeleMetrum v1
 are able to signal to the USB host that they have
-disconnected, so after disabling the USB device, its
+disconnected, so after disabling the USB device, it&#8217;s
 likely that the cable will need to be disconnected and
-reconnected before it will work again.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_usb_enable"></a>9.6. ao_usb_enable</h2></div></div></div><pre class="literallayout">void
-ao_usb_enable(void);</pre><p>This turns the USB controller on again after it has
+reconnected before it will work again.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_usb_enable">9.6. ao_usb_enable</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_usb_enable(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This turns the USB controller on again after it has
 been disabled. See the note above about needing to
 physically remove and re-insert the cable to get the
-host to re-initialize the USB link.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_usb_init"></a>9.7. ao_usb_init</h2></div></div></div><pre class="literallayout">void
-ao_usb_init(void);</pre><p>This turns the USB controller on, adds a task to
+host to re-initialize the USB link.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_usb_init">9.7. ao_usb_init</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_usb_init(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This turns the USB controller on, adds a task to
 handle the control end point and adds the usb I/O
 functions to the stdio system. Call this from main
-before ao_start_scheduler.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_serial_peripherals"></a>Chapter 10. Serial peripherals</h1></div></div></div><p>The CC1111 provides two USART peripherals. AltOS uses one for
+before ao_start_scheduler.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_serial_peripherals">10. Serial peripherals</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The CC1111 provides two USART peripherals. AltOS uses one for
 asynch serial data, generally to communicate with a GPS
 device, and the other for a SPI bus. The UART is configured to
 operate in 8-bits, no parity, 1 stop bit framing. The default
 configuration has clock settings for 4800, 9600 and 57600 baud
 operation. Additional speeds can be added by computing
-appropriate clock values.</p><p>To prevent loss of data, AltOS provides receive and transmit
-fifos of 32 characters each.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_serial_getchar"></a>10.1. ao_serial_getchar</h2></div></div></div><pre class="literallayout">char
-ao_serial_getchar(void);</pre><p>Returns the next character from the receive fifo, blocking
-until a character is received if the fifo is empty.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_serial_putchar"></a>10.2. ao_serial_putchar</h2></div></div></div><pre class="literallayout">void
-ao_serial_putchar(char c);</pre><p>Adds a character to the transmit fifo, blocking if the
-fifo is full. Starts transmitting characters.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_serial_drain"></a>10.3. ao_serial_drain</h2></div></div></div><pre class="literallayout">void
-ao_serial_drain(void);</pre><p>Blocks until the transmit fifo is empty. Used internally
-when changing serial speeds.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_serial_set_speed"></a>10.4. ao_serial_set_speed</h2></div></div></div><pre class="literallayout">void
-ao_serial_set_speed(uint8_t speed);</pre><p>Changes the serial baud rate to one of
+appropriate clock values.</p>
+</div>
+<div class="paragraph">
+<p>To prevent loss of data, AltOS provides receive and transmit
+fifos of 32 characters each.</p>
+</div>
+<div class="sect2">
+<h3 id="_ao_serial_getchar">10.1. ao_serial_getchar</h3>
+<div class="literalblock">
+<div class="content">
+<pre>char
+ao_serial_getchar(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Returns the next character from the receive fifo, blocking
+until a character is received if the fifo is empty.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_serial_putchar">10.2. ao_serial_putchar</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_serial_putchar(char c);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Adds a character to the transmit fifo, blocking if the
+fifo is full. Starts transmitting characters.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_serial_drain">10.3. ao_serial_drain</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_serial_drain(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Blocks until the transmit fifo is empty. Used internally
+when changing serial speeds.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_serial_set_speed">10.4. ao_serial_set_speed</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_serial_set_speed(uint8_t speed);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Changes the serial baud rate to one of
 AO_SERIAL_SPEED_4800, AO_SERIAL_SPEED_9600 or
 AO_SERIAL_SPEED_57600. This first flushes the transmit
-fifo using ao_serial_drain.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_serial_init"></a>10.5. ao_serial_init</h2></div></div></div><pre class="literallayout">void
-ao_serial_init(void)</pre><p>Initializes the serial peripheral. Call this from <span class="emphasis"><em>main</em></span>
+fifo using ao_serial_drain.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_serial_init">10.5. ao_serial_init</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_serial_init(void)</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Initializes the serial peripheral. Call this from 'main'
 before jumping to ao_start_scheduler. The default speed
-setting is AO_SERIAL_SPEED_4800.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_cc1111_cc1120_cc1200_radio_peripheral"></a>Chapter 11. CC1111/CC1120/CC1200 Radio peripheral</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_radio_introduction"></a>11.1. Radio Introduction</h2></div></div></div><p>The CC1111, CC1120 and CC1200 radio transceiver sends
+setting is AO_SERIAL_SPEED_4800.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_cc1111cc1120cc1200_radio_peripheral">11. CC1111/CC1120/CC1200 Radio peripheral</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_radio_introduction">11.1. Radio Introduction</h3>
+<div class="paragraph">
+<p>The CC1111, CC1120 and CC1200 radio transceiver sends
 and receives digital packets with forward error
 correction and detection. The AltOS driver is fairly
 specific to the needs of the TeleMetrum and TeleDongle
 devices, using it for other tasks may require
 customization of the driver itself. There are three
-basic modes of operation:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Telemetry mode. In this mode, TeleMetrum transmits telemetry
+basic modes of operation:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Telemetry mode. In this mode, TeleMetrum transmits telemetry
 frames at a fixed rate. The frames are of fixed size. This
 is strictly a one-way communication from TeleMetrum to
-TeleDongle.
-</li><li class="listitem">
-Packet mode. In this mode, the radio is used to create a
+TeleDongle.</p>
+</li>
+<li>
+<p>Packet mode. In this mode, the radio is used to create a
 reliable duplex byte stream between TeleDongle and
 TeleMetrum. This is an asymmetrical protocol with
 TeleMetrum only transmitting in response to a packet sent
@@ -556,80 +1618,298 @@ from TeleDongle. Thus getting data from TeleMetrum to
 TeleDongle requires polling. The polling rate is adaptive,
 when no data has been received for a while, the rate slows
 down. The packets are checked at both ends and invalid data
-are ignored.
-</li></ol></div><p>On the TeleMetrum side, the packet link is hooked into the
+are ignored.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>On the TeleMetrum side, the packet link is hooked into the
 stdio mechanism, providing an alternate data path for the
 command processor. It is enabled when the unit boots up in
-<span class="emphasis"><em>idle</em></span> mode.</p><p>On the TeleDongle side, the packet link is enabled with a
+'idle' mode.</p>
+</div>
+<div class="paragraph">
+<p>On the TeleDongle side, the packet link is enabled with a
 command; data from the stdio package is forwarded over the
 packet link providing a connection from the USB command
-stream to the remote TeleMetrum device.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Radio Direction Finding mode. In this mode, TeleMetrum
+stream to the remote TeleMetrum device.</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Radio Direction Finding mode. In this mode, TeleMetrum
 constructs a special packet that sounds like an audio tone
 when received by a conventional narrow-band FM
 receiver. This is designed to provide a beacon to track the
-device when other location mechanisms fail.
-</li></ol></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_radio_set_telemetry"></a>11.2. ao_radio_set_telemetry</h2></div></div></div><pre class="literallayout">void
-ao_radio_set_telemetry(void);</pre><p>Configures the radio to send or receive telemetry
+device when other location mechanisms fail.</p>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_radio_set_telemetry">11.2. ao_radio_set_telemetry</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_set_telemetry(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Configures the radio to send or receive telemetry
 packets. This includes packet length, modulation scheme and
 other RF parameters. It does not include the base frequency
 or channel though. Those are set at the time of transmission
-or reception, in case the values are changed by the user.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_radio_set_packet"></a>11.3. ao_radio_set_packet</h2></div></div></div><pre class="literallayout">void
-ao_radio_set_packet(void);</pre><p>Configures the radio to send or receive packet data.  This
+or reception, in case the values are changed by the user.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_radio_set_packet">11.3. ao_radio_set_packet</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_set_packet(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Configures the radio to send or receive packet data.  This
 includes packet length, modulation scheme and other RF
 parameters. It does not include the base frequency or
 channel though. Those are set at the time of transmission or
-reception, in case the values are changed by the user.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_radio_set_rdf"></a>11.4. ao_radio_set_rdf</h2></div></div></div><pre class="literallayout">void
-ao_radio_set_rdf(void);</pre><p>Configures the radio to send RDF <span class="emphasis"><em>packets</em></span>. An RDF <span class="emphasis"><em>packet</em></span>
+reception, in case the values are changed by the user.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_radio_set_rdf">11.4. ao_radio_set_rdf</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_set_rdf(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Configures the radio to send RDF 'packets'. An RDF 'packet'
 is a sequence of hex 0x55 bytes sent at a base bit rate of
 2kbps using a 5kHz deviation. All of the error correction
 and data whitening logic is turned off so that the resulting
 modulation is received as a 1kHz tone by a conventional 70cm
-FM audio receiver.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_radio_idle"></a>11.5. ao_radio_idle</h2></div></div></div><pre class="literallayout">void
-ao_radio_idle(void);</pre><p>Sets the radio device to idle mode, waiting until it reaches
+FM audio receiver.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_radio_idle">11.5. ao_radio_idle</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_idle(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Sets the radio device to idle mode, waiting until it reaches
 that state. This will terminate any in-progress transmit or
-receive operation.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_radio_get"></a>11.6. ao_radio_get</h2></div></div></div><pre class="literallayout">void
-ao_radio_get(void);</pre><p>Acquires the radio mutex and then configures the radio
+receive operation.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_radio_get">11.6. ao_radio_get</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_get(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Acquires the radio mutex and then configures the radio
 frequency using the global radio calibration and channel
-values.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_radio_put"></a>11.7. ao_radio_put</h2></div></div></div><pre class="literallayout">void
-ao_radio_put(void);</pre><p>Releases the radio mutex.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ao_radio_abort"></a>11.8. ao_radio_abort</h2></div></div></div><pre class="literallayout">void
-ao_radio_abort(void);</pre><p>Aborts any transmission or reception process by aborting the
+values.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_radio_put">11.7. ao_radio_put</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_put(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Releases the radio mutex.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ao_radio_abort">11.8. ao_radio_abort</h3>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_abort(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Aborts any transmission or reception process by aborting the
 associated DMA object and calling ao_radio_idle to terminate
-the radio operation.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_radio_telemetry"></a>11.9. Radio Telemetry</h2></div></div></div><p>In telemetry mode, you can send or receive a telemetry
+the radio operation.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_radio_telemetry">11.9. Radio Telemetry</h3>
+<div class="paragraph">
+<p>In telemetry mode, you can send or receive a telemetry
 packet. The data from receiving a packet also includes the RSSI
 and status values supplied by the receiver. These are added
-after the telemetry data.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_radio_send"></a>11.9.1. ao_radio_send</h3></div></div></div><pre class="literallayout">void
-ao_radio_send(__xdata struct ao_telemetry *telemetry);</pre><p>This sends the specific telemetry packet, waiting for the
+after the telemetry data.</p>
+</div>
+<div class="sect3">
+<h4 id="_ao_radio_send">11.9.1. ao_radio_send</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_send(__xdata struct ao_telemetry *telemetry);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This sends the specific telemetry packet, waiting for the
 transmission to complete. The radio must have been set to
 telemetry mode. This function calls ao_radio_get() before
 sending, and ao_radio_put() afterwards, to correctly
-serialize access to the radio device.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_radio_recv"></a>11.9.2. ao_radio_recv</h3></div></div></div><pre class="literallayout">void
-ao_radio_recv(__xdata struct ao_radio_recv *radio);</pre><p>This blocks waiting for a telemetry packet to be received.
+serialize access to the radio device.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_radio_recv">11.9.2. ao_radio_recv</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_recv(__xdata struct ao_radio_recv *radio);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This blocks waiting for a telemetry packet to be received.
 The radio must have been set to telemetry mode. This
 function calls ao_radio_get() before receiving, and
 ao_radio_put() afterwards, to correctly serialize access
 to the radio device. This returns non-zero if a packet was
 received, or zero if the operation was aborted (from some
-other task calling ao_radio_abort()).</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_radio_direction_finding"></a>11.10. Radio Direction Finding</h2></div></div></div><p>In radio direction finding mode, there’s just one function to
-use</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_radio_rdf"></a>11.10.1. ao_radio_rdf</h3></div></div></div><pre class="literallayout">void
-ao_radio_rdf(int ms);</pre><p>This sends an RDF packet lasting for the specified amount
-of time. The maximum length is 1020 ms.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_radio_packet_mode"></a>11.11. Radio Packet Mode</h2></div></div></div><p>Packet mode is asymmetrical and is configured at compile time
+other task calling ao_radio_abort()).</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_radio_direction_finding">11.10. Radio Direction Finding</h3>
+<div class="paragraph">
+<p>In radio direction finding mode, there&#8217;s just one function to
+use</p>
+</div>
+<div class="sect3">
+<h4 id="_ao_radio_rdf">11.10.1. ao_radio_rdf</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_radio_rdf(int ms);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This sends an RDF packet lasting for the specified amount
+of time. The maximum length is 1020 ms.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_radio_packet_mode">11.11. Radio Packet Mode</h3>
+<div class="paragraph">
+<p>Packet mode is asymmetrical and is configured at compile time
 for either master or slave mode (but not both). The basic I/O
 functions look the same at both ends, but the internals are
-different, along with the initialization steps.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_packet_putchar"></a>11.11.1. ao_packet_putchar</h3></div></div></div><pre class="literallayout">void
-ao_packet_putchar(char c);</pre><p>If the output queue is full, this first blocks waiting for
+different, along with the initialization steps.</p>
+</div>
+<div class="sect3">
+<h4 id="_ao_packet_putchar">11.11.1. ao_packet_putchar</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_packet_putchar(char c);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>If the output queue is full, this first blocks waiting for
 that data to be delivered. Then, queues a character for
 packet transmission. On the master side, this will
 transmit a packet if the output buffer is full. On the
 slave side, any pending data will be sent the next time
-the master polls for data.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_packet_pollchar"></a>11.11.2. ao_packet_pollchar</h3></div></div></div><pre class="literallayout">char
-ao_packet_pollchar(void);</pre><p>This returns a pending input character if available,
+the master polls for data.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_packet_pollchar">11.11.2. ao_packet_pollchar</h4>
+<div class="literalblock">
+<div class="content">
+<pre>char
+ao_packet_pollchar(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This returns a pending input character if available,
 otherwise returns AO_READ_AGAIN. On the master side, if
-this empties the buffer, it triggers a poll for more data.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_packet_slave_start"></a>11.11.3. ao_packet_slave_start</h3></div></div></div><pre class="literallayout">void
-ao_packet_slave_start(void);</pre><p>This is available only on the slave side and starts a task
-to listen for packet data.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_packet_slave_stop"></a>11.11.4. ao_packet_slave_stop</h3></div></div></div><pre class="literallayout">void
-ao_packet_slave_stop(void);</pre><p>Disables the packet slave task, stopping the radio receiver.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_packet_slave_init"></a>11.11.5. ao_packet_slave_init</h3></div></div></div><pre class="literallayout">void
-ao_packet_slave_init(void);</pre><p>Adds the packet stdio functions to the stdio package so
+this empties the buffer, it triggers a poll for more data.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_packet_slave_start">11.11.3. ao_packet_slave_start</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_packet_slave_start(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This is available only on the slave side and starts a task
+to listen for packet data.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_packet_slave_stop">11.11.4. ao_packet_slave_stop</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_packet_slave_stop(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Disables the packet slave task, stopping the radio receiver.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_packet_slave_init">11.11.5. ao_packet_slave_init</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_packet_slave_init(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Adds the packet stdio functions to the stdio package so
 that when packet slave mode is enabled, characters will
-get send and received through the stdio functions.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ao_packet_master_init"></a>11.11.6. ao_packet_master_init</h3></div></div></div><pre class="literallayout">void
-ao_packet_master_init(void);</pre><p>Adds the <span class="emphasis"><em>p</em></span> packet forward command to start packet mode.</p></div></div></div></div></body></html>
\ No newline at end of file
+get send and received through the stdio functions.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ao_packet_master_init">11.11.6. ao_packet_master_init</h4>
+<div class="literalblock">
+<div class="content">
+<pre>void
+ao_packet_master_init(void);</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Adds the 'p' packet forward command to start packet mode.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2019-01-03 00:31:55 -0700
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
index 26411ba7325fad363ee70160034b3fa2a8e1c78d..19ed050abe99367d13dfd24518a01a5b0c85a753 100644 (file)
Binary files a/AltOS/doc/altos.pdf and b/AltOS/doc/altos.pdf differ
index 8f5fccfbfd4fce7166c97c1925bec207b7306c12..eb3f0f7d1532f7b333dce81b985d654a2a7bc4a5 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The Altus Metrum System</title><link rel="stylesheet" type="text/css" href="am.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /></head><body><div xml:lang="en" class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="idm1"></a>The Altus Metrum System</h1></div><div><h2 class="subtitle">An Owner's Manual for Altus Metrum Rocketry Electronics</h2></div><div><h3 class="corpauthor">
-  <span class="inlinemediaobject"><img src="altusmetrum-oneline.svg" width="360" /></span>
-</h3></div><div><div class="author"><h3 class="author"><span class="firstname">Bdale</span> <span class="surname">Garbee</span></h3><code class="email">&lt;<a class="email" href="mailto:bdale@gag.com">bdale@gag.com</a>&gt;</code></div></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3><code class="email">&lt;<a class="email" href="mailto:keithp@keithp.com">keithp@keithp.com</a>&gt;</code></div></div><div><div class="author"><h3 class="author"><span class="firstname">Bob</span> <span class="surname">Finch</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Anthony</span> <span class="surname">Towns</span></h3></div></div><div><p class="copyright">Copyright © 2018 Bdale Garbee and Keith Packard</p></div><div><div class="legalnotice"><a id="idm29"></a><p>
-    This document is released under the terms of the
-    <a class="ulink" href="http://creativecommons.org/licenses/by-sa/3.0/" target="_top">
-      Creative Commons ShareAlike 3.0
-    </a>
-    license.
-  </p></div></div><div><a href="altusmetrum-revhistory.html">Revision History</a></div></div><hr /></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a id="_acknowledgments"></a>Acknowledgments</h1></div></div></div><p>Thanks to Bob Finch, W9YA, NAR 12965, TRA 12350 for writing “The
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<meta name="author" content="Keith Packard, Bdale Garbee, Bob Finch, Anthony Towns">
+<meta name="copyright" content="Bdale Garbee and Keith Packard 2018">
+<title>The Altus Metrum System: An Owner&#8217;s Manual for Altus Metrum Rocketry Electronics</title>
+<link rel="stylesheet" href="./am.css">
+</head>
+<body class="article">
+<div id="header">
+<h1>The Altus Metrum System: An Owner&#8217;s Manual for Altus Metrum Rocketry Electronics</h1>
+<div class="details">
+<span id="author" class="author">Keith Packard</span><br>
+<span id="email" class="email"><a href="mailto:keithp@keithp.com">keithp@keithp.com</a></span><br>
+<span id="author2" class="author">Bdale Garbee</span><br>
+<span id="email2" class="email"><a href="mailto:bdale@gag.com">bdale@gag.com</a></span><br>
+<span id="author3" class="author">Bob Finch</span><br>
+<span id="author4" class="author">Anthony Towns</span><br>
+<span id="revnumber">version v1.9,</span>
+<span id="revdate">31 Dec 2018</span>
+<br><span id="revremark">Add EasyMega v2.0 support</span>
+</div>
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_license">License</a></li>
+<li><a href="#_acknowledgments">Acknowledgments</a></li>
+<li><a href="#_introduction_and_overview">1. Introduction and Overview</a></li>
+<li><a href="#_getting_started">2. Getting Started</a>
+<ul class="sectlevel2">
+<li><a href="#_batteries">2.1. Batteries</a></li>
+<li><a href="#_ground_station_hardware">2.2. Ground Station Hardware</a></li>
+<li><a href="#_linuxmacwindows_ground_station_software">2.3. Linux/Mac/Windows Ground Station Software</a></li>
+<li><a href="#_android_ground_station_software">2.4. Android Ground Station Software</a></li>
+</ul>
+</li>
+<li><a href="#_using_altus_metrum_hardware">3. Using Altus Metrum Hardware</a>
+<ul class="sectlevel2">
+<li><a href="#_wiring_and_electrical_interference">3.1. Wiring and Electrical Interference</a></li>
+<li><a href="#_hooking_up_lithium_polymer_batteries">3.2. Hooking Up Lithium Polymer Batteries</a></li>
+<li><a href="#_hooking_up_pyro_charges">3.3. Hooking Up Pyro Charges</a></li>
+<li><a href="#_hooking_up_a_power_switch">3.4. Hooking Up a Power Switch</a></li>
+<li><a href="#_understanding_beeps">3.5. Understanding Beeps</a></li>
+<li><a href="#_turning_on_the_power">3.6. Turning On the Power</a></li>
+<li><a href="#_using_an_external_active_switch_circuit">3.7. Using an External Active Switch Circuit</a></li>
+<li><a href="#_using_a_separate_pyro_battery">3.8. Using a Separate Pyro Battery</a></li>
+<li><a href="#_using_a_different_kind_of_battery">3.9. Using a Different Kind of Battery</a></li>
+<li><a href="#_using_packet_link_mode">3.10. Using Packet Link Mode</a></li>
+</ul>
+</li>
+<li><a href="#_telemetrum">4. TeleMetrum</a>
+<ul class="sectlevel2">
+<li><a href="#_telemetrum_screw_terminals">4.1. TeleMetrum Screw Terminals</a></li>
+<li><a href="#_using_a_separate_pyro_battery_with_telemetrum">4.2. Using a Separate Pyro Battery with TeleMetrum</a></li>
+<li><a href="#_using_an_active_switch_with_telemetrum">4.3. Using an Active Switch with TeleMetrum</a></li>
+</ul>
+</li>
+<li><a href="#_telemini">5. TeleMini</a>
+<ul class="sectlevel2">
+<li><a href="#_telemini_v3_screw_terminals">5.1. TeleMini v3 Screw Terminals</a></li>
+<li><a href="#_using_a_separate_pyro_battery_with_telemini_v3">5.2. Using a Separate Pyro Battery with TeleMini v3</a></li>
+<li><a href="#_using_an_active_switch_with_telemini_v3">5.3. Using an Active Switch with TeleMini v3</a></li>
+<li><a href="#_using_packet_link_mode_with_telemini">5.4. Using Packet Link Mode with TeleMini</a></li>
+<li><a href="#_forcing_telemini_radio_parameters_to_known_defaults">5.5. Forcing TeleMini radio parameters to known defaults</a></li>
+<li><a href="#_telemini_v1">5.6. TeleMini v1</a></li>
+</ul>
+</li>
+<li><a href="#_easymini">6. EasyMini</a>
+<ul class="sectlevel2">
+<li><a href="#_easymini_screw_terminals">6.1. EasyMini Screw Terminals</a></li>
+<li><a href="#_connecting_a_battery_to_easymini">6.2. Connecting A Battery To EasyMini</a></li>
+<li><a href="#_charging_lithium_batteries">6.3. Charging Lithium Batteries</a></li>
+<li><a href="#_using_a_separate_pyro_battery_with_easymini">6.4. Using a Separate Pyro Battery with EasyMini</a></li>
+<li><a href="#_using_an_active_switch_with_easymini">6.5. Using an Active Switch with EasyMini</a></li>
+</ul>
+</li>
+<li><a href="#_telemega">7. TeleMega</a>
+<ul class="sectlevel2">
+<li><a href="#_telemega_screw_terminals">7.1. TeleMega Screw Terminals</a></li>
+<li><a href="#_using_a_separate_pyro_battery_with_telemega">7.2. Using a Separate Pyro Battery with TeleMega</a></li>
+<li><a href="#_using_only_one_battery_with_telemega">7.3. Using Only One Battery With TeleMega</a></li>
+<li><a href="#_using_an_active_switch_with_telemega">7.4. Using an Active Switch with TeleMega</a></li>
+</ul>
+</li>
+<li><a href="#_easymega">8. EasyMega</a>
+<ul class="sectlevel2">
+<li><a href="#_easymega_screw_terminals">8.1. EasyMega Screw Terminals</a></li>
+<li><a href="#_using_a_separate_pyro_battery_with_easymega">8.2. Using a Separate Pyro Battery with EasyMega</a></li>
+<li><a href="#_using_only_one_battery_with_easymega">8.3. Using Only One Battery With EasyMega</a></li>
+<li><a href="#_using_an_active_switch_with_easymega">8.4. Using an Active Switch with EasyMega</a></li>
+</ul>
+</li>
+<li><a href="#_installation">9. Installation</a></li>
+<li><a href="#_using_altus_metrum_products">10. Using Altus Metrum Products</a>
+<ul class="sectlevel2">
+<li><a href="#_being_legal">10.1. Being Legal</a></li>
+<li><a href="#_in_the_rocket">10.2. In the Rocket</a></li>
+<li><a href="#_on_the_ground">10.3. On the Ground</a></li>
+<li><a href="#_data_analysis">10.4. Data Analysis</a></li>
+<li><a href="#_future_plans">10.5. Future Plans</a></li>
+</ul>
+</li>
+<li><a href="#_altosui">11. AltosUI</a>
+<ul class="sectlevel2">
+<li><a href="#_monitor_flight">11.1. Monitor Flight</a></li>
+<li><a href="#_save_flight_data">11.2. Save Flight Data</a></li>
+<li><a href="#_replay_flight">11.3. Replay Flight</a></li>
+<li><a href="#_graph_data">11.4. Graph Data</a></li>
+<li><a href="#_export_data">11.5. Export Data</a></li>
+<li><a href="#_configure_altimeter">11.6. Configure Altimeter</a></li>
+<li><a href="#_configure_altosui">11.7. Configure AltosUI</a></li>
+<li><a href="#_configure_groundstation">11.8. Configure Groundstation</a></li>
+<li><a href="#_flash_image">11.9. Flash Image</a></li>
+<li><a href="#_fire_igniter">11.10. Fire Igniter</a></li>
+<li><a href="#_scan_channels">11.11. Scan Channels</a></li>
+<li><a href="#_load_maps">11.12. Load Maps</a></li>
+<li><a href="#_monitor_idle">11.13. Monitor Idle</a></li>
+</ul>
+</li>
+<li><a href="#_altosdroid">12. AltosDroid</a>
+<ul class="sectlevel2">
+<li><a href="#_installing_altosdroid">12.1. Installing AltosDroid</a></li>
+<li><a href="#_charging_telebt_battery">12.2. Charging TeleBT Battery</a></li>
+<li><a href="#_connecting_to_telebt_over_bluetooth">12.3. Connecting to TeleBT over Bluetooth™</a></li>
+<li><a href="#_connecting_to_teledongle_or_telebt_over_usb">12.4. Connecting to TeleDongle or TeleBT over USB</a></li>
+<li><a href="#_altosdroid_menu">12.5. AltosDroid Menu</a></li>
+<li><a href="#_setup">12.6. Setup</a></li>
+<li><a href="#_idle_mode">12.7. Idle Mode</a></li>
+<li><a href="#_altosdroid_flight_monitoring">12.8. AltosDroid Flight Monitoring</a></li>
+<li><a href="#_pad">12.9. Pad</a></li>
+<li><a href="#_flight">12.10. Flight</a></li>
+<li><a href="#_recover">12.11. Recover</a></li>
+<li><a href="#_map_2">12.12. Map</a></li>
+<li><a href="#_downloading_flight_logs">12.13. Downloading Flight Logs</a></li>
+</ul>
+</li>
+<li><a href="#_system_operation">Appendix A: System Operation</a>
+<ul class="sectlevel2">
+<li><a href="#_firmware_modes">A.1. Firmware Modes</a></li>
+<li><a href="#_gps">A.2. GPS</a></li>
+<li><a href="#_controlling_an_altimeter_over_the_radio_link">A.3. Controlling An Altimeter Over The Radio Link</a></li>
+<li><a href="#_ground_testing">A.4. Ground Testing</a></li>
+<li><a href="#_radio_link">A.5. Radio Link</a></li>
+<li><a href="#_aprs">A.6. APRS</a></li>
+<li><a href="#_configurable_parameters">A.7. Configurable Parameters</a></li>
+</ul>
+</li>
+<li><a href="#_handling_precautions">Appendix B: Handling Precautions</a></li>
+<li><a href="#_updating_device_firmware">Appendix C: Updating Device Firmware</a>
+<ul class="sectlevel2">
+<li><a href="#_updating_telemega_telemetrum_v2_easymega_easymini_or_teledongle_v3_firmware">C.1. Updating TeleMega, TeleMetrum v2, EasyMega, EasyMini or TeleDongle v3 Firmware</a></li>
+<li><a href="#_pair_programming">C.2. Pair Programming</a></li>
+</ul>
+</li>
+<li><a href="#_flight_data_recording">Appendix D: Flight Data Recording</a></li>
+<li><a href="#_altus_metrum_hardware_specifications">Appendix E: Altus Metrum Hardware Specifications</a></li>
+<li><a href="#_release_notes">Appendix F: Release Notes</a>
+<ul class="sectlevel2">
+<li><a href="#_release_notes_for_version_1_9">F.1. Release Notes for Version 1.9</a></li>
+<li><a href="#_release_notes_for_version_1_8_7">F.2. Release Notes for Version 1.8.7</a></li>
+<li><a href="#_release_notes_for_version_1_8_6">F.3. Release Notes for Version 1.8.6</a></li>
+<li><a href="#_release_notes_for_version_1_8_5">F.4. Release Notes for Version 1.8.5</a></li>
+<li><a href="#_release_notes_for_version_1_8_4">F.5. Release Notes for Version 1.8.4</a></li>
+<li><a href="#_release_notes_for_version_1_8_3">F.6. Release Notes for Version 1.8.3</a></li>
+<li><a href="#_release_notes_for_version_1_8_2">F.7. Release Notes for Version 1.8.2</a></li>
+<li><a href="#_release_notes_for_version_1_8_1">F.8. Release Notes for Version 1.8.1</a></li>
+<li><a href="#_release_notes_for_version_1_8">F.9. Release Notes for Version 1.8</a></li>
+<li><a href="#_release_notes_for_version_1_7">F.10. Release Notes for Version 1.7</a></li>
+<li><a href="#_release_notes_for_version_1_6_8">F.11. Release Notes for Version 1.6.8</a></li>
+<li><a href="#_release_notes_for_version_1_6_5">F.12. Release Notes for Version 1.6.5</a></li>
+<li><a href="#_release_notes_for_version_1_6_4">F.13. Release Notes for Version 1.6.4</a></li>
+<li><a href="#_release_notes_for_version_1_6_3">F.14. Release Notes for Version 1.6.3</a></li>
+<li><a href="#_release_notes_for_version_1_6_2">F.15. Release Notes for Version 1.6.2</a></li>
+<li><a href="#_release_notes_for_version_1_6_1">F.16. Release Notes for Version 1.6.1</a></li>
+<li><a href="#_release_notes_for_version_1_6">F.17. Release Notes for Version 1.6</a></li>
+<li><a href="#_release_notes_for_version_1_5">F.18. Release Notes for Version 1.5</a></li>
+<li><a href="#_release_notes_for_version_1_4_2">F.19. Release Notes for Version 1.4.2</a></li>
+<li><a href="#_release_notes_for_version_1_4_1">F.20. Release Notes for Version 1.4.1</a></li>
+<li><a href="#_release_notes_for_version_1_4">F.21. Release Notes for Version 1.4</a></li>
+<li><a href="#_release_notes_for_version_1_3_2">F.22. Release Notes for Version 1.3.2</a></li>
+<li><a href="#_release_notes_for_version_1_3_1">F.23. Release Notes for Version 1.3.1</a></li>
+<li><a href="#_release_notes_for_version_1_3">F.24. Release Notes for Version 1.3</a></li>
+<li><a href="#_release_notes_for_version_1_2_1">F.25. Release Notes for Version 1.2.1</a></li>
+<li><a href="#_release_notes_for_version_1_2">F.26. Release Notes for Version 1.2</a></li>
+<li><a href="#_release_notes_for_version_1_1">F.27. Release Notes for Version 1.1</a></li>
+<li><a href="#_release_notes_for_version_1_1_2">F.28. Release Notes for Version 1.1</a></li>
+<li><a href="#_release_notes_for_version_1_0_1">F.29. Release Notes for Version 1.0.1</a></li>
+<li><a href="#_release_notes_for_version_0_9_2">F.30. Release Notes for Version 0.9.2</a></li>
+<li><a href="#_release_notes_for_version_0_9">F.31. Release Notes for Version 0.9</a></li>
+<li><a href="#_release_notes_for_version_0_8">F.32. Release Notes for Version 0.8</a></li>
+<li><a href="#_release_notes_for_version_0_7_1">F.33. Release Notes for Version 0.7.1</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div id="logo" class="imageblock">
+<div class="content">
+<a class="image" href="https://altusmetrum.org"><img src="altusmetrum-oneline.svg" alt="Altus Metrum"></a>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_license">License</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright © 2018 Bdale Garbee and Keith Packard</p>
+</div>
+<div class="paragraph">
+<p>This document is released under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons ShareAlike 3.0 License</a></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_acknowledgments">Acknowledgments</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Thanks to Bob Finch, W9YA, NAR 12965, TRA 12350 for writing “The
 Mere-Mortals Quick Start/Usage Guide to the Altus Metrum Starter
 Kit” which formed the basis of the original Getting Started chapter
 in this manual.  Bob was one of our first customers for a production
 TeleMetrum, and his continued enthusiasm and contributions
-are immensely gratifying and highly appreciated!</p><p>And thanks to Anthony (AJ) Towns for major contributions including
+are immensely gratifying and highly appreciated!</p>
+</div>
+<div class="paragraph">
+<p>And thanks to Anthony (AJ) Towns for major contributions including
 the AltosUI graphing and site map code and associated documentation.
 Free software means that our customers and friends can become our
 collaborators, and we certainly appreciate this level of
-contribution!</p><p>Have fun using these products, and we hope to meet all of you
-out on the rocket flight line somewhere.</p><div class="blockquote"><blockquote class="blockquote"><div class="literallayout"><p>Bdale Garbee, KB0G<br />
-NAR #87103, TRA #12201</p></div></blockquote></div><div class="blockquote"><blockquote class="blockquote"><div class="literallayout"><p>Keith Packard, KD7SQG<br />
-NAR #88757, TRA #12200</p></div></blockquote></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="#_introduction_and_overview">1. Introduction and Overview</a></span></dt><dt><span class="chapter"><a href="#_getting_started">2. Getting Started</a></span></dt><dd><dl><dt><span class="section"><a href="#_batteries">2.1. Batteries</a></span></dt><dt><span class="section"><a href="#_ground_station_hardware">2.2. Ground Station Hardware</a></span></dt><dt><span class="section"><a href="#_linux_mac_windows_ground_station_software">2.3. Linux/Mac/Windows Ground Station Software</a></span></dt><dt><span class="section"><a href="#_android_ground_station_software">2.4. Android Ground Station Software</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_using_altus_metrum_hardware">3. Using Altus Metrum Hardware</a></span></dt><dd><dl><dt><span class="section"><a href="#_wiring_and_electrical_interference">3.1. Wiring and Electrical Interference</a></span></dt><dt><span class="section"><a href="#_hooking_up_lithium_polymer_batteries">3.2. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#_hooking_up_pyro_charges">3.3. Hooking Up Pyro Charges</a></span></dt><dt><span class="section"><a href="#_hooking_up_a_power_switch">3.4. Hooking Up a Power Switch</a></span></dt><dt><span class="section"><a href="#_understanding_beeps">3.5. Understanding Beeps</a></span></dt><dt><span class="section"><a href="#_turning_on_the_power">3.6. Turning On the Power</a></span></dt><dt><span class="section"><a href="#_using_an_external_active_switch_circuit">3.7. Using an External Active Switch Circuit</a></span></dt><dt><span class="section"><a href="#_using_a_separate_pyro_battery">3.8. Using a Separate Pyro Battery</a></span></dt><dt><span class="section"><a href="#_using_a_different_kind_of_battery">3.9. Using a Different Kind of Battery</a></span></dt><dt><span class="section"><a href="#_using_packet_link_mode">3.10. Using Packet Link Mode</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_telemetrum">4. TeleMetrum</a></span></dt><dd><dl><dt><span class="section"><a href="#_telemetrum_screw_terminals">4.1. TeleMetrum Screw Terminals</a></span></dt><dt><span class="section"><a href="#_using_a_separate_pyro_battery_with_telemetrum">4.2. Using a Separate Pyro Battery with TeleMetrum</a></span></dt><dt><span class="section"><a href="#_using_an_active_switch_with_telemetrum">4.3. Using an Active Switch with TeleMetrum</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_telemini">5. TeleMini</a></span></dt><dd><dl><dt><span class="section"><a href="#_telemini_v3_screw_terminals">5.1. TeleMini v3 Screw Terminals</a></span></dt><dt><span class="section"><a href="#_using_a_separate_pyro_battery_with_telemini_v3">5.2. Using a Separate Pyro Battery with TeleMini v3</a></span></dt><dt><span class="section"><a href="#_using_an_active_switch_with_telemini_v3">5.3. Using an Active Switch with TeleMini v3</a></span></dt><dt><span class="section"><a href="#_using_packet_link_mode_with_telemini">5.4. Using Packet Link Mode with TeleMini</a></span></dt><dt><span class="section"><a href="#_forcing_telemini_radio_parameters_to_known_defaults">5.5. Forcing TeleMini radio parameters to known defaults</a></span></dt><dt><span class="section"><a href="#_telemini_v1">5.6. TeleMini v1</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_easymini">6. EasyMini</a></span></dt><dd><dl><dt><span class="section"><a href="#_easymini_screw_terminals">6.1. EasyMini Screw Terminals</a></span></dt><dt><span class="section"><a href="#_connecting_a_battery_to_easymini">6.2. Connecting A Battery To EasyMini</a></span></dt><dt><span class="section"><a href="#_charging_lithium_batteries">6.3. Charging Lithium Batteries</a></span></dt><dt><span class="section"><a href="#_using_a_separate_pyro_battery_with_easymini">6.4. Using a Separate Pyro Battery with EasyMini</a></span></dt><dt><span class="section"><a href="#_using_an_active_switch_with_easymini">6.5. Using an Active Switch with EasyMini</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_telemega">7. TeleMega</a></span></dt><dd><dl><dt><span class="section"><a href="#_telemega_screw_terminals">7.1. TeleMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#_using_a_separate_pyro_battery_with_telemega">7.2. Using a Separate Pyro Battery with TeleMega</a></span></dt><dt><span class="section"><a href="#_using_only_one_battery_with_telemega">7.3. Using Only One Battery With TeleMega</a></span></dt><dt><span class="section"><a href="#_using_an_active_switch_with_telemega">7.4. Using an Active Switch with TeleMega</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_easymega">8. EasyMega</a></span></dt><dd><dl><dt><span class="section"><a href="#_easymega_screw_terminals">8.1. EasyMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#_using_a_separate_pyro_battery_with_easymega">8.2. Using a Separate Pyro Battery with EasyMega</a></span></dt><dt><span class="section"><a href="#_using_only_one_battery_with_easymega">8.3. Using Only One Battery With EasyMega</a></span></dt><dt><span class="section"><a href="#_using_an_active_switch_with_easymega">8.4. Using an Active Switch with EasyMega</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_installation">9. Installation</a></span></dt><dt><span class="chapter"><a href="#_using_altus_metrum_products">10. Using Altus Metrum Products</a></span></dt><dd><dl><dt><span class="section"><a href="#_being_legal">10.1. Being Legal</a></span></dt><dt><span class="section"><a href="#_in_the_rocket">10.2. In the Rocket</a></span></dt><dt><span class="section"><a href="#_on_the_ground">10.3. On the Ground</a></span></dt><dt><span class="section"><a href="#_data_analysis">10.4. Data Analysis</a></span></dt><dt><span class="section"><a href="#_future_plans">10.5. Future Plans</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_altosui">11. AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#_monitor_flight">11.1. Monitor Flight</a></span></dt><dd><dl><dt><span class="section"><a href="#_launch_pad">11.1.1. Launch Pad</a></span></dt><dt><span class="section"><a href="#_ascent">11.1.2. Ascent</a></span></dt><dt><span class="section"><a href="#_descent">11.1.3. Descent</a></span></dt><dt><span class="section"><a href="#_landed">11.1.4. Landed</a></span></dt><dt><span class="section"><a href="#_table">11.1.5. Table</a></span></dt><dt><span class="section"><a href="#_site_map">11.1.6. Site Map</a></span></dt><dt><span class="section"><a href="#_igniter">11.1.7. Igniter</a></span></dt></dl></dd><dt><span class="section"><a href="#_save_flight_data">11.2. Save Flight Data</a></span></dt><dt><span class="section"><a href="#_replay_flight">11.3. Replay Flight</a></span></dt><dt><span class="section"><a href="#_graph_data">11.4. Graph Data</a></span></dt><dd><dl><dt><span class="section"><a href="#_flight_graph">11.4.1. Flight Graph</a></span></dt><dt><span class="section"><a href="#_configure_graph">11.4.2. Configure Graph</a></span></dt><dt><span class="section"><a href="#_flight_statistics">11.4.3. Flight Statistics</a></span></dt><dt><span class="section"><a href="#_map">11.4.4. Map</a></span></dt></dl></dd><dt><span class="section"><a href="#_export_data">11.5. Export Data</a></span></dt><dd><dl><dt><span class="section"><a href="#_comma_separated_value_format">11.5.1. Comma Separated Value Format</a></span></dt><dt><span class="section"><a href="#_keyhole_markup_language_for_google_earth">11.5.2. Keyhole Markup Language (for Google Earth)</a></span></dt></dl></dd><dt><span class="section"><a href="#_configure_altimeter">11.6. Configure Altimeter</a></span></dt><dd><dl><dt><span class="section"><a href="#_main_deploy_altitude">11.6.1. Main Deploy Altitude</a></span></dt><dt><span class="section"><a href="#_apogee_delay">11.6.2. Apogee Delay</a></span></dt><dt><span class="section"><a href="#_apogee_lockout">11.6.3. Apogee Lockout</a></span></dt><dt><span class="section"><a href="#_frequency">11.6.4. Frequency</a></span></dt><dt><span class="section"><a href="#_rf_calibration">11.6.5. RF Calibration</a></span></dt><dt><span class="section"><a href="#_telemetry_rdf_aprs_enable">11.6.6. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#_telemetry_baud_rate">11.6.7. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#_aprs_interval">11.6.8. APRS Interval</a></span></dt><dt><span class="section"><a href="#_aprs_ssid">11.6.9. APRS SSID</a></span></dt><dt><span class="section"><a href="#_aprs_format">11.6.10. APRS Format</a></span></dt><dt><span class="section"><a href="#_callsign">11.6.11. Callsign</a></span></dt><dt><span class="section"><a href="#_maximum_flight_log_size">11.6.12. Maximum Flight Log Size</a></span></dt><dt><span class="section"><a href="#_ignitor_firing_mode">11.6.13. Ignitor Firing Mode</a></span></dt><dt><span class="section"><a href="#_pad_orientation">11.6.14. Pad Orientation</a></span></dt><dt><span class="section"><a href="#_beeper_frequency">11.6.15. Beeper Frequency</a></span></dt><dt><span class="section"><a href="#_logging_trigger_motion">11.6.16. Logging Trigger Motion</a></span></dt><dt><span class="section"><a href="#_position_reporting_interval">11.6.17. Position Reporting Interval</a></span></dt><dt><span class="section"><a href="#_calibrate_accelerometer">11.6.18. Calibrate Accelerometer</a></span></dt><dt><span class="section"><a href="#_configure_pyro_channels">11.6.19. Configure Pyro Channels</a></span></dt></dl></dd><dt><span class="section"><a href="#_configure_altosui">11.7. Configure AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#_voice_settings">11.7.1. Voice Settings</a></span></dt><dt><span class="section"><a href="#_log_directory">11.7.2. Log Directory</a></span></dt><dt><span class="section"><a href="#_callsign_2">11.7.3. Callsign</a></span></dt><dt><span class="section"><a href="#_imperial_units">11.7.4. Imperial Units</a></span></dt><dt><span class="section"><a href="#_serial_debug">11.7.5. Serial Debug</a></span></dt><dt><span class="section"><a href="#_font_size">11.7.6. Font size</a></span></dt><dt><span class="section"><a href="#_look_amp_feel">11.7.7. Look &amp; feel</a></span></dt><dt><span class="section"><a href="#_menu_position">11.7.8. Menu position</a></span></dt><dt><span class="section"><a href="#_map_cache_size">11.7.9. Map Cache Size</a></span></dt><dt><span class="section"><a href="#_manage_frequencies">11.7.10. Manage Frequencies</a></span></dt></dl></dd><dt><span class="section"><a href="#_configure_groundstation">11.8. Configure Groundstation</a></span></dt><dd><dl><dt><span class="section"><a href="#_frequency_2">11.8.1. Frequency</a></span></dt><dt><span class="section"><a href="#_rf_calibration_2">11.8.2. RF Calibration</a></span></dt><dt><span class="section"><a href="#_telemetry_rate">11.8.3. Telemetry Rate</a></span></dt></dl></dd><dt><span class="section"><a href="#_flash_image">11.9. Flash Image</a></span></dt><dt><span class="section"><a href="#_fire_igniter">11.10. Fire Igniter</a></span></dt><dt><span class="section"><a href="#_scan_channels">11.11. Scan Channels</a></span></dt><dt><span class="section"><a href="#_load_maps">11.12. Load Maps</a></span></dt><dt><span class="section"><a href="#_monitor_idle">11.13. Monitor Idle</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_altosdroid">12. AltosDroid</a></span></dt><dd><dl><dt><span class="section"><a href="#_installing_altosdroid">12.1. Installing AltosDroid</a></span></dt><dt><span class="section"><a href="#_charging_telebt_battery">12.2. Charging TeleBT Battery</a></span></dt><dt><span class="section"><a href="#_connecting_to_telebt_over_bluetooth">12.3. Connecting to TeleBT over Bluetooth™</a></span></dt><dt><span class="section"><a href="#_connecting_to_teledongle_or_telebt_over_usb">12.4. Connecting to TeleDongle or TeleBT over USB</a></span></dt><dt><span class="section"><a href="#_altosdroid_menu">12.5. AltosDroid Menu</a></span></dt><dt><span class="section"><a href="#_setup">12.6. Setup</a></span></dt><dt><span class="section"><a href="#_idle_mode">12.7. Idle Mode</a></span></dt><dt><span class="section"><a href="#_altosdroid_flight_monitoring">12.8. AltosDroid Flight Monitoring</a></span></dt><dt><span class="section"><a href="#_pad">12.9. Pad</a></span></dt><dt><span class="section"><a href="#_flight">12.10. Flight</a></span></dt><dt><span class="section"><a href="#_recover">12.11. Recover</a></span></dt><dt><span class="section"><a href="#_map_2">12.12. Map</a></span></dt><dt><span class="section"><a href="#_downloading_flight_logs">12.13. Downloading Flight Logs</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_system_operation">A. System Operation</a></span></dt><dd><dl><dt><span class="section"><a href="#_firmware_modes">A.1. Firmware Modes</a></span></dt><dt><span class="section"><a href="#_gps">A.2. GPS</a></span></dt><dt><span class="section"><a href="#_controlling_an_altimeter_over_the_radio_link">A.3. Controlling An Altimeter Over The Radio Link</a></span></dt><dt><span class="section"><a href="#_ground_testing">A.4. Ground Testing</a></span></dt><dt><span class="section"><a href="#_radio_link">A.5. Radio Link</a></span></dt><dt><span class="section"><a href="#_aprs">A.6. APRS</a></span></dt><dt><span class="section"><a href="#_configurable_parameters">A.7. Configurable Parameters</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_handling_precautions">B. Handling Precautions</a></span></dt><dt><span class="appendix"><a href="#_updating_device_firmware">C. Updating Device Firmware</a></span></dt><dd><dl><dt><span class="section"><a href="#_updating_telemega_telemetrum_v2_easymega_easymini_or_teledongle_v3_firmware">C.1. Updating TeleMega, TeleMetrum v2, EasyMega, EasyMini or TeleDongle v3 Firmware</a></span></dt><dd><dl><dt><span class="section"><a href="#_recovering_from_self_flashing_failure">C.1.1. Recovering From Self-Flashing Failure</a></span></dt></dl></dd><dt><span class="section"><a href="#_pair_programming">C.2. Pair Programming</a></span></dt><dd><dl><dt><span class="section"><a href="#_updating_telemetrum_v1_x_firmware">C.2.1. Updating TeleMetrum v1.x Firmware</a></span></dt><dt><span class="section"><a href="#_updating_telemini_v1_0_firmware">C.2.2. Updating TeleMini v1.0 Firmware</a></span></dt><dt><span class="section"><a href="#_updating_teledongle_v0_2_firmware">C.2.3. Updating TeleDongle v0.2 Firmware</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="#_flight_data_recording">D. Flight Data Recording</a></span></dt><dt><span class="appendix"><a href="#_altus_metrum_hardware_specifications">E. Altus Metrum Hardware Specifications</a></span></dt><dt><span class="appendix"><a href="#_release_notes">F. Release Notes</a></span></dt><dd><dl><dt><span class="section"><a href="#_release_notes_for_version_1_8_7">F.1. Release Notes for Version 1.8.7</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos">F.1.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_micropeak">F.1.2. AltosUI, TeleGPS, MicroPeak</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_6">F.2. Release Notes for Version 1.8.6</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_2">F.2.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps">F.2.2. AltosUI, TeleGPS</a></span></dt><dt><span class="section"><a href="#_micropeak">F.2.3. MicroPeak</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_5">F.3. Release Notes for Version 1.8.5</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_3">F.3.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_2">F.3.2. AltosUI, TeleGPS</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_4">F.4. Release Notes for Version 1.8.4</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_4">F.4.1. AltOS</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_3">F.5. Release Notes for Version 1.8.3</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_5">F.5.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications">F.5.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_2">F.6. Release Notes for Version 1.8.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_6">F.6.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_2">F.6.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_1">F.7. Release Notes for Version 1.8.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_7">F.7.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_3">F.7.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8">F.8. Release Notes for Version 1.8</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_8">F.8.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_4">F.8.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_7">F.9. Release Notes for Version 1.7</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_9">F.9.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_5">F.9.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_8">F.10. Release Notes for Version 1.6.8</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_10">F.10.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_and_altosdroid_applications">F.10.2. AltosUI, TeleGPS and AltosDroid Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_5">F.11. Release Notes for Version 1.6.5</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_11">F.11.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_and_altosdroid_applications_2">F.11.2. AltosUI, TeleGPS and AltosDroid Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_4">F.12. Release Notes for Version 1.6.4</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_12">F.12.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_and_altosdroid_applications_3">F.12.2. AltosUI, TeleGPS and AltosDroid Applications</a></span></dt><dt><span class="section"><a href="#_documentation">F.12.3. Documentation</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_3">F.13. Release Notes for Version 1.6.3</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_13">F.13.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_6">F.13.2. AltosUI and TeleGPS Applications</a></span></dt><dt><span class="section"><a href="#_altosdroid_2">F.13.3. AltosDroid</a></span></dt><dt><span class="section"><a href="#_documentation_2">F.13.4. Documentation</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_2">F.14. Release Notes for Version 1.6.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_14">F.14.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_7">F.14.2. AltosUI and TeleGPS Applications</a></span></dt><dt><span class="section"><a href="#_documentation_3">F.14.3. Documentation</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_1">F.15. Release Notes for Version 1.6.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_15">F.15.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_8">F.15.2. AltosUI and TeleGPS Applications</a></span></dt><dt><span class="section"><a href="#_altosdroid_3">F.15.3. AltosDroid</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6">F.16. Release Notes for Version 1.6</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_16">F.16.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_9">F.16.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_5">F.17. Release Notes for Version 1.5</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_17">F.17.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_10">F.17.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_4_2">F.18. Release Notes for Version 1.4.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altosui_and_telegps_applications_11">F.18.1. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_4_1">F.19. Release Notes for Version 1.4.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altosui_and_telegps_applications_12">F.19.1. AltosUI and TeleGPS Applications:</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_4">F.20. Release Notes for Version 1.4</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_18">F.20.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_application">F.20.2. AltosUI Application</a></span></dt><dt><span class="section"><a href="#_telegps_application">F.20.3. TeleGPS Application</a></span></dt><dt><span class="section"><a href="#_documentation_4">F.20.4. Documentation</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_3_2">F.21. Release Notes for Version 1.3.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_19">F.21.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_application_2">F.21.2. AltosUI Application</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_3_1">F.22. Release Notes for Version 1.3.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_20">F.22.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_application_3">F.22.2. AltosUI Application</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_3">F.23. Release Notes for Version 1.3</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_21">F.23.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_application_4">F.23.2. AltosUI Application</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_2_1">F.24. Release Notes for Version 1.2.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_22">F.24.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_application_5">F.24.2. AltosUI Application</a></span></dt><dt><span class="section"><a href="#_altosdroid_4">F.24.3. AltosDroid</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_2">F.25. Release Notes for Version 1.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_23">F.25.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_micropeak_application">F.25.2. AltosUI and MicroPeak Application</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_1">F.26. Release Notes for Version 1.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_24">F.26.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_2">F.26.2. AltosUI</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_1_2">F.27. Release Notes for Version 1.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_25">F.27.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_3">F.27.2. AltosUI</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_0_1">F.28. Release Notes for Version 1.0.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_26">F.28.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_application_6">F.28.2. AltosUI Application</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_0_9_2">F.29. Release Notes for Version 0.9.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altosui_4">F.29.1. AltosUI</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_0_9">F.30. Release Notes for Version 0.9</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_27">F.30.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_application_7">F.30.2. AltosUI Application</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_0_8">F.31. Release Notes for Version 0.8</a></span></dt><dd><dl><dt><span class="section"><a href="#_altosui_application_8">F.31.1. AltosUI Application:</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_0_7_1">F.32. Release Notes for Version 0.7.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altosui_application_9">F.32.1. AltosUI Application</a></span></dt></dl></dd></dl></dd></dl></div><div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>4.1. <a href="#idm468">TeleMetrum v2 Board</a></dt><dt>4.2. <a href="#idm475">TeleMetrum v1 Board</a></dt><dt>5.1. <a href="#idm561">TeleMini v3 Board</a></dt><dt>5.2. <a href="#idm662">TeleMini v1 Board</a></dt><dt>6.1. <a href="#idm671">EasyMini Board</a></dt><dt>7.1. <a href="#idm773">TeleMega Board</a></dt><dt>8.1. <a href="#idm943">EasyMega Board</a></dt><dt>11.1. <a href="#idm1161">AltosUI Main Window</a></dt><dt>11.2. <a href="#idm1172">Device Selection Dialog</a></dt><dt>11.3. <a href="#idm1200">Monitor Flight Launch Pad View</a></dt><dt>11.4. <a href="#idm1240">Monitor Flight Ascent View</a></dt><dt>11.5. <a href="#idm1253">Monitor Flight Descent View</a></dt><dt>11.6. <a href="#idm1266">Monitor Flight Landed View</a></dt><dt>11.7. <a href="#idm1281">Monitor Flight Table View</a></dt><dt>11.8. <a href="#idm1291">Monitor Flight Site Map View</a></dt><dt>11.9. <a href="#idm1306">Monitor Flight Additional Igniter View</a></dt><dt>11.10. <a href="#idm1336">Flight Data Graph</a></dt><dt>11.11. <a href="#idm1347">Flight Graph Configuration</a></dt><dt>11.12. <a href="#idm1366">Flight Statistics</a></dt><dt>11.13. <a href="#idm1376">Flight Map</a></dt><dt>11.14. <a href="#idm1397">Altimeter Configuration</a></dt><dt>11.15. <a href="#idm1515">Additional Pyro Channel Configuration</a></dt><dt>11.16. <a href="#idm1595">Configure AltosUI Dialog</a></dt><dt>11.17. <a href="#idm1648">Configure Groundstation Dialog</a></dt><dt>11.18. <a href="#idm1688">Fire Igniter Window</a></dt><dt>11.19. <a href="#idm1707">Scan Channels Window</a></dt><dt>11.20. <a href="#idm1717">Load Maps Window</a></dt><dt>11.21. <a href="#idm1750">Monitor Idle Window</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>3.1. <a href="#idm226">AltOS Modes</a></dt><dt>3.2. <a href="#idm334">Pad/Idle Indications</a></dt><dt>3.3. <a href="#idm389">Pad Radio Indications</a></dt><dt>4.1. <a href="#idm495">TeleMetrum Screw Terminals</a></dt><dt>5.1. <a href="#idm578">TeleMini v3 Screw Terminals</a></dt><dt>6.1. <a href="#idm683">EasyMini Screw Terminals</a></dt><dt>7.1. <a href="#idm793">TeleMega Screw Terminals</a></dt><dt>8.1. <a href="#idm954">EasyMega Screw Terminals</a></dt><dt>A.1. <a href="#idm2086">Altus Metrum APRS Comments</a></dt><dt>D.1. <a href="#idm2337">Data Storage on Altus Metrum altimeters</a></dt><dt>E.1. <a href="#idm2432">Altus Metrum Flight Computer Electronics</a></dt><dt>E.2. <a href="#idm2659">Altus Metrum Flight Computer Mechanical Components</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_introduction_and_overview"></a>Chapter 1. Introduction and Overview</h1></div></div></div><p>Welcome to the Altus Metrum community!  Our circuits and software reflect
+contribution!</p>
+</div>
+<div class="paragraph">
+<p>Have fun using these products, and we hope to meet all of you
+out on the rocket flight line somewhere.</p>
+</div>
+<div class="verseblock">
+<pre class="content">Bdale Garbee, KB0G
+NAR #87103, TRA #12201</pre>
+</div>
+<div class="verseblock">
+<pre class="content">Keith Packard, KD7SQG
+NAR #88757, TRA #12200</pre>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_introduction_and_overview">1. Introduction and Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Welcome to the Altus Metrum community!  Our circuits and software reflect
 our passion for both hobby rocketry and Free Software.  We hope their
 capabilities and performance will delight you in every way, but by
 releasing all of our hardware and software designs under open licenses,
 we also hope to empower you to take as active a role in our collective
-future as you wish!</p><p>Our goal is to include in this document all of the information required
+future as you wish!</p>
+</div>
+<div class="paragraph">
+<p>Our goal is to include in this document all of the information required
 to successfully configure and use Altus Metrum products.  But
 documentation is a lot like software in that it can contain "bugs",
 and can probably always be improved!  If you have questions that
-arent answered in this manual, or just need a little help figuring
+aren&#8217;t answered in this manual, or just need a little help figuring
 things out, we strongly suggest joining the Altus Metrum user email
 list, which you can do by visiting
-<a class="ulink" href="https://lists.gag.com/mailman/listinfo/altusmetrum" target="_top">https://lists.gag.com/mailman/listinfo/altusmetrum</a>.  There’s a lot
-of useful information in the mailing list archives!</p><p>The first device created for our community was TeleMetrum, a dual
+<a href="https://lists.gag.com/mailman/listinfo/altusmetrum" class="bare">https://lists.gag.com/mailman/listinfo/altusmetrum</a>.  There&#8217;s a lot
+of useful information in the mailing list archives!</p>
+</div>
+<div class="paragraph">
+<p>The first device created for our community was TeleMetrum, a dual
 deploy altimeter with fully integrated GPS and radio telemetry
 as standard features, and a “companion interface” that will
 support optional capabilities in the future. The latest version
 of TeleMetrum, v2.0, has all of the same features but with
-improved sensors and radio to offer increased performance.</p><p>Our second device was TeleMini, a dual deploy altimeter with
+improved sensors and radio to offer increased performance.</p>
+</div>
+<div class="paragraph">
+<p>Our second device was TeleMini, a dual deploy altimeter with
 radio telemetry and radio direction finding. The first version
 of this device was only 13mm by 38mm (½ inch by 1½ inches) and
 could fit easily in an 18mm air-frame. The latest version, v3.0,
 includes a beeper, higher power radio, extended on-board
-flight logging and an improved barometric sensor.</p><p>TeleMega is our most sophisticated device, including six pyro
+flight logging and an improved barometric sensor.</p>
+</div>
+<div class="paragraph">
+<p>TeleMega is our most sophisticated device, including six pyro
 channels (four of which are fully programmable), integrated GPS,
 integrated gyroscopes for staging/air-start inhibit and high
-performance telemetry.</p><p>EasyMini is a dual-deploy altimeter with logging and built-in
-USB data download.</p><p>EasyMega is essentially a TeleMega board with the GPS receiver
+performance telemetry.</p>
+</div>
+<div class="paragraph">
+<p>EasyMini is a dual-deploy altimeter with logging and built-in
+USB data download.</p>
+</div>
+<div class="paragraph">
+<p>EasyMega is essentially a TeleMega board with the GPS receiver
 and telemetry transmitter removed. It offers the same 6 pyro
-channels and integrated gyroscopes for staging/air-start inhibit.</p><p>TeleDongle v0.2 was our first ground station, providing a USB to RF
+channels and integrated gyroscopes for staging/air-start inhibit.</p>
+</div>
+<div class="paragraph">
+<p>TeleDongle v0.2 was our first ground station, providing a USB to RF
 interfaces for communicating with the altimeters. Combined with
 your choice of antenna and notebook computer, TeleDongle and our
 associated user interface software form a complete ground
@@ -56,16 +313,35 @@ station capable of logging and displaying in-flight telemetry,
 aiding rocket recovery, then processing and archiving flight
 data for analysis and review. The latest version, TeleDongle
 v3, has all new electronics with a higher performance radio
-for improved range.</p><p>For a slightly more portable ground station experience that also
+for improved range.</p>
+</div>
+<div class="paragraph">
+<p>For a slightly more portable ground station experience that also
 provides direct rocket recovery support, TeleBT offers flight
 monitoring and data logging using a  Bluetooth™ connection between
 the receiver and an Android device that has the AltosDroid
-application installed from the Google Play store.</p><p>More products will be added to the Altus Metrum family over time, and
+application installed from the Google Play store.</p>
+</div>
+<div class="paragraph">
+<p>More products will be added to the Altus Metrum family over time, and
 we currently envision that this will be a single, comprehensive manual
-for the entire product family.</p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_getting_started"></a>Chapter 2. Getting Started</h1></div></div></div><p>The first thing to do after you open the box is to hook up a
-battery and charge it if necessary.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_batteries"></a>2.1. Batteries</h2></div></div></div><p>For TeleMetrum, TeleMega and EasyMega, the battery can be charged by plugging it into the
+for the entire product family.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_getting_started">2. Getting Started</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The first thing to do after you open the box is to hook up a
+battery and charge it if necessary.</p>
+</div>
+<div class="sect2">
+<h3 id="_batteries">2.1. Batteries</h3>
+<div class="paragraph">
+<p>For TeleMetrum, TeleMega and EasyMega, the battery can be charged by plugging it into the
 corresponding socket of the device and then using the USB
-cable to plug the flight computer into your computers USB socket. The
+cable to plug the flight computer into your computer&#8217;s USB socket. The
 on-board circuitry will charge the battery whenever it is plugged
 in, because the on-off switch does NOT control the
 charging circuitry.
@@ -73,29 +349,55 @@ The Lithium Polymer
 TeleMini and
 EasyMini battery can be charged by disconnecting it
 from the board and plugging it into a standalone
-battery charger such as <a class="ulink" href="http://altusmetrum.org/LipoCharger" target="_top">LipoCharger</a>, and
+battery charger such as <a href="http://altusmetrum.org/LipoCharger">LipoCharger</a>, and
 connecting that via a USB cable to a laptop or other
-USB power source.</p><p>You can also choose to use another battery with
+USB power source.</p>
+</div>
+<div class="paragraph">
+<p>You can also choose to use another battery with
 EasyMini, anything supplying between 4 and 12 volts should
 work fine (like a standard 9V battery), but if you are planning
 to fire pyro charges, ground testing is required to verify that
-the battery supplies enough current to fire your chosen e-matches.</p><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>On TeleMetrum v1 boards, when the GPS chip is initially
+the battery supplies enough current to fire your chosen e-matches.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<img src="./images/icons/note.svg" alt="Note">
+</td>
+<td class="content">
+<div class="paragraph">
+<p>On TeleMetrum v1 boards, when the GPS chip is initially
 searching for satellites, TeleMetrum will consume more current
 than it pulls from the USB port, so the battery must be
 attached in order to get satellite lock.  Once GPS is locked,
 the current consumption goes back down enough to enable charging
-while running. So its a good idea to fully charge the battery
+while running. So it&#8217;s a good idea to fully charge the battery
 as your first item of business so there is no issue getting and
 maintaining satellite lock.  The yellow charge indicator led
 will go out when the battery is nearly full and the charger goes
 to trickle charge. It can take several hours to fully recharge a
-deeply discharged battery.</p><p>TeleMetrum v2.0, TeleMega and EasyMega use a higher power battery charger,
+deeply discharged battery.</p>
+</div>
+<div class="paragraph">
+<p>TeleMetrum v2.0, TeleMega and EasyMega use a higher power battery charger,
 allowing them to charge the battery while running the board at
 maximum power. When the battery is charging, or when the board
 is consuming a lot of power, the red LED will be lit. When the
 battery is fully charged, the green LED will be lit. When the
 battery is damaged or missing, both LEDs will be lit, which
-appears yellow.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ground_station_hardware"></a>2.2. Ground Station Hardware</h2></div></div></div><p>There are two ground stations available, the TeleDongle USB to
+appears yellow.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ground_station_hardware">2.2. Ground Station Hardware</h3>
+<div class="paragraph">
+<p>There are two ground stations available, the TeleDongle USB to
 RF interface and the TeleBT Bluetooth/USB to RF interface.  If
 you plug either of these in to your Mac or Linux computer it should
 “just work”, showing up as a serial port device.  Windows systems need
@@ -104,7 +406,13 @@ existing USB modem driver will work.  We therefore recommend installing
 our software before plugging in TeleDongle if you are using a Windows
 computer.  If you are using an older version of Linux and are having
 problems, try moving to a fresher kernel (2.6.33 or
-newer).</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_linux_mac_windows_ground_station_software"></a>2.3. Linux/Mac/Windows Ground Station Software</h2></div></div></div><p>Next you should obtain and install the AltOS software.
+newer).</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_linuxmacwindows_ground_station_software">2.3. Linux/Mac/Windows Ground Station Software</h3>
+<div class="paragraph">
+<p>Next you should obtain and install the AltOS software.
 The AltOS distribution includes the AltosUI ground
 station program, current firmware images for all of
 the hardware, and a number of standalone utilities
@@ -112,122 +420,400 @@ that are rarely needed.  Pre-built binary packages are
 available for Linux, Microsoft Windows, Mac OSX. Full
 source code and build instructions are also
 available. The latest version may always be downloaded
-from <a class="ulink" href="http://altusmetrum.org/AltOS" target="_top">http://altusmetrum.org/AltOS</a></p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_android_ground_station_software"></a>2.4. Android Ground Station Software</h2></div></div></div><p>TeleBT can also connect to an Android device over
+from <a href="http://altusmetrum.org/AltOS" class="bare">http://altusmetrum.org/AltOS</a></p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_android_ground_station_software">2.4. Android Ground Station Software</h3>
+<div class="paragraph">
+<p>TeleBT can also connect to an Android device over
 BlueTooth or USB. The
-<a class="ulink" href="https://play.google.com/store/apps/details?id=org.altusmetrum.AltosDroid" target="_top">AltosDroid
+<a href="https://play.google.com/store/apps/details?id=org.altusmetrum.AltosDroid">AltosDroid
 Android application</a> is available from the
-<a class="ulink" href="https://play.google.com" target="_top">Google Play system</a>.</p><p>You don’t need a data plan to use AltosDroid, but
-without network access, you’ll want to download
+<a href="https://play.google.com">Google Play system</a>.</p>
+</div>
+<div class="paragraph">
+<p>You don&#8217;t need a data plan to use AltosDroid, but
+without network access, you&#8217;ll want to download
 offline map data before wandering away from the
-network.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_using_altus_metrum_hardware"></a>Chapter 3. Using Altus Metrum Hardware</h1></div></div></div><p>Here are general instructions for hooking up an Altus Metrum
+network.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_using_altus_metrum_hardware">3. Using Altus Metrum Hardware</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Here are general instructions for hooking up an Altus Metrum
 flight computer. Instructions specific to each model will be
-found in the section devoted to that model below.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_wiring_and_electrical_interference"></a>3.1. Wiring and Electrical Interference</h2></div></div></div><p>To prevent electrical interference from affecting the
-operation of the flight computer, it’s important to always
+found in the section devoted to that model below.</p>
+</div>
+<div class="sect2">
+<h3 id="_wiring_and_electrical_interference">3.1. Wiring and Electrical Interference</h3>
+<div class="paragraph">
+<p>To prevent electrical interference from affecting the
+operation of the flight computer, it&#8217;s important to always
 twist pairs of wires connected to the board. Twist the switch
 leads, the pyro leads and the battery leads. This reduces
-interference through a mechanism called common mode rejection.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_hooking_up_lithium_polymer_batteries"></a>3.2. Hooking Up Lithium Polymer Batteries</h2></div></div></div><p>All Altus Metrum flight computers have a two pin JST PH
+interference through a mechanism called common mode rejection.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_hooking_up_lithium_polymer_batteries">3.2. Hooking Up Lithium Polymer Batteries</h3>
+<div class="paragraph">
+<p>All Altus Metrum flight computers have a two pin JST PH
 series connector to connect up a single-cell Lithium Polymer
 cell (3.7V nominal). You can purchase matching batteries
 from the Altus Metrum store, or other vendors, or you can
 make your own. Pin 1 of the connector is positive, pin 2 is
 negative. Spark Fun sells a cable with the connector
 attached, which they call a
-<a class="ulink" href="https://www.sparkfun.com/products/9914" target="_top">JST Jumper 2 Wire Assembly</a></p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Many RC vendors also sell lithium polymer batteries with
+<a href="https://www.sparkfun.com/products/9914">JST Jumper 2 Wire Assembly</a></p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<img src="./images/icons/warning.svg" alt="Warning">
+</td>
+<td class="content">
+Many RC vendors also sell lithium polymer batteries with
 this same connector. All that we have found use the opposite
 polarity, and if you use them that way, you will damage or
-destroy the flight computer.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_hooking_up_pyro_charges"></a>3.3. Hooking Up Pyro Charges</h2></div></div></div><p>Altus Metrum flight computers always have two screws for
-each pyro charge. This means you shouldn’t need to put two
+destroy the flight computer.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_hooking_up_pyro_charges">3.3. Hooking Up Pyro Charges</h3>
+<div class="paragraph">
+<p>Altus Metrum flight computers always have two screws for
+each pyro charge. This means you shouldn&#8217;t need to put two
 wires into a screw terminal or connect leads from pyro
-charges together externally.</p><p>On the flight computer, one lead from each charge is hooked
+charges together externally.</p>
+</div>
+<div class="paragraph">
+<p>On the flight computer, one lead from each charge is hooked
 to the positive battery terminal through the power switch.
 The other lead is connected through the pyro circuit, which
 is connected to the negative battery terminal when the pyro
-circuit is fired.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_hooking_up_a_power_switch"></a>3.4. Hooking Up a Power Switch</h2></div></div></div><p>Altus Metrum flight computers need an external power switch
+circuit is fired.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_hooking_up_a_power_switch">3.4. Hooking Up a Power Switch</h3>
+<div class="paragraph">
+<p>Altus Metrum flight computers need an external power switch
 to turn them on. This disconnects both the computer and the
 pyro charges from the battery, preventing the charges from
 firing when in the Off position. The switch is in-line with
-the positive battery terminal.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_understanding_beeps"></a>3.5. Understanding Beeps</h2></div></div></div><p>Altus Metrum flight computers include a beeper to
+the positive battery terminal.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_understanding_beeps">3.5. Understanding Beeps</h3>
+<div class="paragraph">
+<p>Altus Metrum flight computers include a beeper to
 provide information about the state of the system.
-TeleMini doesnt have room for a beeper, so instead it
+TeleMini doesn&#8217;t have room for a beeper, so instead it
 uses an LED, which works the same, except for every
-beep is replaced with the flash of the LED.</p><p>Here’s a short summary of all of the modes and the
+beep is replaced with the flash of the LED.</p>
+</div>
+<div class="paragraph">
+<p>Here&#8217;s a short summary of all of the modes and the
 beeping
 (or flashing, in the case of TeleMini v1)
 that accompanies each mode. In the description of the
 beeping pattern, “dit” means a short beep while "dah"
 means a long beep (three times as long). “Brap” means
-a long dissonant tone.</p><div class="table"><a id="idm226"></a><p class="title"><strong>Table 3.1. AltOS Modes</strong></p><div class="table-contents"><table class="table" summary="AltOS Modes" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Mode Name</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Abbreviation</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Beeps</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Startup</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>S</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>battery voltage in decivolts</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Calibrating sensors, detecting orientation.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Idle</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>I</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Ready to accept commands over USB
-or radio link.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Pad</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>P</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dah dah dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Waiting for launch. Not listening for commands.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Boost</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dah dit dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Accelerating upwards.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Fast</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>F</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dit dah dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Decelerating, but moving faster than 200m/s.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Coast</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>C</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dah dit dah dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Decelerating, moving slower than 200m/s</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Drogue</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dah dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Descending after apogee. Above main height.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>M</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dah dah</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Descending. Below main height.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Landed</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>L</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dah dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Stable altitude for at least ten seconds.</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Sensor error</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>X</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>dah dit dit dah</p></td><td style="" align="left" valign="top"><p>Error detected during sensor calibration.</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Here’s a summary of all of the Pad and Idle mode
-indications. In Idle mode, you’ll hear one of these
+a long dissonant tone.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 1. AltOS Modes</caption>
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3335%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Mode Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abbreviation</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Beeps</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Startup</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">S</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">battery voltage in decivolts</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Calibrating sensors, detecting orientation.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Idle</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">I</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ready to accept commands over USB
+or radio link.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Pad</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">P</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dah dah dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Waiting for launch. Not listening for commands.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Boost</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dit dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Accelerating upwards.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Fast</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">F</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit dah dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Decelerating, but moving faster than 200m/s.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Coast</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dit dah dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Decelerating, moving slower than 200m/s</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Drogue</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Descending after apogee. Above main height.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">M</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dah</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Descending. Below main height.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Landed</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">L</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dah dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Stable altitude for at least ten seconds.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Sensor error</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">X</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dit dit dah</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Error detected during sensor calibration.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Here&#8217;s a summary of all of the Pad and Idle mode
+indications. In Idle mode, you&#8217;ll hear one of these
 just once after the two short dits indicating idle
 mode. In Pad mode, after the dit dah dah dit
-indicating Pad mode, you’ll hear these once every five
-seconds.</p><div class="table"><a id="idm334"></a><p class="title"><strong>Table 3.2. Pad/Idle Indications</strong></p><div class="table-contents"><table class="table" summary="Pad/Idle Indications" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Name           </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Beeps          </th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Neither</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>brap</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>No continuity detected on either apogee or main igniters.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Continuity detected only on apogee igniter.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Continuity detected only on main igniter.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Both</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Continuity detected on both igniters.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Storage Full</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>warble</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>On-board data logging storage is full. This will
+indicating Pad mode, you&#8217;ll hear these once every five
+seconds.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 2. Pad/Idle Indications</caption>
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Name</th>
+<th class="tableblock halign-left valign-top">Beeps</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Neither</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">brap</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">No continuity detected on either apogee or main igniters.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity detected only on apogee igniter.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity detected only on main igniter.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Both</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity detected on both igniters.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Storage Full</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">warble</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">On-board data logging storage is full. This will
 not prevent the flight computer from safely
 controlling the flight or transmitting telemetry
 signals, but no record of the flight will be
-stored in on-board flash.</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Additional Igniters</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>four very short beeps</p></td><td style="" align="left" valign="top"><p>Continuity indication for the four additional pyro
+stored in on-board flash.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Additional Igniters</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">four very short beeps</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity indication for the four additional pyro
 channels on TeleMega and EasyMega. One high tone for
 no continuity, one low tone for continuity. These are
 produced after the continuity indicators for the two
-primary igniter channels.</p></td></tr></tbody></table></div></div><br class="table-break" /><p>For devices with a radio transmitter, in addition to
+primary igniter channels.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>For devices with a radio transmitter, in addition to
 the digital and APRS telemetry signals, you can also
 receive audio tones with a standard amateur
 70cm FM receiver. While on the pad, you will hear
-igniter status once every five seconds.</p><div class="table"><a id="idm389"></a><p class="title"><strong>Table 3.3. Pad Radio Indications</strong></p><div class="table-contents"><table class="table" summary="Pad Radio Indications" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Name           </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Beeps          </th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Neither</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>½ second tone</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>No continuity detected on either apogee or main igniters.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Continuity detected only on apogee igniter.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Continuity detected only on main igniter.</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Both</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>dit dit dit</p></td><td style="" align="left" valign="top"><p>Continuity detected on both igniters.</p></td></tr></tbody></table></div></div><br class="table-break" /><p>During ascent, the tones will be muted to allow the
-telemetry data to consume the full radio bandwidth.</p><p>During descent and after landing, a ½ second tone will
+igniter status once every five seconds.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 3. Pad Radio Indications</caption>
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Name</th>
+<th class="tableblock halign-left valign-top">Beeps</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Neither</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">½ second tone</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">No continuity detected on either apogee or main igniters.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity detected only on apogee igniter.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity detected only on main igniter.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Both</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity detected on both igniters.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>During ascent, the tones will be muted to allow the
+telemetry data to consume the full radio bandwidth.</p>
+</div>
+<div class="paragraph">
+<p>During descent and after landing, a ½ second tone will
 be transmitted every five seconds. This can be used to
 find the rocket using RDF techniques when the signal
 is too weak to receive GPS information via telemetry
-or APRS.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_turning_on_the_power"></a>3.6. Turning On the Power</h2></div></div></div><p>Connect a battery and power switch and turn the switch
+or APRS.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_turning_on_the_power">3.6. Turning On the Power</h3>
+<div class="paragraph">
+<p>Connect a battery and power switch and turn the switch
 to "on". The flight computer will signal power on by
 reporting the battery voltage and then perform an internal self
-test and sensor calibration.</p><p>Once the self test and calibration are complete, there
+test and sensor calibration.</p>
+</div>
+<div class="paragraph">
+<p>Once the self test and calibration are complete, there
 are two modes that an Altus Metrum flight computer can
-operate in:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Flight/Pad
-</span></dt><dd>
-The flight computer is waiting to detect
+operate in:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Flight/Pad</dt>
+<dd>
+<p>The flight computer is waiting to detect
 launch and then fly the rocket. In this mode, the USB
 link is
 disabled, and the radio goes into transmit-only mode.
 The only way to get out of this
 mode is to power the flight computer down. See below for how to get the flight
-computer to come up in Flight/Pad mode at power on.
-</dd><dt><span class="term">
-Idle
-</span></dt><dd>
-The flight computer is ready to communicate over USB
+computer to come up in Flight/Pad mode at power on.</p>
+</dd>
+<dt class="hdlist1">Idle</dt>
+<dd>
+<p>The flight computer is ready to communicate over USB
 and in packet mode over the radio.
 You can configure
 the flight computer, download data or display
 the current state. See below for how to get the flight
-computer to come up in Idle mode at power on.
-</dd></dl></div><p>For flight computers with accelerometers (TeleMetrum,
+computer to come up in Idle mode at power on.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>For flight computers with accelerometers (TeleMetrum,
 EasyMega and TeleMega), the mode is selected by the
 orientation of the board during the self test
 interval. If the board is pointing upwards as if ready
 to fly, it will enter Flight/Pad mode. Otherwise, it will
-enter Idle mode.</p><p>For EasyMini, if the USB cable is connected to a
+enter Idle mode.</p>
+</div>
+<div class="paragraph">
+<p>For EasyMini, if the USB cable is connected to a
 computer, it will enter Idle mode. Otherwise, it will
-enter Flight/Pad mode.</p><p>For TeleMini v1.0, if a packet link is waiting to
+enter Flight/Pad mode.</p>
+</div>
+<div class="paragraph">
+<p>For TeleMini v1.0, if a packet link is waiting to
 connect when the device is powered on, it will enter
-Idle mode, otherwise it will enter Flight/Pad mode.</p><p>You can see in <a class="xref" href="#_understanding_beeps" title="3.5. Understanding Beeps">Section 3.5, “Understanding Beeps”</a>
-how to tell which mode the flight computer is in.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_an_external_active_switch_circuit"></a>3.7. Using an External Active Switch Circuit</h2></div></div></div><p>You can use an active switch circuit, such as the
+Idle mode, otherwise it will enter Flight/Pad mode.</p>
+</div>
+<div class="paragraph">
+<p>You can see in <a href="#_understanding_beeps">Understanding Beeps</a>
+how to tell which mode the flight computer is in.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_an_external_active_switch_circuit">3.7. Using an External Active Switch Circuit</h3>
+<div class="paragraph">
+<p>You can use an active switch circuit, such as the
 Featherweight Magnetic Switch, with any Altus Metrum
 flight computer. These require three connections, one to
 the battery, one to the positive power input on the flight
 computer and one to ground. Find instructions on how to
 hook these up for each flight computer below. Then follow
 the instructions that come with your active switch to
-connect it up.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_separate_pyro_battery"></a>3.8. Using a Separate Pyro Battery</h2></div></div></div><p>As mentioned above in <a class="xref" href="#_hooking_up_pyro_charges" title="3.3. Hooking Up Pyro Charges">Section 3.3, “Hooking Up Pyro Charges”</a>, one
+connect it up.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_a_separate_pyro_battery">3.8. Using a Separate Pyro Battery</h3>
+<div class="paragraph">
+<p>As mentioned above in <a href="#_hooking_up_pyro_charges">Hooking Up Pyro Charges</a>, one
 lead for each of the pyro charges is connected through
 the power switch directly to the positive battery
 terminal. The other lead is connected to the pyro
 circuit, which connects it to the negative battery
 terminal when the pyro circuit is fired. The pyro
 circuit on all of the flight computers is designed to
-handle up to 16V.</p><p>To use a separate pyro battery, connect the negative pyro
+handle up to 16V.</p>
+</div>
+<div class="paragraph">
+<p>To use a separate pyro battery, connect the negative pyro
 battery terminal to the flight computer ground terminal,
 the positive battery terminal to the igniter and the other
 igniter lead to the negative pyro terminal on the flight
@@ -235,29 +821,77 @@ computer. When the pyro channel fires, it will complete the
 circuit between the negative pyro terminal and the ground
 terminal, firing the igniter. Specific instructions on how
 to hook this up for each flight computer will be found
-in the section below for that flight computer.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_different_kind_of_battery"></a>3.9. Using a Different Kind of Battery</h2></div></div></div><p>EasyMini
+in the section below for that flight computer.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_a_different_kind_of_battery">3.9. Using a Different Kind of Battery</h3>
+<div class="paragraph">
+<p>EasyMini
 and TeleMini v2 are
 designed to use either a
 lithium polymer battery or any other battery producing
 between 4 and 12 volts, such as a rectangular 9V
-battery.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>TeleMega, EasyMega and TeleMetrum are only designed to
+battery.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<img src="./images/icons/warning.svg" alt="Warning">
+</td>
+<td class="content">
+TeleMega, EasyMega and TeleMetrum are only designed to
 operate off a single-cell Lithium Polymer battery and
 cannot be used with any other kind. Connecting a
 different kind of battery to any of these will destroy
-the board.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_packet_link_mode"></a>3.10. Using Packet Link Mode</h2></div></div></div><p>All AltusMetrum flight computers that have a radio can
+the board.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_packet_link_mode">3.10. Using Packet Link Mode</h3>
+<div class="paragraph">
+<p>All AltusMetrum flight computers that have a radio can
 communicate with the ground station software for
 configuration and other operations using the Packet
 Link mode. This uses radio communication instead of a
 USB cable. To set this up, the ground station software
 must be configured to the correct data rate, frequency
-and callsign.</p><p>You can monitor Packet Link mode from TeleBT or
+and callsign.</p>
+</div>
+<div class="paragraph">
+<p>You can monitor Packet Link mode from TeleBT or
 TeleDongle by watching the LEDs. Each time the device
 transmits, the red LED will flash. When the link is
 busy, or when the link is not working, the device will
 transmit 10 times per second, so the LED will flash
 rapidly. When the link is working and there is no data
 to send, the link will flash once per second, and the
-LED will flash more slowly.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_telemetrum"></a>Chapter 4. TeleMetrum</h1></div></div></div><div class="figure"><a id="idm468"></a><p class="title"><strong>Figure 4.1. TeleMetrum v2 Board</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telemetrum-v2.0-th.jpg" width="495" alt="telemetrum-v2.0-th.jpg" /></div></div></div><br class="figure-break" /><div class="figure"><a id="idm475"></a><p class="title"><strong>Figure 4.2. TeleMetrum v1 Board</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telemetrum-v1.1-thside.jpg" width="495" alt="telemetrum-v1.1-thside.jpg" /></div></div></div><br class="figure-break" /><p>TeleMetrum is a 1 inch by 2¾ inch circuit board.  It was designed to
+LED will flash more slowly.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_telemetrum">4. TeleMetrum</h2>
+<div class="sectionbody">
+<div class="imageblock">
+<div class="content">
+<img src="telemetrum-v2.0-th.jpg" alt="telemetrum v2.0 th" width="400">
+</div>
+<div class="title">Figure 1. TeleMetrum v2 Board</div>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="telemetrum-v1.1-thside.jpg" alt="telemetrum v1.1 thside" width="400">
+</div>
+<div class="title">Figure 2. TeleMetrum v1 Board</div>
+</div>
+<div class="paragraph">
+<p>TeleMetrum is a 1 inch by 2¾ inch circuit board.  It was designed to
 fit inside coupler for 29mm air-frame tubing, but using it in a tube that
 small in diameter may require some creativity in mounting and wiring
 to succeed!  The presence of an accelerometer means TeleMetrum should
@@ -266,35 +900,144 @@ wave UHF wire antenna should be on the nose-cone end of the board.  The
 antenna wire is about 7 inches long, and wiring for a power switch and
 the e-matches for apogee and main ejection charges depart from the
 fin can end of the board, meaning an ideal “simple” avionics
-bay for TeleMetrum should have at least 10 inches of interior length.</p><p>There are two generations of the TeleMetrum design. The
-major changes in the v2 generation are:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-uBlox GPS chip certified for altitude records
-</li><li class="listitem">
-Higher power radio (40mW vs 10mW)
-</li><li class="listitem">
-APRS support
-</li></ul></div><p>Otherwise, they’re the same size, with mounting holes and
-screw terminals in the same position.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_telemetrum_screw_terminals"></a>4.1. TeleMetrum Screw Terminals</h2></div></div></div><p>TeleMetrum has six screw terminals on the end of the board
+bay for TeleMetrum should have at least 10 inches of interior length.</p>
+</div>
+<div class="paragraph">
+<p>There are two generations of the TeleMetrum design. The
+major changes in the v2 generation are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>uBlox GPS chip certified for altitude records</p>
+</li>
+<li>
+<p>Higher power radio (40mW vs 10mW)</p>
+</li>
+<li>
+<p>APRS support</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Otherwise, they&#8217;re the same size, with mounting holes and
+screw terminals in the same position.</p>
+</div>
+<div class="sect2">
+<h3 id="_telemetrum_screw_terminals">4.1. TeleMetrum Screw Terminals</h3>
+<div class="paragraph">
+<p>TeleMetrum has six screw terminals on the end of the board
 opposite the telemetry antenna. Two are for the power
 switch, and two each for the apogee and main igniter
 circuits. Using the picture above and starting from the top,
-the terminals are as follows:</p><div class="table"><a id="idm495"></a><p class="title"><strong>Table 4.1. TeleMetrum Screw Terminals</strong></p><div class="table-contents"><table class="table" summary="TeleMetrum Screw Terminals" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal #</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal Name</th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch Output</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch connection to flight computer</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch Input</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch connection to positive battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main +</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee +</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Apogee -</p></td><td style="" align="left" valign="top"><p>Apogee pyro channel connection to pyro circuit</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_separate_pyro_battery_with_telemetrum"></a>4.2. Using a Separate Pyro Battery with TeleMetrum</h2></div></div></div><p>As described above, using an external pyro battery involves
+the terminals are as follows:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 4. TeleMetrum Screw Terminals</caption>
+<colgroup>
+<col style="width: 13.3333%;">
+<col style="width: 20%;">
+<col style="width: 66.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Terminal #</th>
+<th class="tableblock halign-left valign-top">Terminal Name</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Output</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to flight computer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Input</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to positive battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel connection to pyro circuit</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_using_a_separate_pyro_battery_with_telemetrum">4.2. Using a Separate Pyro Battery with TeleMetrum</h3>
+<div class="paragraph">
+<p>As described above, using an external pyro battery involves
 connecting the negative battery terminal to the flight
 computer ground, connecting the positive battery terminal to
 one of the igniter leads and connecting the other igniter
-lead to the per-channel pyro circuit connection.</p><p>To connect the negative battery terminal to the TeleMetrum
+lead to the per-channel pyro circuit connection.</p>
+</div>
+<div class="paragraph">
+<p>To connect the negative battery terminal to the TeleMetrum
 ground, insert a small piece of wire, 24 to 28 gauge
 stranded, into the GND hole just above the screw terminal
-strip and solder it in place.</p><p>Connecting the positive battery terminal to the pyro
+strip and solder it in place.</p>
+</div>
+<div class="paragraph">
+<p>Connecting the positive battery terminal to the pyro
 charges must be done separate from TeleMetrum, by soldering
-them together or using some other connector.</p><p>The other lead from each pyro charge is then inserted into
+them together or using some other connector.</p>
+</div>
+<div class="paragraph">
+<p>The other lead from each pyro charge is then inserted into
 the appropriate per-pyro channel screw terminal (terminal 4 for the
-Main charge, terminal 6 for the Apogee charge).</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_an_active_switch_with_telemetrum"></a>4.3. Using an Active Switch with TeleMetrum</h2></div></div></div><p>As explained above, an external active switch requires three
+Main charge, terminal 6 for the Apogee charge).</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_an_active_switch_with_telemetrum">4.3. Using an Active Switch with TeleMetrum</h3>
+<div class="paragraph">
+<p>As explained above, an external active switch requires three
 connections, one to the positive battery terminal, one to
-the flight computer positive input and one to ground.</p><p>The positive battery terminal is available on screw terminal
+the flight computer positive input and one to ground.</p>
+</div>
+<div class="paragraph">
+<p>The positive battery terminal is available on screw terminal
 2, the positive flight computer input is on terminal 1. To
 hook a lead to ground, solder a piece of wire, 24 to 28
-gauge stranded, to the GND hole just above terminal 1.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_telemini"></a>Chapter 5. TeleMini</h1></div></div></div><div class="figure"><a id="idm561"></a><p class="title"><strong>Figure 5.1. TeleMini v3 Board</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telemini-v3.0-top.jpg" width="495" alt="telemini-v3.0-top.jpg" /></div></div></div><br class="figure-break" /><div class="informalfigure"><div class="mediaobject"><img src="telemini-v3.0-bottom.jpg" width="495" alt="telemini-v3.0-bottom.jpg" /></div></div><p>TeleMini v3 is 0.5 inches by 1.67 inches.  It was
+gauge stranded, to the GND hole just above terminal 1.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_telemini">5. TeleMini</h2>
+<div class="sectionbody">
+<div class="imageblock">
+<div class="content">
+<img src="telemini-v3.0-top.jpg" alt="telemini v3.0 top" width="400">
+</div>
+<div class="title">Figure 3. TeleMini v3 Board</div>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="telemini-v3.0-bottom.jpg" alt="telemini v3.0 bottom" width="400">
+</div>
+</div>
+<div class="paragraph">
+<p>TeleMini v3 is 0.5 inches by 1.67 inches.  It was
 designed to fit inside an 18mm air-frame tube, but using it in
 a tube that small in diameter may require some creativity in
 mounting and wiring to succeed!  Since there is no
@@ -305,169 +1048,731 @@ terminals for the power switch are located in the
 middle of the board. Screw terminals for the e-matches for
 apogee and main ejection charges depart from the other end of
 the board, meaning an ideal “simple” avionics bay for TeleMini
-should have at least 9 inches of interior length.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_telemini_v3_screw_terminals"></a>5.1. TeleMini v3 Screw Terminals</h2></div></div></div><p>TeleMini v3 has four screw terminals on the end of the
+should have at least 9 inches of interior length.</p>
+</div>
+<div class="sect2">
+<h3 id="_telemini_v3_screw_terminals">5.1. TeleMini v3 Screw Terminals</h3>
+<div class="paragraph">
+<p>TeleMini v3 has four screw terminals on the end of the
 board opposite the telemetry antenna. Two are for the apogee
 and two are for main igniter circuits. Another two
 screw terminals are located in the middle of the board
 for the power switch.  Using the
 picture above and starting from the top for the pyro terminals
 and from the left for the power switch terminals, the
-connections are as follows:</p><div class="table"><a id="idm578"></a><p class="title"><strong>Table 5.1. TeleMini v3 Screw Terminals</strong></p><div class="table-contents"><table class="table" summary="TeleMini v3 Screw Terminals" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal #</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal Name</th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Left</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch Output</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch connection to flight computer</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Right</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Switch Input</p></td><td style="" align="left" valign="top"><p>Switch connection to positive battery terminal</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_separate_pyro_battery_with_telemini_v3"></a>5.2. Using a Separate Pyro Battery with TeleMini v3</h2></div></div></div><p>As described above, using an external pyro battery involves
+connections are as follows:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 5. TeleMini v3 Screw Terminals</caption>
+<colgroup>
+<col style="width: 13.3333%;">
+<col style="width: 20%;">
+<col style="width: 66.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Terminal #</th>
+<th class="tableblock halign-left valign-top">Terminal Name</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Left</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Output</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to flight computer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Right</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Input</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to positive battery terminal</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_using_a_separate_pyro_battery_with_telemini_v3">5.2. Using a Separate Pyro Battery with TeleMini v3</h3>
+<div class="paragraph">
+<p>As described above, using an external pyro battery involves
 connecting the negative battery terminal to the flight
 computer ground, connecting the positive battery terminal to
 one of the igniter leads and connecting the other igniter
 lead to the per-channel pyro circuit connection. Because
 there is no solid ground connection to use on TeleMini, this
-is not recommended.</p><p>The only available ground connection on TeleMini v3 are
+is not recommended.</p>
+</div>
+<div class="paragraph">
+<p>The only available ground connection on TeleMini v3 are
 the two mounting holes next to the telemetry
 antenna. Somehow connect a small piece of wire to one of
-those holes and hook it to the negative pyro battery terminal.</p><p>Connecting the positive battery terminal to the pyro
+those holes and hook it to the negative pyro battery terminal.</p>
+</div>
+<div class="paragraph">
+<p>Connecting the positive battery terminal to the pyro
 charges must be done separate from TeleMini v3, by soldering
-them together or using some other connector.</p><p>The other lead from each pyro charge is then inserted into
+them together or using some other connector.</p>
+</div>
+<div class="paragraph">
+<p>The other lead from each pyro charge is then inserted into
 the appropriate per-pyro channel screw terminal (terminal 3 for the
-Main charge, terminal 1 for the Apogee charge).</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_an_active_switch_with_telemini_v3"></a>5.3. Using an Active Switch with TeleMini v3</h2></div></div></div><p>As explained above, an external active switch requires three
+Main charge, terminal 1 for the Apogee charge).</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_an_active_switch_with_telemini_v3">5.3. Using an Active Switch with TeleMini v3</h3>
+<div class="paragraph">
+<p>As explained above, an external active switch requires three
 connections, one to the positive battery terminal, one to
 the flight computer positive input and one to ground. Again,
-because TeleMini doesn’t have any good ground connection,
-this is not recommended.</p><p>The positive battery terminal is available on the Right
+because TeleMini doesn&#8217;t have any good ground connection,
+this is not recommended.</p>
+</div>
+<div class="paragraph">
+<p>The positive battery terminal is available on the Right
 power switch wire, the positive flight computer input is on
 the left power switch wire. Hook a lead to either of the
-mounting holes for a ground connection.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_packet_link_mode_with_telemini"></a>5.4. Using Packet Link Mode with TeleMini</h2></div></div></div><p>After TeleMini powers up, it will check to see if some
+mounting holes for a ground connection.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_packet_link_mode_with_telemini">5.4. Using Packet Link Mode with TeleMini</h3>
+<div class="paragraph">
+<p>After TeleMini powers up, it will check to see if some
 device is attempting to communicate with it using
 Packet Link Mode. If so, it will switch to idle mode
 and start communicating. To switch to flight mode,
 reboot the device either over the radio link or by
-powering it off and back on.</p><p>If no ground station is attempting to communicate
+powering it off and back on.</p>
+</div>
+<div class="paragraph">
+<p>If no ground station is attempting to communicate
 using Packet Link Mode, TeleMini will enter pad mode
-and prepare for flight.</p><p>The sequence of operations to use Packet Link Mode
-with TeleMini is:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Configure the ground station data rate, frequency
-and callsign to match the TeleMini settings.
-</li><li class="listitem">
-Start Packet Link Mode in the ground station by
+and prepare for flight.</p>
+</div>
+<div class="paragraph">
+<p>The sequence of operations to use Packet Link Mode
+with TeleMini is:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Configure the ground station data rate, frequency
+and callsign to match the TeleMini settings.</p>
+</li>
+<li>
+<p>Start Packet Link Mode in the ground station by
 selecting the desired operation (Safe Flight Data,
 Configure Altimeter, Fire Igniter or Monitor
 Idle). Select the TeleBT or TeleDongle device. The
-red LED should begin flashing rapidly.
-</li><li class="listitem">
-Turn on TeleMini. You should see the red LED flash
+red LED should begin flashing rapidly.</p>
+</li>
+<li>
+<p>Turn on TeleMini. You should see the red LED flash
 very rapidly during the initial communication burst,
-but it should then slow down when the link is idle.
-</li></ol></div><p>Once TeleMini is in Idle mode, it will stay in that
+but it should then slow down when the link is idle.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>Once TeleMini is in Idle mode, it will stay in that
 mode until rebooted. That means you can stop one
 Packet Link operation, wait a while and start another
-Packet Link operation.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_forcing_telemini_radio_parameters_to_known_defaults"></a>5.5. Forcing TeleMini radio parameters to known defaults</h2></div></div></div><p>If you don’t know what the TeleMini frequency and
+Packet Link operation.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_forcing_telemini_radio_parameters_to_known_defaults">5.5. Forcing TeleMini radio parameters to known defaults</h3>
+<div class="paragraph">
+<p>If you don&#8217;t know what the TeleMini frequency and
 callsign settings are, you can temporarily force it
 back to the original default values (frequency
 434.550MHz, callsign N0CALL) by connecting a wire
 between hole 3 and hole 7 on the debug connector. Hole
 3 has the square pad around it, hole 7 is the one
 nearest the MS5607 baro sensor, which is a rectangular
-component with a metal cap that has two holes in it.</p><p>Once TeleMini has been powered up with this wire
+component with a metal cap that has two holes in it.</p>
+</div>
+<div class="paragraph">
+<p>Once TeleMini has been powered up with this wire
 connected, the wire may be removed. The radio
 parameters will stay set to these default values until
-changed by the user or when the device is rebooted.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_telemini_v1"></a>5.6. TeleMini v1</h2></div></div></div><p>TeleMini v1 is the earlier version of this product. It
+changed by the user or when the device is rebooted.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_telemini_v1">5.6. TeleMini v1</h3>
+<div class="paragraph">
+<p>TeleMini v1 is the earlier version of this product. It
 has a lower-power radio, less storage, no beeper and
 soldered-in wires instead of screw terminals for the
-power switch.</p><div class="figure"><a id="idm662"></a><p class="title"><strong>Figure 5.2. TeleMini v1 Board</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telemini-v1-top.jpg" width="495" alt="telemini-v1-top.jpg" /></div></div></div><br class="figure-break" /></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_easymini"></a>Chapter 6. EasyMini</h1></div></div></div><div class="figure"><a id="idm671"></a><p class="title"><strong>Figure 6.1. EasyMini Board</strong></p><div class="figure-contents"><div class="mediaobject"><img src="easymini-top.jpg" width="495" alt="easymini-top.jpg" /></div></div></div><br class="figure-break" /><p>EasyMini is built on a 0.8 inch by 1½ inch circuit board. It’s
-designed to fit in a 24mm coupler tube.</p><p>You usually don’t need to configure EasyMini at all; it’s set
+power switch.</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="telemini-v1-top.jpg" alt="telemini v1 top" width="400">
+</div>
+<div class="title">Figure 4. TeleMini v1 Board</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_easymini">6. EasyMini</h2>
+<div class="sectionbody">
+<div class="imageblock">
+<div class="content">
+<img src="easymini-top.jpg" alt="easymini top" width="400">
+</div>
+<div class="title">Figure 5. EasyMini Board</div>
+</div>
+<div class="paragraph">
+<p>EasyMini is built on a 0.8 inch by 1½ inch circuit board. It&#8217;s
+designed to fit in a 24mm coupler tube.</p>
+</div>
+<div class="paragraph">
+<p>You usually don&#8217;t need to configure EasyMini at all; it&#8217;s set
 up to do dual-deployment with an event at apogee to separate
 the airframe and deploy a drogue and another event at 250m
 (820ft) to deploy the main. Install EasyMini in your airframe,
-hook up a battery, igniters and a power switch and you’re
-ready to fly.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_easymini_screw_terminals"></a>6.1. EasyMini Screw Terminals</h2></div></div></div><p>EasyMini has two sets of four screw terminals near one end of the
+hook up a battery, igniters and a power switch and you&#8217;re
+ready to fly.</p>
+</div>
+<div class="sect2">
+<h3 id="_easymini_screw_terminals">6.1. EasyMini Screw Terminals</h3>
+<div class="paragraph">
+<p>EasyMini has two sets of four screw terminals near one end of the
 board. Using the picture
 above, the top four have connections for the main pyro
 circuit and an external battery and the bottom four have
 connections for the apogee pyro circuit and the power
-switch. Counting from the left, the connections are as follows:</p><div class="table"><a id="idm683"></a><p class="title"><strong>Table 6.1. EasyMini Screw Terminals</strong></p><div class="table-contents"><table class="table" summary="EasyMini Screw Terminals" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal #</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal Name</th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Battery</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Positive external battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Battery -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Negative external battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch Output</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch connection to flight computer</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Bottom 4</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Switch Input</p></td><td style="" align="left" valign="top"><p>Switch connection to positive battery terminal</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_connecting_a_battery_to_easymini"></a>6.2. Connecting A Battery To EasyMini</h2></div></div></div><p>There are two possible battery connections on
+switch. Counting from the left, the connections are as follows:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 6. EasyMini Screw Terminals</caption>
+<colgroup>
+<col style="width: 13.3333%;">
+<col style="width: 20%;">
+<col style="width: 66.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Terminal #</th>
+<th class="tableblock halign-left valign-top">Terminal Name</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Battery<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Positive external battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Battery -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Negative external battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Output</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to flight computer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Input</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to positive battery terminal</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_connecting_a_battery_to_easymini">6.2. Connecting A Battery To EasyMini</h3>
+<div class="paragraph">
+<p>There are two possible battery connections on
 EasyMini. You can use either method; both feed
-through the power switch terminals.</p><p>One battery connection is the standard Altus Metrum
+through the power switch terminals.</p>
+</div>
+<div class="paragraph">
+<p>One battery connection is the standard Altus Metrum
 white JST plug. This mates with single-cell Lithium
-Polymer batteries sold by Altus Metrum.</p><p>The other is a pair of screw terminals marked <span class="emphasis"><em>Battery
-+</em></span> and <span class="emphasis"><em>Battery -</em></span>. Connect a battery from 4 to 12
-volts to these terminals, being careful to match polarity.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_charging_lithium_batteries"></a>6.3. Charging Lithium Batteries</h2></div></div></div><p>Because EasyMini allows for batteries other than the
+Polymer batteries sold by Altus Metrum.</p>
+</div>
+<div class="paragraph">
+<p>The other is a pair of screw terminals marked 'Battery
++' and 'Battery -'. Connect a battery from 4 to 12
+volts to these terminals, being careful to match polarity.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_charging_lithium_batteries">6.3. Charging Lithium Batteries</h3>
+<div class="paragraph">
+<p>Because EasyMini allows for batteries other than the
 standard Altus Metrum Lithium Polymer cells, it cannot
 incorporate a battery charger circuit. Therefore, when
-using a Litium Polymer cell, youll need an external
+using a Litium Polymer cell, you&#8217;ll need an external
 charger. These are available from Altus Metrum, or
-from Spark Fun.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_separate_pyro_battery_with_easymini"></a>6.4. Using a Separate Pyro Battery with EasyMini</h2></div></div></div><p>As described above, using an external pyro battery involves
+from Spark Fun.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_a_separate_pyro_battery_with_easymini">6.4. Using a Separate Pyro Battery with EasyMini</h3>
+<div class="paragraph">
+<p>As described above, using an external pyro battery involves
 connecting the negative battery terminal to the flight
 computer ground, connecting the positive battery terminal to
 one of the igniter leads and connecting the other igniter
-lead to the per-channel pyro circuit connection.</p><p>To connect the negative pyro battery terminal to EasyMini
+lead to the per-channel pyro circuit connection.</p>
+</div>
+<div class="paragraph">
+<p>To connect the negative pyro battery terminal to EasyMini
 ground, connect it to the negative external battery
-connection, top terminal 4.</p><p>Connecting the positive battery terminal to the pyro
+connection, top terminal 4.</p>
+</div>
+<div class="paragraph">
+<p>Connecting the positive battery terminal to the pyro
 charges must be done separate from EasyMini, by soldering
-them together or using some other connector.</p><p>The other lead from each pyro charge is then inserted into
+them together or using some other connector.</p>
+</div>
+<div class="paragraph">
+<p>The other lead from each pyro charge is then inserted into
 the appropriate per-pyro channel screw terminal (top
 terminal 1 for the Main charge, bottom terminal 1 for the
-Apogee charge).</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_an_active_switch_with_easymini"></a>6.5. Using an Active Switch with EasyMini</h2></div></div></div><p>As explained above, an external active switch requires three
+Apogee charge).</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_an_active_switch_with_easymini">6.5. Using an Active Switch with EasyMini</h3>
+<div class="paragraph">
+<p>As explained above, an external active switch requires three
 connections, one to the positive battery terminal, one to
 the flight computer positive input and one to ground. Use
 the negative external battery connection, top terminal 4 for
-ground.</p><p>The positive battery terminal is available on bottom
+ground.</p>
+</div>
+<div class="paragraph">
+<p>The positive battery terminal is available on bottom
 terminal 4, the positive flight computer input is on the
-bottom terminal 3.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_telemega"></a>Chapter 7. TeleMega</h1></div></div></div><div class="figure"><a id="idm773"></a><p class="title"><strong>Figure 7.1. TeleMega Board</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telemega-v1.0-top.jpg" width="495" alt="telemega-v1.0-top.jpg" /></div></div></div><br class="figure-break" /><p>TeleMega is a 1¼ inch by 3¼ inch circuit board. It was
+bottom terminal 3.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_telemega">7. TeleMega</h2>
+<div class="sectionbody">
+<div class="imageblock">
+<div class="content">
+<img src="telemega-v1.0-top.jpg" alt="telemega v1.0 top" width="400">
+</div>
+<div class="title">Figure 6. TeleMega Board</div>
+</div>
+<div class="paragraph">
+<p>TeleMega is a 1¼ inch by 3¼ inch circuit board. It was
 designed to easily fit in a 38mm coupler. Like TeleMetrum,
 TeleMega has an accelerometer and so it must be mounted so that
 the board is aligned with the flight axis. It can be mounted
-either antenna up or down.</p><p>TeleMega v2.0 has a few minor changes from v1.0:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Companion connector matches EasyMega functions
-</li><li class="listitem">
-Serial port connector replaced with servo connector with
-support for up to 4 PWM channels.
-</li><li class="listitem">
-Radio switched from cc1120 to cc1200.
-</li></ul></div><p>None of these affect operation using the stock firmware, but
+either antenna up or down.</p>
+</div>
+<div class="paragraph">
+<p>TeleMega v2.0 has a few minor changes from v1.0:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Companion connector matches EasyMega functions</p>
+</li>
+<li>
+<p>Serial port connector replaced with servo connector with
+support for up to 4 PWM channels.</p>
+</li>
+<li>
+<p>Radio switched from cc1120 to cc1200.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>None of these affect operation using the stock firmware, but
 they do mean that the device needs different firmware to
 operate correctly, so make sure you load the right firmware
-when reflashing the device.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_telemega_screw_terminals"></a>7.1. TeleMega Screw Terminals</h2></div></div></div><p>TeleMega has two sets of nine screw terminals on the end of
-the board opposite the telemetry antenna. They are as follows:</p><div class="table"><a id="idm793"></a><p class="title"><strong>Table 7.1. TeleMega Screw Terminals</strong></p><div class="table-contents"><table class="table" summary="TeleMega Screw Terminals" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal #</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal Name</th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch Input</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch connection to positive battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch Output</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch connection to flight computer</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>GND</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Ground connection for use with external active switch</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 7</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 9</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>GND</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Ground connection for negative pyro battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Pyro</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Positive pyro battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Lipo</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Power switch output. Use to connect main battery to pyro battery input</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 7</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>C -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>C pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Bottom 9</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>C</p></td><td style="" align="left" valign="top"><p>C pyro channel common connection to battery</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_separate_pyro_battery_with_telemega"></a>7.2. Using a Separate Pyro Battery with TeleMega</h2></div></div></div><p>TeleMega provides explicit support for an external pyro
+when reflashing the device.</p>
+</div>
+<div class="sect2">
+<h3 id="_telemega_screw_terminals">7.1. TeleMega Screw Terminals</h3>
+<div class="paragraph">
+<p>TeleMega has two sets of nine screw terminals on the end of
+the board opposite the telemetry antenna. They are as follows:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 7. TeleMega Screw Terminals</caption>
+<colgroup>
+<col style="width: 13.3333%;">
+<col style="width: 20%;">
+<col style="width: 66.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Terminal #</th>
+<th class="tableblock halign-left valign-top">Terminal Name</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Input</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to positive battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Output</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to flight computer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GND</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ground connection for use with external active switch</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 7</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 9</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GND</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ground connection for negative pyro battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Pyro</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Positive pyro battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Lipo</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Power switch output. Use to connect main battery to pyro battery input</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 7</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 9</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C pyro channel common connection to battery<br></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_using_a_separate_pyro_battery_with_telemega">7.2. Using a Separate Pyro Battery with TeleMega</h3>
+<div class="paragraph">
+<p>TeleMega provides explicit support for an external pyro
 battery. All that is required is to remove the jumper
 between the lipo terminal (Bottom 3) and the pyro terminal
 (Bottom 2). Then hook the negative pyro battery terminal to ground
 (Bottom 1) and the positive pyro battery to the pyro battery
 input (Bottom 2). You can then use the existing pyro screw
-terminals to hook up all of the pyro charges.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_only_one_battery_with_telemega"></a>7.3. Using Only One Battery With TeleMega</h2></div></div></div><p>Because TeleMega has built-in support for a separate pyro
+terminals to hook up all of the pyro charges.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_only_one_battery_with_telemega">7.3. Using Only One Battery With TeleMega</h3>
+<div class="paragraph">
+<p>Because TeleMega has built-in support for a separate pyro
 battery, if you want to fly with just one battery running
 both the computer and firing the charges, you need to
 connect the flight computer battery to the pyro
 circuit. TeleMega has two screw terminals for this—hook a
 wire from the Lipo terminal (Bottom 3) to the Pyro terminal
-(Bottom 2).</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_an_active_switch_with_telemega"></a>7.4. Using an Active Switch with TeleMega</h2></div></div></div><p>As explained above, an external active switch requires three
+(Bottom 2).</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_an_active_switch_with_telemega">7.4. Using an Active Switch with TeleMega</h3>
+<div class="paragraph">
+<p>As explained above, an external active switch requires three
 connections, one to the positive battery terminal, one to
-the flight computer positive input and one to ground.</p><p>The positive battery terminal is available on Top terminal
+the flight computer positive input and one to ground.</p>
+</div>
+<div class="paragraph">
+<p>The positive battery terminal is available on Top terminal
 1, the positive flight computer input is on Top terminal
-2. Ground is on Top terminal 3.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_easymega"></a>Chapter 8. EasyMega</h1></div></div></div><div class="figure"><a id="idm943"></a><p class="title"><strong>Figure 8.1. EasyMega Board</strong></p><div class="figure-contents"><div class="mediaobject"><img src="easymega-v1.0-top.jpg" width="405" alt="easymega-v1.0-top.jpg" /></div></div></div><br class="figure-break" /><p>EasyMega is a 1¼ inch by 2¼ inch circuit board. It was
+2. Ground is on Top terminal 3.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_easymega">8. EasyMega</h2>
+<div class="sectionbody">
+<div class="imageblock">
+<div class="content">
+<img src="easymega-v1.0-top.jpg" alt="easymega v1.0 top" width="430">
+</div>
+<div class="title">Figure 7. EasyMega Board</div>
+</div>
+<div class="paragraph">
+<p>EasyMega is a 1¼ inch by 2¼ inch circuit board. It was
 designed to easily fit in a 38mm coupler. Like TeleMetrum,
 EasyMega has an accelerometer and so it must be mounted so that
 the board is aligned with the flight axis. It can be mounted
-either antenna up or down.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_easymega_screw_terminals"></a>8.1. EasyMega Screw Terminals</h2></div></div></div><p>EasyMega has two sets of nine screw terminals on the end of
-the board opposite the telemetry antenna. They are as follows:</p><div class="table"><a id="idm954"></a><p class="title"><strong>Table 8.1. EasyMega Screw Terminals</strong></p><div class="table-contents"><table class="table" summary="EasyMega Screw Terminals" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal #</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal Name</th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch Input</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch connection to positive battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch Output</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch connection to flight computer</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>GND</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Ground connection for use with external active switch</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 7</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 9</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>GND</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Ground connection for negative pyro battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Pyro</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Positive pyro battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Lipo</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Power switch output. Use to connect main battery to pyro battery input</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 7</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>C -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>C pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Bottom 9</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>C</p></td><td style="" align="left" valign="top"><p>C pyro channel common connection to battery</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_separate_pyro_battery_with_easymega"></a>8.2. Using a Separate Pyro Battery with EasyMega</h2></div></div></div><p>EasyMega provides explicit support for an external pyro
+either antenna up or down.</p>
+</div>
+<div class="sect2">
+<h3 id="_easymega_screw_terminals">8.1. EasyMega Screw Terminals</h3>
+<div class="paragraph">
+<p>EasyMega has two sets of nine screw terminals on the end of
+the board opposite the telemetry antenna. They are as follows:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 8. EasyMega Screw Terminals</caption>
+<colgroup>
+<col style="width: 13.3333%;">
+<col style="width: 20%;">
+<col style="width: 66.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Terminal #</th>
+<th class="tableblock halign-left valign-top">Terminal Name</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Input</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to positive battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Output</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to flight computer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GND</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ground connection for use with external active switch</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 7</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 9</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GND</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ground connection for negative pyro battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Pyro</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Positive pyro battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Lipo</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Power switch output. Use to connect main battery to pyro battery input</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 7</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 9</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C pyro channel common connection to battery<br></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_using_a_separate_pyro_battery_with_easymega">8.2. Using a Separate Pyro Battery with EasyMega</h3>
+<div class="paragraph">
+<p>EasyMega provides explicit support for an external pyro
 battery. All that is required is to remove the jumper
 between the lipo terminal (Bottom 3) and the pyro terminal
 (Bottom 2). Then hook the negative pyro battery terminal to ground
 (Bottom 1) and the positive pyro battery to the pyro battery
 input (Bottom 2). You can then use the existing pyro screw
-terminals to hook up all of the pyro charges.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_only_one_battery_with_easymega"></a>8.3. Using Only One Battery With EasyMega</h2></div></div></div><p>Because EasyMega has built-in support for a separate pyro
+terminals to hook up all of the pyro charges.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_only_one_battery_with_easymega">8.3. Using Only One Battery With EasyMega</h3>
+<div class="paragraph">
+<p>Because EasyMega has built-in support for a separate pyro
 battery, if you want to fly with just one battery running
 both the computer and firing the charges, you need to
 connect the flight computer battery to the pyro
 circuit. EasyMega has two screw terminals for this—hook a
 wire from the Lipo terminal (Bottom 3) to the Pyro terminal
-(Bottom 2).</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_an_active_switch_with_easymega"></a>8.4. Using an Active Switch with EasyMega</h2></div></div></div><p>As explained above, an external active switch requires three
+(Bottom 2).</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_an_active_switch_with_easymega">8.4. Using an Active Switch with EasyMega</h3>
+<div class="paragraph">
+<p>As explained above, an external active switch requires three
 connections, one to the positive battery terminal, one to
-the flight computer positive input and one to ground.</p><p>The positive battery terminal is available on Top terminal
+the flight computer positive input and one to ground.</p>
+</div>
+<div class="paragraph">
+<p>The positive battery terminal is available on Top terminal
 1, the positive flight computer input is on Top terminal
-2. Ground is on Top terminal 3.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_installation"></a>Chapter 9. Installation</h1></div></div></div><p>A typical installation involves attaching
+2. Ground is on Top terminal 3.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_installation">9. Installation</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>A typical installation involves attaching
 only a suitable battery, a single pole switch for
 power on/off, and two pairs of wires connecting e-matches for the
 apogee and main ejection charges.  All Altus Metrum products are
 designed for use with single-cell batteries with 3.7 volts
 nominal.
 EasyMini may also be used with other
-batteries as long as they supply between 4 and 12 volts.</p><p>The battery connectors are a standard 2-pin JST connector; you
+batteries as long as they supply between 4 and 12 volts.</p>
+</div>
+<div class="paragraph">
+<p>The battery connectors are a standard 2-pin JST connector; you
 can purchase suitable batteries from the any vendor selling
 Altus Metrum products. These batteries are
 single-cell Lithium Polymer batteries that nominally provide 3.7
@@ -476,36 +1781,88 @@ using mating connectors, however the polarity for those is
 generally reversed from the batteries used by Altus Metrum
 products. In particular, the Tenergy batteries supplied for use
 in Featherweight flight computers are not compatible with Altus
-Metrum flight computers or battery chargers.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Check polarity and voltage before connecting any battery not
-purchased from Altus Metrum.</p></div><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Spark Fun sells batteries that have a matching connector with
+Metrum flight computers or battery chargers.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<img src="./images/icons/warning.svg" alt="Warning">
+</td>
+<td class="content">
+Check polarity and voltage before connecting any battery not
+purchased from Altus Metrum.
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<img src="./images/icons/warning.svg" alt="Warning">
+</td>
+<td class="content">
+Spark Fun sells batteries that have a matching connector with
 the correct polarity. However, these batteries include an
 integrated current limiting circuit. That circuit will cause
 the battery to shut down when firing the igniter circuit. Do
 not use these batteries unless you remove the current limiting
-circuit.</p></div><p>By default, we use the unregulated output of the battery
+circuit.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>By default, we use the unregulated output of the battery
 directly to fire ejection charges.  This works marvelously
 with standard low-current e-matches like the J-Tek from MJG
 Technologies, and with Quest Q2G2 igniters.  However, if you
 want or need to use a separate pyro battery, check out
-<a class="xref" href="#_using_a_separate_pyro_battery" title="3.8. Using a Separate Pyro Battery">Section 3.8, “Using a Separate Pyro Battery”</a> for instructions on how to wire
+<a href="#_using_a_separate_pyro_battery">Using a Separate Pyro Battery</a> for instructions on how to wire
 that up. The altimeters are designed to work with an external
-pyro battery of no more than 15 volts.</p><p>Ejection charges are wired directly to the screw terminal block
-at the aft end of the altimeter.  You’ll need a very small straight
+pyro battery of no more than 15 volts.</p>
+</div>
+<div class="paragraph">
+<p>Ejection charges are wired directly to the screw terminal block
+at the aft end of the altimeter.  You&#8217;ll need a very small straight
 blade screwdriver for these screws, such as you might find in a
-jeweler’s screwdriver set.</p><p>Except for TeleMini v1.0, the flight computers also use the
+jeweler&#8217;s screwdriver set.</p>
+</div>
+<div class="paragraph">
+<p>Except for TeleMini v1.0, the flight computers also use the
 screw terminal block for the power switch leads. On TeleMini v1.0,
 the power switch leads are soldered directly to the board and
-can be connected directly to a switch.</p><p>For most air-frames, the integrated antennas are more than
+can be connected directly to a switch.</p>
+</div>
+<div class="paragraph">
+<p>For most air-frames, the integrated antennas are more than
 adequate.   However, if you are installing in a carbon-fiber or
 metal electronics bay which is opaque to RF signals, you may need to
 use off-board external antennas instead.  In this case, you can
 replace the stock UHF antenna wire with an edge-launched SMA connector,
 and, on TeleMetrum v1, you can unplug the integrated GPS
 antenna and select an appropriate off-board GPS antenna with
-cable terminating in a U.FL connector.</p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_using_altus_metrum_products"></a>Chapter 10. Using Altus Metrum Products</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_being_legal"></a>10.1. Being Legal</h2></div></div></div><p>In the US, you need an
-<a class="ulink" href="http://www.altusmetrum.org/Radio/" target="_top">amateur radio license</a>
+cable terminating in a U.FL connector.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_using_altus_metrum_products">10. Using Altus Metrum Products</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_being_legal">10.1. Being Legal</h3>
+<div class="paragraph">
+<p>In the US, you need an
+<a href="http://www.altusmetrum.org/Radio/">amateur radio license</a>
 or other authorization to legally operate the radio
-transmitters that are part of our products.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_in_the_rocket"></a>10.2. In the Rocket</h2></div></div></div><p>In the rocket itself, you just need a flight computer
+transmitters that are part of our products.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_in_the_rocket">10.2. In the Rocket</h3>
+<div class="paragraph">
+<p>In the rocket itself, you just need a flight computer
 and a single-cell, 3.7 volt nominal Li-Po rechargeable
 battery.
 An 850mAh battery weighs less than a 9V
@@ -515,7 +1872,10 @@ A 110mAh battery weighs less
 than a triple A battery and is a good choice for use
 with
 TeleMini or
-EasyMini.</p><p>By default, we ship TeleMini, TeleMetrum and TeleMega
+EasyMini.</p>
+</div>
+<div class="paragraph">
+<p>By default, we ship TeleMini, TeleMetrum and TeleMega
 flight computers with a simple wire antenna.  If your
 electronics bay or the air-frame it resides within is
 made of carbon fiber, which is opaque to RF signals,
@@ -524,9 +1884,15 @@ can run a coaxial cable to an antenna mounted
 elsewhere in the rocket.  However, note that the GPS
 antenna is fixed on all current products, so you
 really want to install the flight computer in a bay
-made of RF-transparent materials if at all possible.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_on_the_ground"></a>10.3. On the Ground</h2></div></div></div><p>To receive the data stream from the rocket, you need
+made of RF-transparent materials if at all possible.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_on_the_ground">10.3. On the Ground</h3>
+<div class="paragraph">
+<p>To receive the data stream from the rocket, you need
 an antenna and short feed-line connected to one of our
-<a class="ulink" href="http://www.altusmetrum.org/TeleDongle/" target="_top">TeleDongle</a>
+<a href="http://www.altusmetrum.org/TeleDongle/">TeleDongle</a>
 units.  If possible, use an SMA to BNC adapter instead
 of feedline between the antenna feedpoint and
 TeleDongle, as this will give you the best
@@ -534,56 +1900,95 @@ performance.  The TeleDongle in turn plugs directly
 into the USB port on a notebook computer.  Because
 TeleDongle looks like a simple serial port, your
 computer does not require special device
-drivers… just plug it in.</p><p>The GUI tool, AltosUI, is written in Java and runs
-across Linux, Mac OS and Windows. There’s also a suite
+drivers&#8230;&#8203; just plug it in.</p>
+</div>
+<div class="paragraph">
+<p>The GUI tool, AltosUI, is written in Java and runs
+across Linux, Mac OS and Windows. There&#8217;s also a suite
 of C tools for Linux which can perform most of the
-same tasks.</p><p>Alternatively, a TeleBT attached with an SMA to BNC
+same tasks.</p>
+</div>
+<div class="paragraph">
+<p>Alternatively, a TeleBT attached with an SMA to BNC
 adapter at the feed point of a hand-held yagi used in
 conjunction with an Android device running AltosDroid
-makes an outstanding ground station.</p><p>After the flight,
+makes an outstanding ground station.</p>
+</div>
+<div class="paragraph">
+<p>After the flight,
 you can use the radio link to
 extract the more detailed data logged in either
 TeleMetrum or TeleMini devices, or
 you can use a
 USB cable to plug into the flight computer board directly.
 A USB cable is also how you
-charge the Li-Po battery, so youll want one of those
+charge the Li-Po battery, so you&#8217;ll want one of those
 anyway. The same cable used by lots of digital
 cameras and other modern electronic stuff will work
-fine.</p><p>If your rocket lands out of sight, you may enjoy
+fine.</p>
+</div>
+<div class="paragraph">
+<p>If your rocket lands out of sight, you may enjoy
 having a hand-held GPS receiver, so that you can put
 in a way-point for the last reported rocket position
 before touch-down.  This makes looking for your rocket
-a lot like Geo-Caching just go to the way-point and
+a lot like Geo-Caching&#8230;&#8203; just go to the way-point and
 look around starting from there.  AltosDroid on an
 Android device with GPS receiver works great for this,
-too!</p><p>You may also enjoy having a ham radio “HT” that covers
-the 70cm band… you can use that with your antenna to
+too!</p>
+</div>
+<div class="paragraph">
+<p>You may also enjoy having a ham radio “HT” that covers
+the 70cm band&#8230;&#8203; you can use that with your antenna to
 direction-find the rocket on the ground the same way
 you can use a Walston or Beeline tracker.  This can be
 handy if the rocket is hiding in sage brush or a tree,
-or if the last GPS position doesnt get you close
+or if the last GPS position doesn&#8217;t get you close
 enough because the rocket dropped into a canyon, or
 the wind is blowing it across a dry lake bed, or
-something like that  Keith currently uses a Yaesu
+something like that&#8230;&#8203;  Keith currently uses a Yaesu
 FT1D, Bdale has a Yaesu VX-7R, which is a nicer radio
-in most ways but doesn’t support APRS.</p><p>So, to recap, on the ground the hardware you’ll need includes:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-an antenna and feed-line or adapter
-</li><li class="listitem">
-a TeleDongle
-</li><li class="listitem">
-a notebook computer
-</li><li class="listitem">
-optionally, a hand-held GPS receiver
-</li><li class="listitem">
-optionally, an HT or receiver covering 435 MHz
-</li></ol></div><p>The best hand-held commercial directional antennas we’ve found for radio
+in most ways but doesn&#8217;t support APRS.</p>
+</div>
+<div class="paragraph">
+<p>So, to recap, on the ground the hardware you&#8217;ll need includes:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>an antenna and feed-line or adapter</p>
+</li>
+<li>
+<p>a TeleDongle</p>
+</li>
+<li>
+<p>a notebook computer</p>
+</li>
+<li>
+<p>optionally, a hand-held GPS receiver</p>
+</li>
+<li>
+<p>optionally, an HT or receiver covering 435 MHz</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>The best hand-held commercial directional antennas we&#8217;ve found for radio
 direction finding rockets are from
-<a class="ulink" href="http://www.arrowantennas.com/" target="_top">Arrow Antennas</a>.</p><p>The 440-3 and 440-5 are both good choices for finding
+<a href="http://www.arrowantennas.com/">Arrow Antennas</a>.</p>
+</div>
+<div class="paragraph">
+<p>The 440-3 and 440-5 are both good choices for finding
 a TeleMetrum- or TeleMini- equipped rocket when used
 with a suitable 70cm HT.  TeleDongle and an SMA to BNC
 adapter fit perfectly between the driven element and
-reflector of Arrow antennas.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_data_analysis"></a>10.4. Data Analysis</h2></div></div></div><p>Our software makes it easy to log the data from each
+reflector of Arrow antennas.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_data_analysis">10.4. Data Analysis</h3>
+<div class="paragraph">
+<p>Our software makes it easy to log the data from each
 flight, both the telemetry received during the flight
 itself, and the more complete data log recorded in the
 flash memory on the altimeter board.  Once this data
@@ -595,9 +2000,18 @@ set of plots showing the altitude, acceleration, and
 velocity of the rocket during flight.  And you can
 even export a flight log in a format usable with Google
 Maps and Google Earth for visualizing the flight path
-in two or three dimensions!</p><p>Our ultimate goal is to emit a set of files for each
+in two or three dimensions!</p>
+</div>
+<div class="paragraph">
+<p>Our ultimate goal is to emit a set of files for each
 flight that can be published as a web page per flight,
-or just viewed on your local disk with a web browser.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_future_plans"></a>10.5. Future Plans</h2></div></div></div><p>We have designed and prototyped several “companion
+or just viewed on your local disk with a web browser.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_future_plans">10.5. Future Plans</h3>
+<div class="paragraph">
+<p>We have designed and prototyped several “companion
 boards” that can attach to the companion connector on
 TeleMetrum, TeleMega and EasyMega flight computers to
 collect more data, provide more pyro channels, and so
@@ -606,46 +2020,95 @@ boards will be produced in enough quantity to sell.
 If you have specific interests for data collection or
 control of events in your rockets beyond the
 capabilities of our existing productions, please let
-us know!</p><p>Because all of our work is open, both the hardware
+us know!</p>
+</div>
+<div class="paragraph">
+<p>Because all of our work is open, both the hardware
 designs and the software, if you have some great idea
 for an addition to the current Altus Metrum family,
 feel free to dive in and help!  Or let us know what
-you’d like to see that we aren’t already working on,
-and maybe we’ll get excited about it too…</p><p>Watch our <a class="ulink" href="http://altusmetrum.org/" target="_top">web site</a> for
+you&#8217;d like to see that we aren&#8217;t already working on,
+and maybe we&#8217;ll get excited about it too&#8230;&#8203;</p>
+</div>
+<div class="paragraph">
+<p>Watch our <a href="http://altusmetrum.org/">web site</a> for
 more news and information as our family of products
-evolves!</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_altosui"></a>Chapter 11. AltosUI</h1></div></div></div><div class="figure"><a id="idm1161"></a><p class="title"><strong>Figure 11.1. AltosUI Main Window</strong></p><div class="figure-contents"><div class="mediaobject"><img src="altosui.png" width="414" alt="altosui.png" /></div></div></div><br class="figure-break" /><p>The AltosUI program provides a graphical user interface for
+evolves!</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_altosui">11. AltosUI</h2>
+<div class="sectionbody">
+<div class="imageblock">
+<div class="content">
+<img src="altosui.png" alt="altosui" width="450">
+</div>
+<div class="title">Figure 8. AltosUI Main Window</div>
+</div>
+<div class="paragraph">
+<p>The AltosUI program provides a graphical user interface for
 interacting with the Altus Metrum product family. AltosUI can
 monitor telemetry data, configure devices and many other
 tasks. The primary interface window provides a selection of
 buttons, one for each major activity in the system.  This
 chapter is split into sections, each of which documents one of
-the tasks provided from the top-level toolbar.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_monitor_flight"></a>11.1. Monitor Flight</h2></div></div></div><p>Selecting this item brings up a dialog box listing all
+the tasks provided from the top-level toolbar.</p>
+</div>
+<div class="sect2">
+<h3 id="_monitor_flight">11.1. Monitor Flight</h3>
+<div class="paragraph">
+<p>Selecting this item brings up a dialog box listing all
 of the connected TeleDongle devices. When you choose
 one of these, AltosUI will create a window to display
 telemetry data as received by the selected TeleDongle
-device.</p><div class="figure"><a id="idm1172"></a><p class="title"><strong>Figure 11.2. Device Selection Dialog</strong></p><div class="figure-contents"><div class="mediaobject"><img src="device-selection.png" width="279" alt="device-selection.png" /></div></div></div><br class="figure-break" /><p>All telemetry data received are automatically recorded
+device.</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="device-selection.png" alt="device selection" width="300">
+</div>
+<div class="title">Figure 9. Device Selection Dialog</div>
+</div>
+<div class="paragraph">
+<p>All telemetry data received are automatically recorded
 in suitable log files. The name of the files includes
-the current date and rocket serial and flight numbers.</p><p>The radio frequency being monitored by the TeleDongle
+the current date and rocket serial and flight numbers.</p>
+</div>
+<div class="paragraph">
+<p>The radio frequency being monitored by the TeleDongle
 device is displayed at the top of the window. You can
 configure the frequency by clicking on the frequency
 box and selecting the desired frequency. AltosUI
 remembers the last frequency selected for each
 TeleDongle and selects that automatically the next
-time you use that device.</p><p>Below the TeleDongle frequency selector, the window
+time you use that device.</p>
+</div>
+<div class="paragraph">
+<p>Below the TeleDongle frequency selector, the window
 contains a few significant pieces of information about
-the altimeter providing the telemetry data stream:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-The configured call-sign
-</li><li class="listitem">
-The device serial number
-</li><li class="listitem">
-The flight number. Each altimeter remembers how
-many times it has flown.
-</li><li class="listitem">
-The rocket flight state. Each flight passes through
+the altimeter providing the telemetry data stream:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The configured call-sign</p>
+</li>
+<li>
+<p>The device serial number</p>
+</li>
+<li>
+<p>The flight number. Each altimeter remembers how
+many times it has flown.</p>
+</li>
+<li>
+<p>The rocket flight state. Each flight passes through
 several states including Pad, Boost, Fast, Coast,
-Drogue, Main and Landed.
-</li><li class="listitem">
-The Received Signal Strength Indicator value. This
+Drogue, Main and Landed.</p>
+</li>
+<li>
+<p>The Received Signal Strength Indicator value. This
 lets you know how strong a signal TeleDongle is
 receiving. At the default data rate, 38400 bps, in
 bench testing, the radio inside TeleDongle v0.2
@@ -654,54 +2117,73 @@ works down to about -111dBm.  Weaker signals, or an
 environment with radio noise may cause the data to
 not be received. The packet link uses error
 detection and correction techniques which prevent
-incorrect data from being reported.
-</li><li class="listitem">
-The age of the displayed data, in seconds since the
+incorrect data from being reported.</p>
+</li>
+<li>
+<p>The age of the displayed data, in seconds since the
 last successfully received telemetry packet.  In
 normal operation this will stay in the low single
 digits.  If the number starts counting up, then you
 are no longer receiving data over the radio link
-from the flight computer.
-</li></ul></div><p>Finally, the largest portion of the window contains a
+from the flight computer.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Finally, the largest portion of the window contains a
 set of tabs, each of which contain some information
-about the rocket.  They’re arranged in <span class="emphasis"><em>flight order</em></span>
+about the rocket.  They&#8217;re arranged in 'flight order'
 so that as the flight progresses, the selected tab
 automatically switches to display data relevant to the
 current state of the flight. You can select other tabs
-at any time. The final <span class="emphasis"><em>table</em></span> tab displays all of the
+at any time. The final 'table' tab displays all of the
 raw telemetry values in one place in a
-spreadsheet-like format.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_launch_pad"></a>11.1.1. Launch Pad</h3></div></div></div><div class="figure"><a id="idm1200"></a><p class="title"><strong>Figure 11.3. Monitor Flight Launch Pad View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="launch-pad.png" width="495" alt="launch-pad.png" /></div></div></div><br class="figure-break" /><p>The <span class="emphasis"><em>Launch Pad</em></span> tab shows information used to decide when the
+spreadsheet-like format.</p>
+</div>
+<div class="sect3">
+<h4 id="_launch_pad">11.1.1. Launch Pad</h4>
+<div class="imageblock">
+<div class="content">
+<img src="launch-pad.png" alt="launch pad" width="400">
+</div>
+<div class="title">Figure 10. Monitor Flight Launch Pad View</div>
+</div>
+<div class="paragraph">
+<p>The 'Launch Pad' tab shows information used to decide when the
 rocket is ready for flight. The first elements include red/green
-indicators, if any of these is red, you’ll want to evaluate
-whether the rocket is ready to launch:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Battery Voltage
-</span></dt><dd>
-This indicates whether the Li-Po battery powering the
+indicators, if any of these is red, you&#8217;ll want to evaluate
+whether the rocket is ready to launch:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Battery Voltage</dt>
+<dd>
+<p>This indicates whether the Li-Po battery powering the
 flight computer has sufficient charge to last for
 the duration of the flight. A value of more than
-3.8V is required for a <span class="emphasis"><em>GO</em></span> status.
-</dd><dt><span class="term">
-Apogee Igniter Voltage
-</span></dt><dd>
-This indicates whether the apogee
+3.8V is required for a 'GO' status.</p>
+</dd>
+<dt class="hdlist1">Apogee Igniter Voltage</dt>
+<dd>
+<p>This indicates whether the apogee
 igniter has continuity. If the igniter has a low
 resistance, then the voltage measured here will be close
 to the Li-Po battery voltage. A value greater than 3.2V is
-required for a <span class="emphasis"><em>GO</em></span> status.
-</dd><dt><span class="term">
-Main Igniter Voltage
-</span></dt><dd>
-This indicates whether the main
+required for a 'GO' status.</p>
+</dd>
+<dt class="hdlist1">Main Igniter Voltage</dt>
+<dd>
+<p>This indicates whether the main
 igniter has continuity. If the igniter has a low
 resistance, then the voltage measured here will be close
 to the Li-Po battery voltage. A value greater than 3.2V is
-required for a <span class="emphasis"><em>GO</em></span> status.
-</dd><dt><span class="term">
-On-board Data Logging
-</span></dt><dd>
-This indicates whether there is space remaining
+required for a 'GO' status.</p>
+</dd>
+<dt class="hdlist1">On-board Data Logging</dt>
+<dd>
+<p>This indicates whether there is space remaining
 on-board to store flight data for the upcoming
-flight. If youve downloaded data, but failed to erase
+flight. If you&#8217;ve downloaded data, but failed to erase
 flights, there may not be any space left. Most of our
 flight computers can store multiple flights, depending
 on the configured maximum flight log size. TeleMini
@@ -710,46 +2192,89 @@ be downloaded and erased after each flight to capture
 data. This only affects on-board flight logging; the
 altimeter will still transmit telemetry and fire
 ejection charges at the proper times even if the
-flight data storage is full.
-</dd><dt><span class="term">
-GPS Locked
-</span></dt><dd>
-For a TeleMetrum or TeleMega device, this indicates
+flight data storage is full.</p>
+</dd>
+<dt class="hdlist1">GPS Locked</dt>
+<dd>
+<p>For a TeleMetrum or TeleMega device, this indicates
 whether the GPS receiver is currently able to compute
 position information. GPS requires at least 4
-satellites to compute an accurate position.
-</dd><dt><span class="term">
-GPS Ready
-</span></dt><dd>
-For a TeleMetrum or TeleMega device, this indicates
+satellites to compute an accurate position.</p>
+</dd>
+<dt class="hdlist1">GPS Ready</dt>
+<dd>
+<p>For a TeleMetrum or TeleMega device, this indicates
 whether GPS has reported at least 10 consecutive
 positions without losing lock. This ensures that the
 GPS receiver has reliable reception from the
-satellites.
-</dd></dl></div><p>The Launchpad tab also shows the computed launch pad
+satellites.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>The Launchpad tab also shows the computed launch pad
 position and altitude, averaging many reported
-positions to improve the accuracy of the fix.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ascent"></a>11.1.2. Ascent</h3></div></div></div><div class="figure"><a id="idm1240"></a><p class="title"><strong>Figure 11.4. Monitor Flight Ascent View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="ascent.png" width="495" alt="ascent.png" /></div></div></div><br class="figure-break" /><p>This tab is shown during Boost, Fast and Coast
+positions to improve the accuracy of the fix.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ascent">11.1.2. Ascent</h4>
+<div class="imageblock">
+<div class="content">
+<img src="ascent.png" alt="ascent" width="400">
+</div>
+<div class="title">Figure 11. Monitor Flight Ascent View</div>
+</div>
+<div class="paragraph">
+<p>This tab is shown during Boost, Fast and Coast
 phases. The information displayed here helps monitor the
-rocket as it heads towards apogee.</p><p>The height, speed, acceleration and tilt are shown along
+rocket as it heads towards apogee.</p>
+</div>
+<div class="paragraph">
+<p>The height, speed, acceleration and tilt are shown along
 with the maximum values for each of them. This allows you to
-quickly answer the most commonly asked questions you’ll hear
-during flight.</p><p>The current latitude and longitude reported by the GPS are
+quickly answer the most commonly asked questions you&#8217;ll hear
+during flight.</p>
+</div>
+<div class="paragraph">
+<p>The current latitude and longitude reported by the GPS are
 also shown. Note that under high acceleration, these values
 may not get updated as the GPS receiver loses position
 fix. Once the rocket starts coasting, the receiver should
-start reporting position again.</p><p>Finally, the current igniter voltages are reported as in the
+start reporting position again.</p>
+</div>
+<div class="paragraph">
+<p>Finally, the current igniter voltages are reported as in the
 Launch Pad tab. This can help diagnose deployment failures
-caused by wiring which comes loose under high acceleration.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_descent"></a>11.1.3. Descent</h3></div></div></div><div class="figure"><a id="idm1253"></a><p class="title"><strong>Figure 11.5. Monitor Flight Descent View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="descent.png" width="495" alt="descent.png" /></div></div></div><br class="figure-break" /><p>Once the rocket has reached apogee and (we hope)
+caused by wiring which comes loose under high acceleration.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_descent">11.1.3. Descent</h4>
+<div class="imageblock">
+<div class="content">
+<img src="descent.png" alt="descent" width="400">
+</div>
+<div class="title">Figure 12. Monitor Flight Descent View</div>
+</div>
+<div class="paragraph">
+<p>Once the rocket has reached apogee and (we hope)
 activated the apogee charge, attention switches to
 tracking the rocket on the way back to the ground, and
 for dual-deploy flights, waiting for the main charge
-to fire.</p><p>To monitor whether the apogee charge operated
+to fire.</p>
+</div>
+<div class="paragraph">
+<p>To monitor whether the apogee charge operated
 correctly, the current descent rate is reported along
 with the current height. Good descent rates vary based
 on the choice of recovery components, but generally
 range from 15-30m/s on drogue and should be below
 10m/s when under the main parachute in a dual-deploy
-flight.</p><p>With GPS-equipped flight computers, you can locate the
+flight.</p>
+</div>
+<div class="paragraph">
+<p>With GPS-equipped flight computers, you can locate the
 rocket in the sky using the elevation and bearing
 information to figure out where to look. Elevation is
 in degrees above the horizon. Bearing is reported in
@@ -759,79 +2284,167 @@ shows how far it is to a point directly under the
 rocket and can help figure out where the rocket is
 likely to land. Note that all of these values are
 relative to the pad location. If the elevation is near
-90°, the rocket is over the pad, not over you.</p><p>Finally, the igniter voltages are reported in this tab
+90°, the rocket is over the pad, not over you.</p>
+</div>
+<div class="paragraph">
+<p>Finally, the igniter voltages are reported in this tab
 as well, both to monitor the main charge as well as to
 see what the status of the apogee charge is.  Note
 that some commercial e-matches are designed to retain
 continuity even after being fired, and will continue
 to show as green or return from red to green after
-firing.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_landed"></a>11.1.4. Landed</h3></div></div></div><div class="figure"><a id="idm1266"></a><p class="title"><strong>Figure 11.6. Monitor Flight Landed View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="landed.png" width="495" alt="landed.png" /></div></div></div><br class="figure-break" /><p>Once the rocket is on the ground, attention switches
+firing.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_landed">11.1.4. Landed</h4>
+<div class="imageblock">
+<div class="content">
+<img src="landed.png" alt="landed" width="400">
+</div>
+<div class="title">Figure 13. Monitor Flight Landed View</div>
+</div>
+<div class="paragraph">
+<p>Once the rocket is on the ground, attention switches
 to recovery. While the radio signal is often lost once
 the rocket is on the ground, the last reported GPS
 position is generally within a short distance of the
-actual landing location.</p><p>The last reported GPS position is reported both by
+actual landing location.</p>
+</div>
+<div class="paragraph">
+<p>The last reported GPS position is reported both by
 latitude and longitude as well as a bearing and
 distance from the launch pad. The distance should give
 you a good idea of whether to walk or hitch a ride.
 Take the reported latitude and longitude and enter
 them into your hand-held GPS unit and have that
-compute a track to the landing location.</p><p>Our flight computers will continue to transmit RDF
+compute a track to the landing location.</p>
+</div>
+<div class="paragraph">
+<p>Our flight computers will continue to transmit RDF
 tones after landing, allowing you to locate the rocket
 by following the radio signal if necessary. You may
 need to get away from the clutter of the flight line,
-or even get up on a hill (or your neighbor’s RV roof)
-to receive the RDF signal.</p><p>The maximum height, speed and acceleration reported
+or even get up on a hill (or your neighbor&#8217;s RV roof)
+to receive the RDF signal.</p>
+</div>
+<div class="paragraph">
+<p>The maximum height, speed and acceleration reported
 during the flight are displayed for your admiring
 observers.  The accuracy of these immediate values
 depends on the quality of your radio link and how many
 packets were received.  Recovering the on-board data
-after flight may yield more precise results.</p><p>To get more detailed information about the flight, you
-can click on the <span class="emphasis"><em>Graph Flight</em></span> button which will
-bring up a graph window for the current flight.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_table"></a>11.1.5. Table</h3></div></div></div><div class="figure"><a id="idm1281"></a><p class="title"><strong>Figure 11.7. Monitor Flight Table View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="table.png" width="495" alt="table.png" /></div></div></div><br class="figure-break" /><p>The table view shows all of the data available from the
+after flight may yield more precise results.</p>
+</div>
+<div class="paragraph">
+<p>To get more detailed information about the flight, you
+can click on the 'Graph Flight' button which will
+bring up a graph window for the current flight.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_table">11.1.5. Table</h4>
+<div class="imageblock">
+<div class="content">
+<img src="table.png" alt="table" width="400">
+</div>
+<div class="title">Figure 14. Monitor Flight Table View</div>
+</div>
+<div class="paragraph">
+<p>The table view shows all of the data available from the
 flight computer. Probably the most useful data on
 this tab is the detailed GPS information, which includes
 horizontal dilution of precision information, and
-information about the signal being received from the satellites.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_site_map"></a>11.1.6. Site Map</h3></div></div></div><div class="figure"><a id="idm1291"></a><p class="title"><strong>Figure 11.8. Monitor Flight Site Map View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="site-map.png" width="495" alt="site-map.png" /></div></div></div><br class="figure-break" /><p>When the TeleMetrum has a GPS fix, the Site Map tab
-will map the rocket’s position to make it easier for
+information about the signal being received from the satellites.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_site_map">11.1.6. Site Map</h4>
+<div class="imageblock">
+<div class="content">
+<img src="site-map.png" alt="site map" width="400">
+</div>
+<div class="title">Figure 15. Monitor Flight Site Map View</div>
+</div>
+<div class="paragraph">
+<p>When the TeleMetrum has a GPS fix, the Site Map tab
+will map the rocket&#8217;s position to make it easier for
 you to locate the rocket, both while it is in the air,
-and when it has landed. The rockets state is
+and when it has landed. The rocket&#8217;s state is
 indicated by color: white for pad, red for boost, pink
 for fast, yellow for coast, light blue for drogue,
-dark blue for main, and black for landed.</p><p>The map’s default scale is approximately 3m (10ft) per
+dark blue for main, and black for landed.</p>
+</div>
+<div class="paragraph">
+<p>The map&#8217;s default scale is approximately 3m (10ft) per
 pixel. The map can be dragged using the left mouse
 button. The map will attempt to keep the rocket
-roughly centered while data is being received.</p><p>You can adjust the style of map and the zoom level
+roughly centered while data is being received.</p>
+</div>
+<div class="paragraph">
+<p>You can adjust the style of map and the zoom level
 with buttons on the right side of the map window. You
 can draw a line on the map by moving the mouse over
 the map with a button other than the left one pressed,
 or by pressing the left button while also holding down
 the shift key. The length of the line in real-world
-units will be shown at the start of the line.</p><p>Images are fetched automatically via the Google Maps
+units will be shown at the start of the line.</p>
+</div>
+<div class="paragraph">
+<p>Images are fetched automatically via the Google Maps
 Static API, and cached on disk for reuse. If map
-images cannot be downloaded, the rocket’s path will be
-traced on a dark gray background instead.</p><p>You can pre-load images for your favorite launch sites
-before you leave home; check out <a class="xref" href="#_load_maps" title="11.12. Load Maps">Section 11.12, “Load Maps”</a>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_igniter"></a>11.1.7. Igniter</h3></div></div></div><div class="figure"><a id="idm1306"></a><p class="title"><strong>Figure 11.9. Monitor Flight Additional Igniter View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="ignitor.png" width="495" alt="ignitor.png" /></div></div></div><br class="figure-break" /><p>TeleMega includes four additional programmable pyro
+images cannot be downloaded, the rocket&#8217;s path will be
+traced on a dark gray background instead.</p>
+</div>
+<div class="paragraph">
+<p>You can pre-load images for your favorite launch sites
+before you leave home; check out <a href="#_load_maps">Load Maps</a>.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_igniter">11.1.7. Igniter</h4>
+<div class="imageblock">
+<div class="content">
+<img src="ignitor.png" alt="ignitor" width="400">
+</div>
+<div class="title">Figure 16. Monitor Flight Additional Igniter View</div>
+</div>
+<div class="paragraph">
+<p>TeleMega includes four additional programmable pyro
 channels. The Ignitor tab shows whether each of them has
 continuity. If an ignitor has a low resistance, then the
 voltage measured here will be close to the pyro battery
-voltage. A value greater than 3.2V is required for a <span class="emphasis"><em>GO</em></span>
-status.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_save_flight_data"></a>11.2. Save Flight Data</h2></div></div></div><p>The altimeter records flight data to its internal
+voltage. A value greater than 3.2V is required for a 'GO'
+status.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_save_flight_data">11.2. Save Flight Data</h3>
+<div class="paragraph">
+<p>The altimeter records flight data to its internal
 flash memory.
 Data logged on board is recorded at a much
 higher rate than the telemetry system can handle, and
 is not subject to radio drop-outs. As such, it
 provides a more complete and precise record of the
 flight.
-The <span class="emphasis"><em>Save Flight Data</em></span> button allows you to
-read the flash memory and write it to disk.</p><p>Clicking on the <span class="emphasis"><em>Save Flight Data</em></span> button brings up a
+The 'Save Flight Data' button allows you to
+read the flash memory and write it to disk.</p>
+</div>
+<div class="paragraph">
+<p>Clicking on the 'Save Flight Data' button brings up a
 list of connected flight computers and TeleDongle
 devices. If you select a flight computer, the flight
 data will be downloaded from that device directly.
 If you select a TeleDongle device, flight data will be
 downloaded from a flight computer over radio link via
 the specified TeleDongle. See
-<a class="xref" href="#_controlling_an_altimeter_over_the_radio_link" title="A.3. Controlling An Altimeter Over The Radio Link">Section A.3, “Controlling An Altimeter Over The Radio Link”</a> for
-more information.</p><p>After the device has been selected, a dialog showing
+<a href="#_controlling_an_altimeter_over_the_radio_link">Controlling An Altimeter Over The Radio Link</a> for
+more information.</p>
+</div>
+<div class="paragraph">
+<p>After the device has been selected, a dialog showing
 the flight data saved in the device will be shown
 allowing you to select which flights to download and
 which to delete. With version 0.9 or newer firmware,
@@ -840,42 +2453,99 @@ consume to be reused by another flight. This prevents
 accidentally losing flight data if you neglect to
 download data before flying again. Note that if there
 is no more space available in the device, then no data
-will be recorded during the next flight.</p><p>The file name for each flight log is computed
+will be recorded during the next flight.</p>
+</div>
+<div class="paragraph">
+<p>The file name for each flight log is computed
 automatically from the recorded flight date, altimeter
-serial number and flight number information.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_replay_flight"></a>11.3. Replay Flight</h2></div></div></div><p>Select this button and you are prompted to select a flight
+serial number and flight number information.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_replay_flight">11.3. Replay Flight</h3>
+<div class="paragraph">
+<p>Select this button and you are prompted to select a flight
 record file, either a .telem file recording telemetry data or a
 .eeprom file containing flight data saved from the altimeter
-flash memory.</p><p>Once a flight record is selected, the flight monitor interface
+flash memory.</p>
+</div>
+<div class="paragraph">
+<p>Once a flight record is selected, the flight monitor interface
 is displayed and the flight is re-enacted in real
 time.
 Check
-<a class="xref" href="#_monitor_flight" title="11.1. Monitor Flight">Section 11.1, “Monitor Flight”</a> to learn how this window operates.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_graph_data"></a>11.4. Graph Data</h2></div></div></div><p>Select this button and you are prompted to select a flight
+<a href="#_monitor_flight">Monitor Flight</a> to learn how this window operates.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_graph_data">11.4. Graph Data</h3>
+<div class="paragraph">
+<p>Select this button and you are prompted to select a flight
 record file, either a .telem file recording telemetry data or a
 .eeprom file containing flight data saved from
-flash memory.</p><p>Note that telemetry files will generally produce poor graphs
+flash memory.</p>
+</div>
+<div class="paragraph">
+<p>Note that telemetry files will generally produce poor graphs
 due to the lower sampling rate and missed telemetry packets.
-Use saved flight data in .eeprom files for graphing where possible.</p><p>Once a flight record is selected, a window with multiple tabs is
-opened.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_flight_graph"></a>11.4.1. Flight Graph</h3></div></div></div><div class="figure"><a id="idm1336"></a><p class="title"><strong>Figure 11.10. Flight Data Graph</strong></p><div class="figure-contents"><div class="mediaobject"><img src="graph.png" width="495" alt="graph.png" /></div></div></div><br class="figure-break" /><p>By default, the graph contains acceleration (blue),
-velocity (green) and altitude (red).</p><p>The graph can be zoomed into a particular area by
+Use saved flight data in .eeprom files for graphing where possible.</p>
+</div>
+<div class="paragraph">
+<p>Once a flight record is selected, a window with multiple tabs is
+opened.</p>
+</div>
+<div class="sect3">
+<h4 id="_flight_graph">11.4.1. Flight Graph</h4>
+<div class="imageblock">
+<div class="content">
+<img src="graph.png" alt="graph" width="400">
+</div>
+<div class="title">Figure 17. Flight Data Graph</div>
+</div>
+<div class="paragraph">
+<p>By default, the graph contains acceleration (blue),
+velocity (green) and altitude (red).</p>
+</div>
+<div class="paragraph">
+<p>The graph can be zoomed into a particular area by
 clicking and dragging down and to the right. Once
 zoomed, the graph can be reset by clicking and
 dragging up and to the left. Holding down control and
 clicking and dragging allows the graph to be panned.
 The right mouse button causes a pop-up menu to be
 displayed, giving you the option save or print the
-plot.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configure_graph"></a>11.4.2. Configure Graph</h3></div></div></div><div class="figure"><a id="idm1347"></a><p class="title"><strong>Figure 11.11. Flight Graph Configuration</strong></p><div class="figure-contents"><div class="mediaobject"><img src="graph-configure.png" width="495" alt="graph-configure.png" /></div></div></div><br class="figure-break" /><p>This selects which graph elements to show, and, at the
+plot.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_configure_graph">11.4.2. Configure Graph</h4>
+<div class="imageblock">
+<div class="content">
+<img src="graph-configure.png" alt="graph configure" width="400">
+</div>
+<div class="title">Figure 18. Flight Graph Configuration</div>
+</div>
+<div class="paragraph">
+<p>This selects which graph elements to show, and, at the
 very bottom. It also lets you configure how
-the graph is drawn:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Whether to use metric or imperial units
-</li><li class="listitem">
-Whether to show a marker at each data
+the graph is drawn:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Whether to use metric or imperial units</p>
+</li>
+<li>
+<p>Whether to show a marker at each data
 point. When displaying a small section of
 the graph, these can be useful to know what
-data values were recorded.
-</li><li class="listitem">
-How wide to draw the lines in the graph
-</li><li class="listitem">
-How to filter speed and acceleration data
+data values were recorded.</p>
+</li>
+<li>
+<p>How wide to draw the lines in the graph</p>
+</li>
+<li>
+<p>How to filter speed and acceleration data
 computed from barometric data. Flight
 computers with accelerometers never display
 computed acceleration data, and only use
@@ -883,11 +2553,43 @@ barometric data to compute speed during
 descent. Flight computers without
 accelerometers always compute both speed and
 acceleration from barometric data. A larger
-value smooths the data more.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_flight_statistics"></a>11.4.3. Flight Statistics</h3></div></div></div><div class="figure"><a id="idm1366"></a><p class="title"><strong>Figure 11.12. Flight Statistics</strong></p><div class="figure-contents"><div class="mediaobject"><img src="graph-stats.png" width="495" alt="graph-stats.png" /></div></div></div><br class="figure-break" /><p>Shows overall data computed from the flight.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_map"></a>11.4.4. Map</h3></div></div></div><div class="figure"><a id="idm1376"></a><p class="title"><strong>Figure 11.13. Flight Map</strong></p><div class="figure-contents"><div class="mediaobject"><img src="graph-map.png" width="495" alt="graph-map.png" /></div></div></div><br class="figure-break" /><p>Shows a satellite image of the flight area overlaid
+value smooths the data more.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_flight_statistics">11.4.3. Flight Statistics</h4>
+<div class="imageblock">
+<div class="content">
+<img src="graph-stats.png" alt="graph stats" width="400">
+</div>
+<div class="title">Figure 19. Flight Statistics</div>
+</div>
+<div class="paragraph">
+<p>Shows overall data computed from the flight.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_map">11.4.4. Map</h4>
+<div class="imageblock">
+<div class="content">
+<img src="graph-map.png" alt="graph map" width="400">
+</div>
+<div class="title">Figure 20. Flight Map</div>
+</div>
+<div class="paragraph">
+<p>Shows a satellite image of the flight area overlaid
 with the path of the flight. The red concentric
 circles mark the launch pad, the black concentric
-circles mark the landing location.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_export_data"></a>11.5. Export Data</h2></div></div></div><p>This tool takes the raw data files and makes them
+circles mark the landing location.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_export_data">11.5. Export Data</h3>
+<div class="paragraph">
+<p>This tool takes the raw data files and makes them
 available for external analysis. When you select this
 button, you are prompted to select a flight data file,
 which can be either a .eeprom or .telem.  The .eeprom
@@ -897,91 +2599,184 @@ strength information.  Next, a second dialog appears
 which is used to select where to write the resulting
 file.
 It has a selector to choose between CSV and KML
-file formats.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_comma_separated_value_format"></a>11.5.1. Comma Separated Value Format</h3></div></div></div><p>This is a text file containing the data in a form
+file formats.</p>
+</div>
+<div class="sect3">
+<h4 id="_comma_separated_value_format">11.5.1. Comma Separated Value Format</h4>
+<div class="paragraph">
+<p>This is a text file containing the data in a form
 suitable for import into a spreadsheet or other
 external data analysis tool. The first few lines of
 the file contain the version and configuration
 information from the altimeter, then there is a single
 header line which labels all of the fields. All of
-these lines start with a <span class="emphasis"><em>#</em></span> character which many
-tools can be configured to skip over.</p><p>The remaining lines of the file contain the data, with
+these lines start with a '#' character which many
+tools can be configured to skip over.</p>
+</div>
+<div class="paragraph">
+<p>The remaining lines of the file contain the data, with
 each field separated by a comma and at least one
 space. All of the sensor values are converted to
 standard units, with the barometric data reported in
-both pressure, altitude and height above pad units.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_keyhole_markup_language_for_google_earth"></a>11.5.2. Keyhole Markup Language (for Google Earth)</h3></div></div></div><p>This is the format used by Google Earth to provide an
+both pressure, altitude and height above pad units.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_keyhole_markup_language_for_google_earth">11.5.2. Keyhole Markup Language (for Google Earth)</h4>
+<div class="paragraph">
+<p>This is the format used by Google Earth to provide an
 overlay within that application. With this, you can
 use Google Earth to see the whole flight path
-in 3D.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_configure_altimeter"></a>11.6. Configure Altimeter</h2></div></div></div><div class="figure"><a id="idm1397"></a><p class="title"><strong>Figure 11.14. Altimeter Configuration</strong></p><div class="figure-contents"><div class="mediaobject"><img src="configure-altimeter.png" width="324" alt="configure-altimeter.png" /></div></div></div><br class="figure-break" /><p>Select this button and then select either an altimeter or
+in 3D.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configure_altimeter">11.6. Configure Altimeter</h3>
+<div class="imageblock">
+<div class="content">
+<img src="configure-altimeter.png" alt="configure altimeter" width="350">
+</div>
+<div class="title">Figure 21. Altimeter Configuration</div>
+</div>
+<div class="paragraph">
+<p>Select this button and then select either an altimeter or
 TeleDongle Device from the list provided. Selecting a TeleDongle
 device will use the radio link to configure a remote
-altimeter.</p><p>The first few lines of the dialog provide information about the
+altimeter.</p>
+</div>
+<div class="paragraph">
+<p>The first few lines of the dialog provide information about the
 connected device, including the product name,
 software version and hardware serial number. Below that are the
-individual configuration entries.</p><p>At the bottom of the dialog, there are four buttons:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Save
-</span></dt><dd>
-This writes any changes to the configuration parameter
-block in flash memory. If you don’t press this button,
-any changes you make will be lost.
-</dd><dt><span class="term">
-Reset
-</span></dt><dd>
-This resets the dialog to the most recently saved
-values, erasing any changes you have made.
-</dd><dt><span class="term">
-Reboot
-</span></dt><dd>
-This reboots the device. Use this to switch from idle
+individual configuration entries.</p>
+</div>
+<div class="paragraph">
+<p>At the bottom of the dialog, there are four buttons:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Save</dt>
+<dd>
+<p>This writes any changes to the configuration parameter
+block in flash memory. If you don&#8217;t press this button,
+any changes you make will be lost.</p>
+</dd>
+<dt class="hdlist1">Reset</dt>
+<dd>
+<p>This resets the dialog to the most recently saved
+values, erasing any changes you have made.</p>
+</dd>
+<dt class="hdlist1">Reboot</dt>
+<dd>
+<p>This reboots the device. Use this to switch from idle
 to pad mode by rebooting once the rocket is oriented
 for flight, or to confirm changes you think you saved
-are really saved.
-</dd><dt><span class="term">
-Close
-</span></dt><dd>
-This closes the dialog. Any unsaved changes will be
-lost.
-</dd></dl></div><p>The rest of the dialog contains the parameters to be configured.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_main_deploy_altitude"></a>11.6.1. Main Deploy Altitude</h3></div></div></div><p>This sets the altitude (above the recorded pad
-altitude) at which the <span class="emphasis"><em>main</em></span> igniter will fire. The
+are really saved.</p>
+</dd>
+<dt class="hdlist1">Close</dt>
+<dd>
+<p>This closes the dialog. Any unsaved changes will be
+lost.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>The rest of the dialog contains the parameters to be configured.</p>
+</div>
+<div class="sect3">
+<h4 id="_main_deploy_altitude">11.6.1. Main Deploy Altitude</h4>
+<div class="paragraph">
+<p>This sets the altitude (above the recorded pad
+altitude) at which the 'main' igniter will fire. The
 drop-down menu shows some common values, but you can
 edit the text directly and choose whatever you
 like. If the apogee charge fires below this altitude,
 then the main charge will fire two seconds after the
-apogee charge fires.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_apogee_delay"></a>11.6.2. Apogee Delay</h3></div></div></div><p>When flying redundant electronics, it’s often
-important to ensure that multiple apogee charges don’t
+apogee charge fires.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_apogee_delay">11.6.2. Apogee Delay</h4>
+<div class="paragraph">
+<p>When flying redundant electronics, it&#8217;s often
+important to ensure that multiple apogee charges don&#8217;t
 fire at precisely the same time, as that can over
 pressurize the apogee deployment bay and cause a
 structural failure of the air-frame. The Apogee Delay
 parameter tells the flight computer to fire the apogee
 charge a certain number of seconds after apogee has
-been detected.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_apogee_lockout"></a>11.6.3. Apogee Lockout</h3></div></div></div><p>Apogee lockout is the number of seconds after launch
+been detected.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_apogee_lockout">11.6.3. Apogee Lockout</h4>
+<div class="paragraph">
+<p>Apogee lockout is the number of seconds after launch
 where the flight computer will not fire the apogee
 charge, even if the rocket appears to be at
-apogee. This is often called <span class="emphasis"><em>Mach Delay</em></span>, as it is
+apogee. This is often called 'Mach Delay', as it is
 intended to prevent a flight computer from
 unintentionally firing apogee charges due to the
 pressure spike that occurrs across a mach
 transition. Altus Metrum flight computers include a
 Kalman filter which is not fooled by this sharp
 pressure increase, and so this setting should be left
-at the default value of zero to disable it.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Firmware versions older than 1.8.6 have a
+at the default value of zero to disable it.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<img src="./images/icons/warning.svg" alt="Warning">
+</td>
+<td class="content">
+Firmware versions older than 1.8.6 have a
 bug which resets the time since launch to zero each
 time a motor starts burning. Update firmware to get
-the correct behavior.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_frequency"></a>11.6.4. Frequency</h3></div></div></div><p>This configures which of the frequencies to use for
+the correct behavior.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_frequency">11.6.4. Frequency</h4>
+<div class="paragraph">
+<p>This configures which of the frequencies to use for
 both telemetry and packet command mode. Note that if
 you set this value via packet command mode, the
 TeleDongle frequency will also be automatically
 reconfigured to match so that communication will
-continue afterwards.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_rf_calibration"></a>11.6.5. RF Calibration</h3></div></div></div><p>The radios in every Altus Metrum device are calibrated
+continue afterwards.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_rf_calibration">11.6.5. RF Calibration</h4>
+<div class="paragraph">
+<p>The radios in every Altus Metrum device are calibrated
 at the factory to ensure that they transmit and
 receive on the specified frequency.  If you need to
 you can adjust the calibration by changing this value.
 Do not do this without understanding what the value
 means, read the appendix on calibration and/or the
 source code for more information.  To change a
-TeleDongle’s calibration, you must reprogram the unit
-completely.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telemetry_rdf_aprs_enable"></a>11.6.6. Telemetry/RDF/APRS Enable</h3></div></div></div><p>Enables the radio for transmission during
+TeleDongle&#8217;s calibration, you must reprogram the unit
+completely.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_telemetryrdfaprs_enable">11.6.6. Telemetry/RDF/APRS Enable</h4>
+<div class="paragraph">
+<p>Enables the radio for transmission during
 flight. When disabled, the radio will not
-transmit anything during flight at all.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telemetry_baud_rate"></a>11.6.7. Telemetry baud rate</h3></div></div></div><p>This sets the modulation bit rate for data
+transmit anything during flight at all.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_telemetry_baud_rate">11.6.7. Telemetry baud rate</h4>
+<div class="paragraph">
+<p>This sets the modulation bit rate for data
 transmission for both telemetry and packet
 link mode. Lower bit rates will increase range
 while reducing the amount of data that can be
@@ -989,7 +2784,13 @@ sent and increasing battery consumption. All
 telemetry is done using a rate 1/2 constraint
 4 convolution code, so the actual data
 transmission rate is 1/2 of the modulation bit
-rate specified here.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_aprs_interval"></a>11.6.8. APRS Interval</h3></div></div></div><p>How often to transmit GPS information via APRS
+rate specified here.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_aprs_interval">11.6.8. APRS Interval</h4>
+<div class="paragraph">
+<p>How often to transmit GPS information via APRS
 (in seconds). When set to zero, APRS
 transmission is disabled.
 This option is
@@ -999,10 +2800,22 @@ APRS packets.
 Note that a single APRS packet
 takes nearly a full second to transmit, so
 enabling this option will prevent sending any
-other telemetry during that time.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_aprs_ssid"></a>11.6.9. APRS SSID</h3></div></div></div><p>Which SSID to report in APRS packets. By
+other telemetry during that time.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_aprs_ssid">11.6.9. APRS SSID</h4>
+<div class="paragraph">
+<p>Which SSID to report in APRS packets. By
 default, this is set to the last digit of the
 serial number, but can be configured to any
-value from 0 to 9.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_aprs_format"></a>11.6.10. APRS Format</h3></div></div></div><p>Whether to send APRS data in Compressed or
+value from 0 to 9.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_aprs_format">11.6.10. APRS Format</h4>
+<div class="paragraph">
+<p>Whether to send APRS data in Compressed or
 Uncompressed format. Compressed format is
 smaller and more precise. Uncompressed
 format is older, but may work better with your
@@ -1010,328 +2823,600 @@ device. The Kenwood TH-D72 only displays
 altitude information with Uncompressed
 format, while the Yaesu FT1D only displays
 altitude with Compressed format. Test before
-you fly to see which to use.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_callsign"></a>11.6.11. Callsign</h3></div></div></div><p>This sets the call sign included in each
+you fly to see which to use.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_callsign">11.6.11. Callsign</h4>
+<div class="paragraph">
+<p>This sets the call sign included in each
 telemetry packet. Set this as needed to
-conform to your local radio regulations.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_maximum_flight_log_size"></a>11.6.12. Maximum Flight Log Size</h3></div></div></div><p>This sets the space (in kilobytes) allocated
+conform to your local radio regulations.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_maximum_flight_log_size">11.6.12. Maximum Flight Log Size</h4>
+<div class="paragraph">
+<p>This sets the space (in kilobytes) allocated
 for each flight log. The available space will
 be divided into chunks of this size. A smaller
 value will allow more flights to be stored, a
 larger value will record data from longer
-flights.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ignitor_firing_mode"></a>11.6.13. Ignitor Firing Mode</h3></div></div></div><p>This configuration parameter allows the two standard ignitor
+flights.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ignitor_firing_mode">11.6.13. Ignitor Firing Mode</h4>
+<div class="paragraph">
+<p>This configuration parameter allows the two standard ignitor
 channels (Apogee and Main) to be used in different
-configurations.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Dual Deploy
-</span></dt><dd>
-This is the usual mode of operation; the
-<span class="emphasis"><em>apogee</em></span> channel is fired at apogee and the
-<span class="emphasis"><em>main</em></span> channel at the height above ground
-specified by the <span class="emphasis"><em>Main Deploy Altitude</em></span> during
-descent.
-</dd><dt><span class="term">
-Redundant Apogee
-</span></dt><dd>
-This fires both channels at apogee, the
-<span class="emphasis"><em>apogee</em></span> channel first followed after a two
-second delay by the <span class="emphasis"><em>main</em></span> channel.
-</dd><dt><span class="term">
-Redundant Main
-</span></dt><dd>
-This fires both channels at the height above
+configurations.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Dual Deploy</dt>
+<dd>
+<p>This is the usual mode of operation; the
+'apogee' channel is fired at apogee and the
+'main' channel at the height above ground
+specified by the 'Main Deploy Altitude' during
+descent.</p>
+</dd>
+<dt class="hdlist1">Redundant Apogee</dt>
+<dd>
+<p>This fires both channels at apogee, the
+'apogee' channel first followed after a two
+second delay by the 'main' channel.</p>
+</dd>
+<dt class="hdlist1">Redundant Main</dt>
+<dd>
+<p>This fires both channels at the height above
 ground specified by the Main Deploy Altitude
-setting during descent. The <span class="emphasis"><em>apogee</em></span> channel
+setting during descent. The 'apogee' channel
 is fired first, followed after a two second
-delay by the <span class="emphasis"><em>main</em></span> channel.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_pad_orientation"></a>11.6.14. Pad Orientation</h3></div></div></div><p>Because they include accelerometers,
+delay by the 'main' channel.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_pad_orientation">11.6.14. Pad Orientation</h4>
+<div class="paragraph">
+<p>Because they include accelerometers,
 TeleMetrum, TeleMega and EasyMega are
 sensitive to the orientation of the board. By
 default, they expect the antenna end to point
 forward. This parameter allows that default to
 be changed, permitting the board to be mounted
-with the antenna pointing aft instead.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Antenna Up
-</span></dt><dd>
-In this mode, the antenna end of the flight
+with the antenna pointing aft instead.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Antenna Up</dt>
+<dd>
+<p>In this mode, the antenna end of the flight
 computer must point forward, in line with the
-expected flight path.
-</dd><dt><span class="term">
-Antenna Down
-</span></dt><dd>
-In this mode, the antenna end of the flight
+expected flight path.</p>
+</dd>
+<dt class="hdlist1">Antenna Down</dt>
+<dd>
+<p>In this mode, the antenna end of the flight
 computer must point aft, in line with the
-expected flight path.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_beeper_frequency"></a>11.6.15. Beeper Frequency</h3></div></div></div><p>The beeper on all Altus Metrum flight
+expected flight path.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_beeper_frequency">11.6.15. Beeper Frequency</h4>
+<div class="paragraph">
+<p>The beeper on all Altus Metrum flight
 computers works best at 4000Hz, however if you
 have more than one flight computer in a single
 airframe, having all of them sound at the same
 frequency can be confusing. This parameter
 lets you adjust the base beeper frequency
-value.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_logging_trigger_motion"></a>11.6.16. Logging Trigger Motion</h3></div></div></div><p>This sets the amount of motion that TeleGPS
+value.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_logging_trigger_motion">11.6.16. Logging Trigger Motion</h4>
+<div class="paragraph">
+<p>This sets the amount of motion that TeleGPS
 needs to see before logging the new
 position. Motions smaller than this are
-skipped, which saves storage space.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_position_reporting_interval"></a>11.6.17. Position Reporting Interval</h3></div></div></div><p>The interval between TeleGPS position reports,
+skipped, which saves storage space.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_position_reporting_interval">11.6.17. Position Reporting Interval</h4>
+<div class="paragraph">
+<p>The interval between TeleGPS position reports,
 both over the air and in the log. Increase
 this to reduce the frequency of radio
 transmissions and the length of time available
-in the log.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_calibrate_accelerometer"></a>11.6.18. Calibrate Accelerometer</h3></div></div></div><p>This opens a separate window to recalibrate the
+in the log.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_calibrate_accelerometer">11.6.18. Calibrate Accelerometer</h4>
+<div class="paragraph">
+<p>This opens a separate window to recalibrate the
 accelerometers. Follow the instructions, orienting the
 flight computer with the antenna end, or end opposite
 the screw terminals, in the case of EasyMega, first up
-and then down.</p><p>When the calibration is complete, return to the
+and then down.</p>
+</div>
+<div class="paragraph">
+<p>When the calibration is complete, return to the
 Configure Altimeter window and save the new
-calibration values.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configure_pyro_channels"></a>11.6.19. Configure Pyro Channels</h3></div></div></div><div class="figure"><a id="idm1515"></a><p class="title"><strong>Figure 11.15. Additional Pyro Channel Configuration</strong></p><div class="figure-contents"><div class="mediaobject"><img src="configure-pyro.png" width="495" alt="configure-pyro.png" /></div></div></div><br class="figure-break" /><p>This opens a separate window to configure the
+calibration values.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_configure_pyro_channels">11.6.19. Configure Pyro Channels</h4>
+<div class="imageblock">
+<div class="content">
+<img src="configure-pyro.png" alt="configure pyro" width="400">
+</div>
+<div class="title">Figure 22. Additional Pyro Channel Configuration</div>
+</div>
+<div class="paragraph">
+<p>This opens a separate window to configure the
 additional pyro channels available on TeleMega
 and EasyMega.  One column is presented for
 each channel. Each row represents a single
 parameter, if enabled the parameter must meet
 the specified test for the pyro channel to be
-fired.</p><p>Select conditions and set the related value;
-the pyro channel will be activated when <span class="strong"><strong>all</strong></span>
+fired.</p>
+</div>
+<div class="paragraph">
+<p>Select conditions and set the related value;
+the pyro channel will be activated when <strong>all</strong>
 of the conditions are met. Each pyro channel
 has a separate set of configuration values, so
 you can use different values for the same
-condition with different channels.</p><p>At the bottom of the window, the <span class="emphasis"><em>Pyro Firing
-Time</em></span> configuration sets the length of time
+condition with different channels.</p>
+</div>
+<div class="paragraph">
+<p>At the bottom of the window, the 'Pyro Firing
+Time' configuration sets the length of time
 (in seconds) which each of these pyro channels
-will fire for.</p><p>Once you have selected the appropriate
+will fire for.</p>
+</div>
+<div class="paragraph">
+<p>Once you have selected the appropriate
 configuration for all of the necessary pyro
 channels, you can save the pyro configuration
 along with the rest of the flight computer
-configuration by pressing the <span class="emphasis"><em>Save</em></span> button in
-the main Configure Flight Computer window.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Vertical Acceleration
-</span></dt><dd>
-Select a value, and then choose whether
+configuration by pressing the 'Save' button in
+the main Configure Flight Computer window.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Vertical Acceleration</dt>
+<dd>
+<p>Select a value, and then choose whether
 acceleration away from the ground should be above or below that
 value. Acceleration is positive upwards, so accelerating towards the
 ground would produce negative numbers. Acceleration during descent is
 noisy and inaccurate, so be careful when using it during these phases
-of the flight.
-</dd><dt><span class="term">
-Ascent rate
-</span></dt><dd>
-Select a value, and then choose whether ascent rate
+of the flight.</p>
+</dd>
+<dt class="hdlist1">Ascent rate</dt>
+<dd>
+<p>Select a value, and then choose whether ascent rate
 should be above or below that value. Ascent rate is positive upwards,
 so moving towards the ground would produce negative numbers. Ascent
 rate during descent is a bit noisy and so be careful when using it
-during these phases of the flight.
-</dd><dt><span class="term">
-Height above pad
-</span></dt><dd>
-Select a value, and then choose whether the height
-above the launch pad should be above or below that value.
-</dd><dt><span class="term">
-Orientation
-</span></dt><dd>
-TeleMega and EasyMega contain a 3-axis gyroscope and
+during these phases of the flight.</p>
+</dd>
+<dt class="hdlist1">Height above pad</dt>
+<dd>
+<p>Select a value, and then choose whether the height
+above the launch pad should be above or below that value.</p>
+</dd>
+<dt class="hdlist1">Orientation</dt>
+<dd>
+<p>TeleMega and EasyMega contain a 3-axis gyroscope and
 accelerometer which is used to compute the orientation of the
 rocket. A record of orientations over the last 0.64 seconds is kept
 and the largest value within this period is compared with the
 specified value. Note that the tilt angle is not the change in angle
 from the launch pad, but rather absolute relative to gravity—the
 3-axis accelerometer is used to compute the angle of the rocket on the
-launch pad and initialize the system.
-</dd></dl></div><div class="note" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Note</h3><p>Because this value is computed by integrating
+launch pad and initialize the system.</p>
+</dd>
+</dl>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<img src="./images/icons/note.svg" alt="Note">
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Because this value is computed by integrating
 rate gyros, it gets progressively less
 accurate as the flight goes on. It should have
 an accumulated error of less than 0.2°/second
 (after 10 seconds of flight, the error should
-be less than 2°).</p><p>The usual use of the orientation configuration
+be less than 2°).</p>
+</div>
+<div class="paragraph">
+<p>The usual use of the orientation configuration
 is to ensure that the rocket is traveling
 mostly upwards when deciding whether to ignite
 air starts or additional stages. For that,
 choose a reasonable maximum angle (like 20°)
 and set the motor igniter to require an angle
-of less than that value.</p></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Flight Time
-</span></dt><dd>
-Time since launch. Select a value and choose whether to
-activate the pyro channel before or after that amount of time.
-</dd></dl></div><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Firmware versions older than 1.8.6 have a bug which resets the time
+of less than that value.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Flight Time</dt>
+<dd>
+<p>Time since launch. Select a value and choose whether to
+activate the pyro channel before or after that amount of time.</p>
+</dd>
+</dl>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<img src="./images/icons/warning.svg" alt="Warning">
+</td>
+<td class="content">
+Firmware versions older than 1.8.6 have a bug which resets the time
 since launch to zero each time a motor starts burning. Update firmware
-to get the correct behavior.</p></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Ascending
-</span></dt><dd>
-A deprecated configuration value which was the same as
+to get the correct behavior.
+</td>
+</tr>
+</table>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Ascending</dt>
+<dd>
+<p>A deprecated configuration value which was the same as
 setting Ascent rate &gt; 0. Existing configurations using this will be
-cleared and must be reconfigured by the user.
-</dd><dt><span class="term">
-Descending
-</span></dt><dd>
-A deprecated configuration value which was the same as
+cleared and must be reconfigured by the user.</p>
+</dd>
+<dt class="hdlist1">Descending</dt>
+<dd>
+<p>A deprecated configuration value which was the same as
 setting Ascent rate &lt; 0. Existing configurations using this will be
-cleared and must be reconfigured by the user.
-</dd><dt><span class="term">
-After Motor
-</span></dt><dd>
-The flight software counts each time the rocket starts
+cleared and must be reconfigured by the user.</p>
+</dd>
+<dt class="hdlist1">After Motor</dt>
+<dd>
+<p>The flight software counts each time the rocket starts
 accelerating and then decelerating (presumably due to a motor or
 motors burning). Use this value for multi-staged or multi-airstart
 launches. As of version 1.8.6 firmware, this checks to make sure at
 least this many motors have burned. Before version 1.8.6, this checked
-to make sure that exactly this many motors had burned.
-</dd><dt><span class="term">
-Delay
-</span></dt><dd>
-Once the other parameters all become true, a timer is
+to make sure that exactly this many motors had burned.</p>
+</dd>
+<dt class="hdlist1">Delay</dt>
+<dd>
+<p>Once the other parameters all become true, a timer is
 started for the specified amount of time. While the timer is running,
 the other parameters are checked repeatedly and if any of them become
 false, then the pyro channel is disabled and will not fire. If the
 timer expires and all of the other parameters have remained true for
-the entire time, then the pyro channel is fired.
-</dd><dt><span class="term">
-Flight State
-</span></dt><dd><p class="simpara">
-The flight software tracks the flight
-through a sequence of states:
-</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Boost. The motor has lit and the rocket is
+the entire time, then the pyro channel is fired.</p>
+</dd>
+<dt class="hdlist1">Flight State</dt>
+<dd>
+<p>The flight software tracks the flight
+through a sequence of states:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>Boost. The motor has lit and the rocket is
 accelerating upwards. Ascent rate will be greater than zero.
-Vertical acceleration will be greater than zero.
-</li><li class="listitem">
-Fast. The motor has burned out and the
+Vertical acceleration will be greater than zero.</p>
+</li>
+<li>
+<p>Fast. The motor has burned out and the
 rocket is decelerating, but it is going
 faster than 200m/s. Ascent rate will be greater than zero. Vertical
-acceleration will be less than zero.
-</li><li class="listitem">
-Coast. The rocket is still moving upwards
+acceleration will be less than zero.</p>
+</li>
+<li>
+<p>Coast. The rocket is still moving upwards
 and decelerating, but the Ascent rate is less
 than 200m/s. Ascent rate will greater than zero. Vertical
-acceleration will be less than zero.
-</li><li class="listitem">
-Drogue. The rocket has reached apogee and
+acceleration will be less than zero.</p>
+</li>
+<li>
+<p>Drogue. The rocket has reached apogee and
 is heading back down, but is above the
 configured Main altitude. Ascent rate will be less than zero during
 this state. Vertical acceleration will be negative until the rocket
 reaches a terminal descent rate, at which point Vertical
 acceleration will be zero. Both Ascent rate and Vertical
 acceleration are very noisy in this state, so be careful when
-trying to use them to control pyro channels.
-</li><li class="listitem">
-Main. The rocket is still descending, and
+trying to use them to control pyro channels.</p>
+</li>
+<li>
+<p>Main. The rocket is still descending, and
 is below the Main altitude. Ascent rate will be less than zero
 during this state. Vertical acceleration may be briefly less than
 zero as the rocket slows from drogue descent to main descent, but
 it will settle down to a zero value once the rocket has reached the
 terminal velocity under the main chute. Ascent rate and Vertical
 acceleration should be much less noisy once the main chute has
-deployed.
-</li><li class="listitem">
-Landed. The rocket is no longer moving.
-</li></ul></div></dd></dl></div><p>You can select a state to limit when the pyro channel may activate;
-note that the check is based on when the rocket transitions <span class="strong"><strong>into</strong></span> the
+deployed.</p>
+</li>
+<li>
+<p>Landed. The rocket is no longer moving.</p>
+</li>
+</ul>
+</div>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>You can select a state to limit when the pyro channel may activate;
+note that the check is based on when the rocket transitions <strong>into</strong> the
 state, and so checking for “greater than Boost” means that the rocket
-is currently in boost or some later state.</p><p>When a motor burns out, the rocket enters either Fast or Coast state
+is currently in boost or some later state.</p>
+</div>
+<div class="paragraph">
+<p>When a motor burns out, the rocket enters either Fast or Coast state
 (depending on how fast it is moving). If the computer detects upwards
-acceleration again, it will move back to Boost state.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_configure_altosui"></a>11.7. Configure AltosUI</h2></div></div></div><div class="figure"><a id="idm1595"></a><p class="title"><strong>Figure 11.16. Configure AltosUI Dialog</strong></p><div class="figure-contents"><div class="mediaobject"><img src="configure-altosui.png" width="216" alt="configure-altosui.png" /></div></div></div><br class="figure-break" /><p>This button presents a dialog so that you can
-configure the AltosUI global settings.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_voice_settings"></a>11.7.1. Voice Settings</h3></div></div></div><p>AltosUI provides voice announcements during
+acceleration again, it will move back to Boost state.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configure_altosui">11.7. Configure AltosUI</h3>
+<div class="imageblock">
+<div class="content">
+<img src="configure-altosui.png" alt="configure altosui" width="230">
+</div>
+<div class="title">Figure 23. Configure AltosUI Dialog</div>
+</div>
+<div class="paragraph">
+<p>This button presents a dialog so that you can
+configure the AltosUI global settings.</p>
+</div>
+<div class="sect3">
+<h4 id="_voice_settings">11.7.1. Voice Settings</h4>
+<div class="paragraph">
+<p>AltosUI provides voice announcements during
 flight so that you can keep your eyes on the
 sky and still get information about the
 current flight status. However, sometimes you
-don’t want to hear them.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Enable
-</span></dt><dd>
-Turns all voice announcements on and off
-</dd><dt><span class="term">
-Test Voice
-</span></dt><dd>
-Plays a short message allowing you to verify
+don&#8217;t want to hear them.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Enable</dt>
+<dd>
+<p>Turns all voice announcements on and off</p>
+</dd>
+<dt class="hdlist1">Test Voice</dt>
+<dd>
+<p>Plays a short message allowing you to verify
 that the audio system is working and the volume settings
-are reasonable
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_log_directory"></a>11.7.2. Log Directory</h3></div></div></div><p>AltosUI logs all telemetry data and saves all
+are reasonable</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_log_directory">11.7.2. Log Directory</h4>
+<div class="paragraph">
+<p>AltosUI logs all telemetry data and saves all
 flash data to this directory. This
 directory is also used as the staring point
 when selecting data files for display or
-export.</p><p>Click on the directory name to bring up a
+export.</p>
+</div>
+<div class="paragraph">
+<p>Click on the directory name to bring up a
 directory choosing dialog, select a new
-directory and click <span class="emphasis"><em>Select Directory</em></span> to
+directory and click 'Select Directory' to
 change where AltosUI reads and writes data
-files.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_callsign_2"></a>11.7.3. Callsign</h3></div></div></div><p>This value is transmitted in each command
+files.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_callsign_2">11.7.3. Callsign</h4>
+<div class="paragraph">
+<p>This value is transmitted in each command
 packet sent from TeleDongle and received from
 an altimeter.  It is not used in telemetry
 mode, as the callsign configured in the
 altimeter board is included in all telemetry
 packets.  Configure this with the AltosUI
 operators call sign as needed to comply with
-your local radio regulations.</p><p>Note that to successfully command a flight
+your local radio regulations.</p>
+</div>
+<div class="paragraph">
+<p>Note that to successfully command a flight
 computer over the radio (to configure the
 altimeter, monitor idle, or fire pyro
 charges), the callsign configured here must
 exactly match the callsign configured in the
 flight computer.  This matching is case
-sensitive.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_imperial_units"></a>11.7.4. Imperial Units</h3></div></div></div><p>This switches between metric units (meters)
+sensitive.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_imperial_units">11.7.4. Imperial Units</h4>
+<div class="paragraph">
+<p>This switches between metric units (meters)
 and imperial units (feet and miles). This
 affects the display of values use during
 flight monitoring, configuration, data
 graphing and all of the voice
 announcements. It does not change the units
 used when exporting to CSV files, those are
-always produced in metric units.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_serial_debug"></a>11.7.5. Serial Debug</h3></div></div></div><p>This causes all communication with a connected
+always produced in metric units.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_serial_debug">11.7.5. Serial Debug</h4>
+<div class="paragraph">
+<p>This causes all communication with a connected
 device to be dumped to the console from which
-AltosUI was started. If youve started it from
+AltosUI was started. If you&#8217;ve started it from
 an icon or menu entry, the output will simply
 be discarded. This mode can be useful to debug
-various serial communication issues.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_font_size"></a>11.7.6. Font size</h3></div></div></div><p>Selects the set of fonts used in the flight
+various serial communication issues.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_font_size">11.7.6. Font size</h4>
+<div class="paragraph">
+<p>Selects the set of fonts used in the flight
 monitor window. Choose between the small,
-medium and large sets.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_look_amp_feel"></a>11.7.7. Look &amp; feel</h3></div></div></div><p>Switches between the available Java user
+medium and large sets.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_look_feel">11.7.7. Look &amp; feel</h4>
+<div class="paragraph">
+<p>Switches between the available Java user
 interface appearances. The default selection
 is supposed to match the native window system
-appearance for the target platform.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_menu_position"></a>11.7.8. Menu position</h3></div></div></div><p>Selects the initial position for the main
+appearance for the target platform.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_menu_position">11.7.8. Menu position</h4>
+<div class="paragraph">
+<p>Selects the initial position for the main
 AltosUI window that includes all of the
-command buttons.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_map_cache_size"></a>11.7.9. Map Cache Size</h3></div></div></div><p>Sets the number of map <span class="emphasis"><em>tiles</em></span> kept in memory
+command buttons.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_map_cache_size">11.7.9. Map Cache Size</h4>
+<div class="paragraph">
+<p>Sets the number of map 'tiles' kept in memory
 while the application is running. More tiles
 consume more memory, but will make panning
-around the map faster.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_manage_frequencies"></a>11.7.10. Manage Frequencies</h3></div></div></div><p>This brings up a dialog where you can
+around the map faster.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_manage_frequencies">11.7.10. Manage Frequencies</h4>
+<div class="paragraph">
+<p>This brings up a dialog where you can
 configure the set of frequencies shown in the
 various frequency menus. You can add as many
 as you like, or even reconfigure the default
 set. Changing this list does not affect the
 frequency settings of any devices, it only
 changes the set of frequencies shown in the
-menus.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_configure_groundstation"></a>11.8. Configure Groundstation</h2></div></div></div><div class="figure"><a id="idm1648"></a><p class="title"><strong>Figure 11.17. Configure Groundstation Dialog</strong></p><div class="figure-contents"><div class="mediaobject"><img src="configure-groundstation.png" width="279" alt="configure-groundstation.png" /></div></div></div><br class="figure-break" /><p>Select this button and then select a TeleDongle or
-TeleBT Device from the list provided.</p><p>The first few lines of the dialog provide information
+menus.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configure_groundstation">11.8. Configure Groundstation</h3>
+<div class="imageblock">
+<div class="content">
+<img src="configure-groundstation.png" alt="configure groundstation" width="300">
+</div>
+<div class="title">Figure 24. Configure Groundstation Dialog</div>
+</div>
+<div class="paragraph">
+<p>Select this button and then select a TeleDongle or
+TeleBT Device from the list provided.</p>
+</div>
+<div class="paragraph">
+<p>The first few lines of the dialog provide information
 about the connected device, including the product
 name, software version and hardware serial
 number. Below that are the individual configuration
-entries.</p><p>Note that TeleDongle and TeleBT don’t save any
+entries.</p>
+</div>
+<div class="paragraph">
+<p>Note that TeleDongle and TeleBT don&#8217;t save any
 configuration data, the settings here are recorded on
 the local machine in the Java preferences
 database. Moving the device to another machine, or
 using a different user account on the same machine
-will cause settings made here to have no effect.</p><p>At the bottom of the dialog, there are three
-buttons:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Save
-</span></dt><dd>
-This writes any changes to the local Java
-preferences file. If you don’t press this
-button, any changes you make will be lost.
-</dd><dt><span class="term">
-Reset
-</span></dt><dd>
-This resets the dialog to the most recently
+will cause settings made here to have no effect.</p>
+</div>
+<div class="paragraph">
+<p>At the bottom of the dialog, there are three
+buttons:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Save</dt>
+<dd>
+<p>This writes any changes to the local Java
+preferences file. If you don&#8217;t press this
+button, any changes you make will be lost.</p>
+</dd>
+<dt class="hdlist1">Reset</dt>
+<dd>
+<p>This resets the dialog to the most recently
 saved values, erasing any changes you have
-made.
-</dd><dt><span class="term">
-Close
-</span></dt><dd>
-This closes the dialog. Any unsaved changes
-will be lost.
-</dd></dl></div><p>The rest of the dialog contains the parameters
-to be configured.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_frequency_2"></a>11.8.1. Frequency</h3></div></div></div><p>This configures the frequency to use for both
+made.</p>
+</dd>
+<dt class="hdlist1">Close</dt>
+<dd>
+<p>This closes the dialog. Any unsaved changes
+will be lost.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>The rest of the dialog contains the parameters
+to be configured.</p>
+</div>
+<div class="sect3">
+<h4 id="_frequency_2">11.8.1. Frequency</h4>
+<div class="paragraph">
+<p>This configures the frequency to use for both
 telemetry and packet command mode. Set this
 before starting any operation involving packet
 command mode so that it will use the right
 frequency. Telemetry monitoring mode also
 provides a menu to change the frequency, and
 that menu also sets the same Java preference
-value used here.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_rf_calibration_2"></a>11.8.2. RF Calibration</h3></div></div></div><p>The radios in every Altus Metrum device are
+value used here.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_rf_calibration_2">11.8.2. RF Calibration</h4>
+<div class="paragraph">
+<p>The radios in every Altus Metrum device are
 calibrated at the factory to ensure that they
 transmit and receive on the specified
-frequency.  To change a TeleDongle or TeleBTs
+frequency.  To change a TeleDongle or TeleBT&#8217;s
 calibration, you must reprogram the unit
 completely, so this entry simply shows the
-current value and doesn’t allow any changes.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telemetry_rate"></a>11.8.3. Telemetry Rate</h3></div></div></div><p>This lets you match the telemetry and packet
-link rate from the transmitter. If they don’t
-match, the device won’t receive any data.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_flash_image"></a>11.9. Flash Image</h2></div></div></div><p>This reprograms Altus Metrum devices with new
+current value and doesn&#8217;t allow any changes.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_telemetry_rate">11.8.3. Telemetry Rate</h4>
+<div class="paragraph">
+<p>This lets you match the telemetry and packet
+link rate from the transmitter. If they don&#8217;t
+match, the device won&#8217;t receive any data.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_flash_image">11.9. Flash Image</h3>
+<div class="paragraph">
+<p>This reprograms Altus Metrum devices with new
 firmware.
 TeleMetrum v1.x, TeleDongle v0.2, TeleMini v1.0
 and TeleBT v1.0 are all reprogrammed by using another
@@ -1342,68 +3427,129 @@ EasyMini and TeleDongle v3 are all
 programmed directly
 over USB (self programming). Please read
 the directions for flashing devices in
-<a class="xref" href="#_updating_device_firmware" title="Appendix C. Updating Device Firmware">Appendix C, <em>Updating Device Firmware</em></a>.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_fire_igniter"></a>11.10. Fire Igniter</h2></div></div></div><div class="figure"><a id="idm1688"></a><p class="title"><strong>Figure 11.18. Fire Igniter Window</strong></p><div class="figure-contents"><div class="mediaobject"><img src="fire-igniter.png" width="108" alt="fire-igniter.png" /></div></div></div><br class="figure-break" /><p>This activates the igniter circuits in the flight
+<a href="#_updating_device_firmware">Updating Device Firmware</a>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_fire_igniter">11.10. Fire Igniter</h3>
+<div class="imageblock">
+<div class="content">
+<img src="fire-igniter.png" alt="fire igniter" width="120">
+</div>
+<div class="title">Figure 25. Fire Igniter Window</div>
+</div>
+<div class="paragraph">
+<p>This activates the igniter circuits in the flight
 computer to help test recovery systems
 deployment.
 Because this command can operate over the
 Packet Command Link, you can prepare the rocket as for
 flight and then test the recovery system without
-needing to snake wires inside the air-frame.</p><p>Selecting the <span class="emphasis"><em>Fire Igniter</em></span> button brings up the
+needing to snake wires inside the air-frame.</p>
+</div>
+<div class="paragraph">
+<p>Selecting the 'Fire Igniter' button brings up the
 usual device selection dialog. Pick the desired
 device. This brings up another window which shows the
 current continuity test status for all of the pyro
-channels.</p><p>Next, select the desired igniter to fire. This will
-enable the <span class="emphasis"><em>Arm</em></span> button.</p><p>Select the <span class="emphasis"><em>Arm</em></span> button. This enables the <span class="emphasis"><em>Fire</em></span>
-button. The word <span class="emphasis"><em>Arm</em></span> is replaced by a countdown
+channels.</p>
+</div>
+<div class="paragraph">
+<p>Next, select the desired igniter to fire. This will
+enable the 'Arm' button.</p>
+</div>
+<div class="paragraph">
+<p>Select the 'Arm' button. This enables the 'Fire'
+button. The word 'Arm' is replaced by a countdown
 timer indicating that you have 10 seconds to press the
-<span class="emphasis"><em>Fire</em></span> button or the system will deactivate, at which
+'Fire' button or the system will deactivate, at which
 point you start over again at selecting the desired
-igniter.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_scan_channels"></a>11.11. Scan Channels</h2></div></div></div><div class="figure"><a id="idm1707"></a><p class="title"><strong>Figure 11.19. Scan Channels Window</strong></p><div class="figure-contents"><div class="mediaobject"><img src="scan-channels.png" width="288" alt="scan-channels.png" /></div></div></div><br class="figure-break" /><p>This listens for telemetry packets on all of the
+igniter.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_scan_channels">11.11. Scan Channels</h3>
+<div class="imageblock">
+<div class="content">
+<img src="scan-channels.png" alt="scan channels" width="300">
+</div>
+<div class="title">Figure 26. Scan Channels Window</div>
+</div>
+<div class="paragraph">
+<p>This listens for telemetry packets on all of the
 configured frequencies, displaying information about
 each device it receives a packet from. You can select
 which of the baud rates and telemetry formats should
 be tried; by default, it only listens at 38400 baud
 with the standard telemetry format used in v1.0 and
-later firmware.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_load_maps"></a>11.12. Load Maps</h2></div></div></div><div class="figure"><a id="idm1717"></a><p class="title"><strong>Figure 11.20. Load Maps Window</strong></p><div class="figure-contents"><div class="mediaobject"><img src="load-maps.png" width="468" alt="load-maps.png" /></div></div></div><br class="figure-break" /><p>Before heading out to a new launch site, you can use
-this to load satellite images in case you don’t have
+later firmware.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_load_maps">11.12. Load Maps</h3>
+<div class="imageblock">
+<div class="content">
+<img src="load-maps.png" alt="load maps" width="500">
+</div>
+<div class="title">Figure 27. Load Maps Window</div>
+</div>
+<div class="paragraph">
+<p>Before heading out to a new launch site, you can use
+this to load satellite images in case you don&#8217;t have
 internet connectivity at the site.  Try not to wait
-until the last minute, though, particularly if youre
+until the last minute, though, particularly if you&#8217;re
 heading to a major launch.  If too many people are
 all trying to download map data at once, Google may
-limit access until the next day.</p><p>There’s a drop-down menu of launch sites we know
-about; if your favorites aren’t there, please let us
+limit access until the next day.</p>
+</div>
+<div class="paragraph">
+<p>There&#8217;s a drop-down menu of launch sites we know
+about; if your favorites aren&#8217;t there, please let us
 know the lat/lon and name of the site. The contents of
 this list are actually downloaded from our server at
-run-time, so as new sites are sent in, theyll get
+run-time, so as new sites are sent in, they&#8217;ll get
 automatically added to this list.  If the launch site
-isn’t in the list, you can manually enter the lat/lon
-values</p><p>There are four different kinds of maps you can view;
+isn&#8217;t in the list, you can manually enter the lat/lon
+values</p>
+</div>
+<div class="paragraph">
+<p>There are four different kinds of maps you can view;
 you can select which to download by selecting as many
-as you like from the available types:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Hybrid
-</span></dt><dd>
-A combination of satellite imagery and road data. This
-is the default view.
-</dd><dt><span class="term">
-Satellite
-</span></dt><dd>
-Just the satellite imagery without any annotation.
-</dd><dt><span class="term">
-Roadmap
-</span></dt><dd>
-Roads, political boundaries and a few geographic
-features.
-</dd><dt><span class="term">
-Terrain
-</span></dt><dd>
-Contour intervals and shading that show hills and
-valleys.
-</dd></dl></div><p>You can specify the range of zoom levels to download;
+as you like from the available types:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Hybrid</dt>
+<dd>
+<p>A combination of satellite imagery and road data. This
+is the default view.</p>
+</dd>
+<dt class="hdlist1">Satellite</dt>
+<dd>
+<p>Just the satellite imagery without any annotation.</p>
+</dd>
+<dt class="hdlist1">Roadmap</dt>
+<dd>
+<p>Roads, political boundaries and a few geographic
+features.</p>
+</dd>
+<dt class="hdlist1">Terrain</dt>
+<dd>
+<p>Contour intervals and shading that show hills and
+valleys.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>You can specify the range of zoom levels to download;
 smaller numbers show more area with less
 resolution. The default level, 0, shows about
 3m/pixel. One zoom level change doubles or halves that
 number. Larger zoom levels show more detail, smaller
-zoom levels less.</p><p>The Map Radius value sets how large an area around the
+zoom levels less.</p>
+</div>
+<div class="paragraph">
+<p>The Map Radius value sets how large an area around the
 center point to download. Select a value large enough
 to cover any plausible flight from that site. Be aware
 that loading a large area with a high maximum zoom
@@ -1411,204 +3557,302 @@ level can attempt to download a lot of data. Loading
 hybrid maps with a 10km radius at a minimum zoom of -2
 and a maximum zoom of 2 consumes about 120MB of
 space. Terrain and road maps consume about 1/10 as
-much space as satellite or hybrid maps.</p><p>Clicking the <span class="emphasis"><em>Load Map</em></span> button will fetch images from
+much space as satellite or hybrid maps.</p>
+</div>
+<div class="paragraph">
+<p>Clicking the 'Load Map' button will fetch images from
 Google Maps; note that Google limits how many images
 you can fetch at once, so if you load more than one
 launch site, you may get some gray areas in the map
 which indicate that Google is tired of sending data to
-you. Try again later.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_monitor_idle"></a>11.13. Monitor Idle</h2></div></div></div><div class="figure"><a id="idm1750"></a><p class="title"><strong>Figure 11.21. Monitor Idle Window</strong></p><div class="figure-contents"><div class="mediaobject"><img src="monitor-idle.png" width="468" alt="monitor-idle.png" /></div></div></div><br class="figure-break" /><p>This brings up a dialog similar to the Monitor Flight
+you. Try again later.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_monitor_idle">11.13. Monitor Idle</h3>
+<div class="imageblock">
+<div class="content">
+<img src="monitor-idle.png" alt="monitor idle" width="500">
+</div>
+<div class="title">Figure 28. Monitor Idle Window</div>
+</div>
+<div class="paragraph">
+<p>This brings up a dialog similar to the Monitor Flight
 UI, except it works with the altimeter in “idle” mode
 by sending query commands to discover the current
 state rather than listening for telemetry
 packets. Because this uses command mode, it needs to
 have the TeleDongle and flight computer callsigns
 match exactly. If you can receive telemetry, but
-cannot manage to run Monitor Idle, then it’s very
-likely that your callsigns are different in some way.</p><p>You can change the frequency and callsign used to
+cannot manage to run Monitor Idle, then it&#8217;s very
+likely that your callsigns are different in some way.</p>
+</div>
+<div class="paragraph">
+<p>You can change the frequency and callsign used to
 communicate with the flight computer; they must both
 match the configuration in the flight computer
-exactly.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_altosdroid"></a>Chapter 12. AltosDroid</h1></div></div></div><p>AltosDroid provides the same flight monitoring capabilities as
+exactly.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_altosdroid">12. AltosDroid</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>AltosDroid provides the same flight monitoring capabilities as
 AltosUI, but runs on Android devices. AltosDroid is designed
 to connect to a TeleBT receiver over Bluetooth™ and (on
 Android devices supporting USB On-the-go) TeleDongle and
 TeleBT devices over USB. AltosDroid monitors telemetry data,
 logging it to internal storage in the Android device, and
-presents that data in a UI similar to the <span class="emphasis"><em>Monitor Flight</em></span>
-window in AltosUI.</p><p>This manual will explain how to configure AltosDroid, connect
+presents that data in a UI similar to the 'Monitor Flight'
+window in AltosUI.</p>
+</div>
+<div class="paragraph">
+<p>This manual will explain how to configure AltosDroid, connect
 to TeleBT or TeleDongle, operate the flight monitoring
-interface and describe what the displayed data means.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_installing_altosdroid"></a>12.1. Installing AltosDroid</h2></div></div></div><p>AltosDroid is available from the Google Play store. To
+interface and describe what the displayed data means.</p>
+</div>
+<div class="sect2">
+<h3 id="_installing_altosdroid">12.1. Installing AltosDroid</h3>
+<div class="paragraph">
+<p>AltosDroid is available from the Google Play store. To
 install it on your Android device, open the Google
 Play Store application and search for
-“altosdroid”. Make sure you dont have a space between
-“altos” and “droid” or you probably wont find what
+“altosdroid”. Make sure you don&#8217;t have a space between
+“altos” and “droid” or you probably won&#8217;t find what
 you want. That should bring you to the right page from
-which you can download and install the application.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_charging_telebt_battery"></a>12.2. Charging TeleBT Battery</h2></div></div></div><p>Before using TeleBT with AltosDroid, make sure the
+which you can download and install the application.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_charging_telebt_battery">12.2. Charging TeleBT Battery</h3>
+<div class="paragraph">
+<p>Before using TeleBT with AltosDroid, make sure the
 internal TeleBT battery is charged.  To do this,
 attach a micro USB cable from a computer or other USB
 power source to TeleBT.  A dual LED on the circuit
 board should illuminate, showing red while the battery
 is charging, green when charging is completed, and
 both red and green on at the same time if there is a
-battery fault.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_connecting_to_telebt_over_bluetooth"></a>12.3. Connecting to TeleBT over Bluetooth™</h2></div></div></div><p>Press the Android <span class="emphasis"><em>Menu</em></span> button or soft-key to see the
-configuration options available. Select the <span class="emphasis"><em>Connect a
-device</em></span> option and then the <span class="emphasis"><em>Scan for devices</em></span> entry
+battery fault.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_connecting_to_telebt_over_bluetooth">12.3. Connecting to TeleBT over Bluetooth™</h3>
+<div class="paragraph">
+<p>Press the Android 'Menu' button or soft-key to see the
+configuration options available. Select the 'Connect a
+device' option and then the 'Scan for devices' entry
 at the bottom to look for your TeleBT device. Select
 your device, and when it asks for the code, enter
-<span class="emphasis"><em>1234</em></span>.</p><p>Subsequent connections will not require you to enter
-that code, and your <span class="emphasis"><em>paired</em></span> device will appear in the
-list without scanning.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_connecting_to_teledongle_or_telebt_over_usb"></a>12.4. Connecting to TeleDongle or TeleBT over USB</h2></div></div></div><p>Get a special USB On-the-go adapter cable. These
+'1234'.</p>
+</div>
+<div class="paragraph">
+<p>Subsequent connections will not require you to enter
+that code, and your 'paired' device will appear in the
+list without scanning.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_connecting_to_teledongle_or_telebt_over_usb">12.4. Connecting to TeleDongle or TeleBT over USB</h3>
+<div class="paragraph">
+<p>Get a special USB On-the-go adapter cable. These
 cables have a USB micro-B male connector on one end
 and a standard A female connector on the other
 end. Plug in your TeleDongle or TeleBT device to the
 adapter cable and the adapter cable into your phone
 and AltosDroid should automatically start up. If it
-doesn’t, the most likely reason is that your Android
-device doesn’t support USB On-the-go.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_altosdroid_menu"></a>12.5. AltosDroid Menu</h2></div></div></div><p>The main AltosDroid menu has a selection of operation
-and configuration options.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Connect a device
-</span></dt><dd>
-Offers a menu of available TeleBT devices, and an
-option to scan for additional devices.
-</dd><dt><span class="term">
-Disconnect device
-</span></dt><dd>
-Disconnects the current TeleBT or TeleDongle
+doesn&#8217;t, the most likely reason is that your Android
+device doesn&#8217;t support USB On-the-go.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_altosdroid_menu">12.5. AltosDroid Menu</h3>
+<div class="paragraph">
+<p>The main AltosDroid menu has a selection of operation
+and configuration options.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Connect a device</dt>
+<dd>
+<p>Offers a menu of available TeleBT devices, and an
+option to scan for additional devices.</p>
+</dd>
+<dt class="hdlist1">Disconnect device</dt>
+<dd>
+<p>Disconnects the current TeleBT or TeleDongle
 device. You can reconnect TeleBT over bluetooth by
 using Connect a Device. You can reconnect a USB device
-by unplugging it and then plugging it back in.
-</dd><dt><span class="term">
-Select radio frequency
-</span></dt><dd>
-This selects which frequency to listen on by bringing
+by unplugging it and then plugging it back in.</p>
+</dd>
+<dt class="hdlist1">Select radio frequency</dt>
+<dd>
+<p>This selects which frequency to listen on by bringing
 up a menu of pre-set radio frequencies. Pick the one
-which matches your altimeter.
-</dd><dt><span class="term">
-Select Tracker
-</span></dt><dd>
-Switches the information displays to show data for a
+which matches your altimeter.</p>
+</dd>
+<dt class="hdlist1">Select Tracker</dt>
+<dd>
+<p>Switches the information displays to show data for a
 different transmitting device. The map will always
 show all of the devices in view. Trackers are shown
 and selected by serial number, so make sure you note
-the serial number of devices in each airframe.
-</dd><dt><span class="term">
-Delete Track
-</span></dt><dd>
-Deletes all information about a transmitting device.
-</dd><dt><span class="term">
-Setup
-</span></dt><dd>
-Offers additional configuration operations. See
-<a class="xref" href="#_setup" title="12.6. Setup">Section 12.6, “Setup”</a>.
-</dd><dt><span class="term">
-Idle Mode
-</span></dt><dd>
-Communicate with an altimeter in Idle mode. See <a class="xref" href="#_idle_mode" title="12.7. Idle Mode">Section 12.7, “Idle Mode”</a>
-</dd><dt><span class="term">
-Quit
-</span></dt><dd>
-Shuts down AltosDroid.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_setup"></a>12.6. Setup</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Telemetry Rate
-</span></dt><dd>
-Altus Metrum transmitters can be configured to operate
+the serial number of devices in each airframe.</p>
+</dd>
+<dt class="hdlist1">Delete Track</dt>
+<dd>
+<p>Deletes all information about a transmitting device.</p>
+</dd>
+<dt class="hdlist1">Setup</dt>
+<dd>
+<p>Offers additional configuration operations. See
+<a href="#_setup">Setup</a>.</p>
+</dd>
+<dt class="hdlist1">Idle Mode</dt>
+<dd>
+<p>Communicate with an altimeter in Idle mode. See <a href="#_idle_mode">Idle Mode</a></p>
+</dd>
+<dt class="hdlist1">Quit</dt>
+<dd>
+<p>Shuts down AltosDroid.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_setup">12.6. Setup</h3>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Telemetry Rate</dt>
+<dd>
+<p>Altus Metrum transmitters can be configured to operate
 at lower data rates to improve transmission range. If
 you have configured your device to do this, this menu
-item allows you to change the receiver to match.
-</dd><dt><span class="term">
-Units
-</span></dt><dd>
-Selects which units used to report values.
-</dd><dt><span class="term">
-Map Type
-</span></dt><dd>
-Displays a menu of map types and lets you select
+item allows you to change the receiver to match.</p>
+</dd>
+<dt class="hdlist1">Units</dt>
+<dd>
+<p>Selects which units used to report values.</p>
+</dd>
+<dt class="hdlist1">Map Type</dt>
+<dd>
+<p>Displays a menu of map types and lets you select
 one. Hybrid maps include satellite images with a
 roadmap overlaid. Satellite maps dispense with the
 roadmap overlay. Roadmap shows just the roads. Terrain
 includes roads along with shadows indicating changes
-in elevation, and other geographical features.
-</dd><dt><span class="term">
-Map Source
-</span></dt><dd>
-Select between online and offline maps. Online maps
-will show a <span class="emphasis"><em>move to current position</em></span> icon in the
+in elevation, and other geographical features.</p>
+</dd>
+<dt class="hdlist1">Map Source</dt>
+<dd>
+<p>Select between online and offline maps. Online maps
+will show a 'move to current position' icon in the
 upper right corner, while offline maps will have
 copyright information all over the map. Otherwise,
-they’re pretty similar.
-</dd><dt><span class="term">
-Preload Maps
-</span></dt><dd>
-Brings up a dialog allowing you to download offline
+they&#8217;re pretty similar.</p>
+</dd>
+<dt class="hdlist1">Preload Maps</dt>
+<dd>
+<p>Brings up a dialog allowing you to download offline
 map tiles so that you can have maps available even if
-you have no network connectivity at the launch site.
-</dd><dt><span class="term">
-Manage Frequencies
-</span></dt><dd>
-This presents a dialog containing the current list of
-frequencies that will be show in the <span class="emphasis"><em>Select radio
-frequency</em></span> menu. You can change the label for existing
-frequencies, delete or add new frequencies.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_idle_mode"></a>12.7. Idle Mode</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Callsign
-</span></dt><dd>
-Lets you configure the callsign used by AltosDroid to
+you have no network connectivity at the launch site.</p>
+</dd>
+<dt class="hdlist1">Manage Frequencies</dt>
+<dd>
+<p>This presents a dialog containing the current list of
+frequencies that will be show in the 'Select radio
+frequency' menu. You can change the label for existing
+frequencies, delete or add new frequencies.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_idle_mode">12.7. Idle Mode</h3>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Callsign</dt>
+<dd>
+<p>Lets you configure the callsign used by AltosDroid to
 communicate with the flight computer. The callsign on
 the two devices must match or the communication will
 fail. This provides a modest amount of protection
 against accidentally controlling another persons
-flight computer.
-</dd><dt><span class="term">
-Monitor
-</span></dt><dd>
-This provides similar information to monitoring the
+flight computer.</p>
+</dd>
+<dt class="hdlist1">Monitor</dt>
+<dd>
+<p>This provides similar information to monitoring the
 telemetry stream from a flight computer in flight
 mode. The title of the application will change to
-include (idle) so you can tell this mode is active.
-</dd><dt><span class="term">
-Reboot
-</span></dt><dd>
-Remotely reboots the flight computer. This is useful
+include (idle) so you can tell this mode is active.</p>
+</dd>
+<dt class="hdlist1">Reboot</dt>
+<dd>
+<p>Remotely reboots the flight computer. This is useful
 when the flight computers turned on while the airframe
 is horizontal and you want to restart the flight
 computers in pad mode after raising the airframe to
-vertical.
-</dd><dt><span class="term">
-Fire Igniters
-</span></dt><dd>
-Remotely control igniters for ground testing recovery
-systems.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_altosdroid_flight_monitoring"></a>12.8. AltosDroid Flight Monitoring</h2></div></div></div><p>AltosDroid is designed to mimic the AltosUI flight
+vertical.</p>
+</dd>
+<dt class="hdlist1">Fire Igniters</dt>
+<dd>
+<p>Remotely control igniters for ground testing recovery
+systems.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_altosdroid_flight_monitoring">12.8. AltosDroid Flight Monitoring</h3>
+<div class="paragraph">
+<p>AltosDroid is designed to mimic the AltosUI flight
 monitoring display, providing separate tabs for each
 stage of your rocket flight along with a tab
 containing a map of the local area with icons marking
 the current location of the altimeter and the Android
-device.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_pad"></a>12.9. Pad</h2></div></div></div><p>The <span class="emphasis"><em>Pad</em></span> tab shows information used to decide when
+device.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_pad">12.9. Pad</h3>
+<div class="paragraph">
+<p>The 'Pad' tab shows information used to decide when
 the rocket is ready for flight. The first elements
 include red/green indicators, if any of these is red,
-you’ll want to evaluate whether the rocket is ready to
-launch.</p><p>When the pad tab is selected, the voice responses will
+you&#8217;ll want to evaluate whether the rocket is ready to
+launch.</p>
+</div>
+<div class="paragraph">
+<p>When the pad tab is selected, the voice responses will
 include status changes to the igniters and GPS
 reception, letting you know if the rocket is still
-ready for launch.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Battery
-</span></dt><dd>
-This indicates whether the Li-Po battery powering the
+ready for launch.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Battery</dt>
+<dd>
+<p>This indicates whether the Li-Po battery powering the
 transmitter has sufficient charge to last for the
 duration of the flight. A value of more than 3.8V is
-required for a <span class="emphasis"><em>GO</em></span> status.
-</dd><dt><span class="term">
-Receiver Battery
-</span></dt><dd>
-This indicates whether the Li-Po battery powering the
+required for a 'GO' status.</p>
+</dd>
+<dt class="hdlist1">Receiver Battery</dt>
+<dd>
+<p>This indicates whether the Li-Po battery powering the
 TeleBT has sufficient charge to last for the duration
 of the flight. A value of more than 3.8V is required
-for a <span class="emphasis"><em>GO</em></span> status.
-</dd><dt><span class="term">
-Data Logging
-</span></dt><dd>
-This indicates whether there is space remaining
+for a 'GO' status.</p>
+</dd>
+<dt class="hdlist1">Data Logging</dt>
+<dd>
+<p>This indicates whether there is space remaining
 on-board to store flight data for the upcoming
-flight. If youve downloaded data, but failed to erase
+flight. If you&#8217;ve downloaded data, but failed to erase
 flights, there may not be any space left. TeleMetrum
 and TeleMega can store multiple flights, depending on
 the configured maximum flight log size. TeleGPS logs
@@ -1617,197 +3861,259 @@ flight, so it will need to be downloaded and erased
 after each flight to capture data. This only affects
 on-board flight logging; the altimeter will still
 transmit telemetry and fire ejection charges at the
-proper times.
-</dd><dt><span class="term">
-GPS Locked
-</span></dt><dd>
-For a TeleMetrum or TeleMega device, this indicates
+proper times.</p>
+</dd>
+<dt class="hdlist1">GPS Locked</dt>
+<dd>
+<p>For a TeleMetrum or TeleMega device, this indicates
 whether the GPS receiver is currently able to compute
 position information. GPS requires at least 4
-satellites to compute an accurate position.
-</dd><dt><span class="term">
-GPS Ready
-</span></dt><dd>
-For a TeleMetrum or TeleMega device, this indicates
+satellites to compute an accurate position.</p>
+</dd>
+<dt class="hdlist1">GPS Ready</dt>
+<dd>
+<p>For a TeleMetrum or TeleMega device, this indicates
 whether GPS has reported at least 10 consecutive
 positions without losing lock. This ensures that the
 GPS receiver has reliable reception from the
-satellites.
-</dd><dt><span class="term">
-Apogee Igniter
-</span></dt><dd>
-This indicates whether the apogee igniter has
+satellites.</p>
+</dd>
+<dt class="hdlist1">Apogee Igniter</dt>
+<dd>
+<p>This indicates whether the apogee igniter has
 continuity. If the igniter has a low resistance, then
 the voltage measured here will be close to the Li-Po
 battery voltage. A value greater than 3.2V is required
-for a <span class="emphasis"><em>GO</em></span> status.
-</dd><dt><span class="term">
-Main Igniter
-</span></dt><dd>
-This indicates whether the main igniter has
+for a 'GO' status.</p>
+</dd>
+<dt class="hdlist1">Main Igniter</dt>
+<dd>
+<p>This indicates whether the main igniter has
 continuity. If the igniter has a low resistance, then
 the voltage measured here will be close to the Li-Po
 battery voltage. A value greater than 3.2V is required
-for a <span class="emphasis"><em>GO</em></span> status.
-</dd><dt><span class="term">
-Igniter A-D
-</span></dt><dd>
-This indicates whether the indicated additional pyro
+for a 'GO' status.</p>
+</dd>
+<dt class="hdlist1">Igniter A-D</dt>
+<dd>
+<p>This indicates whether the indicated additional pyro
 channel igniter has continuity. If the igniter has a
 low resistance, then the voltage measured here will be
 close to the Li-Po battery voltage. A value greater
-than 3.2V is required for a <span class="emphasis"><em>GO</em></span> status.
-</dd></dl></div><p>The Pad tab also shows the location of the Android
-device.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_flight"></a>12.10. Flight</h2></div></div></div><p>The <span class="emphasis"><em>Flight</em></span> tab shows information used to evaluate
+than 3.2V is required for a 'GO' status.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>The Pad tab also shows the location of the Android
+device.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_flight">12.10. Flight</h3>
+<div class="paragraph">
+<p>The 'Flight' tab shows information used to evaluate
 and spot a rocket while in flight. It displays speed
 and height data to monitor the health of the rocket,
 along with elevation, range and bearing to help locate
-the rocket in the sky.</p><p>While the Flight tab is displayed, the voice
+the rocket in the sky.</p>
+</div>
+<div class="paragraph">
+<p>While the Flight tab is displayed, the voice
 announcements will include current speed, height,
-elevation and bearing information.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Speed
-</span></dt><dd>
-Shows current vertical speed. During descent, the
+elevation and bearing information.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Speed</dt>
+<dd>
+<p>Shows current vertical speed. During descent, the
 speed values are averaged over a fairly long time to
-try and make them steadier.
-</dd><dt><span class="term">
-Height
-</span></dt><dd>
-Shows the current height above the launch pad.
-</dd><dt><span class="term">
-Max Speed
-</span></dt><dd>
-Shows the maximum vertical speed seen during the
-flight.
-</dd><dt><span class="term">
-Max Height
-</span></dt><dd>
-Shows the maximum height above launch pad.
-</dd><dt><span class="term">
-Elevation
-</span></dt><dd>
-This is the angle above the horizon from the android
-devices current position.
-</dd><dt><span class="term">
-Range
-</span></dt><dd>
-The total distance from the android device to the
+try and make them steadier.</p>
+</dd>
+<dt class="hdlist1">Height</dt>
+<dd>
+<p>Shows the current height above the launch pad.</p>
+</dd>
+<dt class="hdlist1">Max Speed</dt>
+<dd>
+<p>Shows the maximum vertical speed seen during the
+flight.</p>
+</dd>
+<dt class="hdlist1">Max Height</dt>
+<dd>
+<p>Shows the maximum height above launch pad.</p>
+</dd>
+<dt class="hdlist1">Elevation</dt>
+<dd>
+<p>This is the angle above the horizon from the android
+devices current position.</p>
+</dd>
+<dt class="hdlist1">Range</dt>
+<dd>
+<p>The total distance from the android device to the
 rocket, including both ground distance and difference
 in altitude. Use this to gauge how large the rocket is
-likely to appear in the sky.
-</dd><dt><span class="term">
-Bearing
-</span></dt><dd>
-This is the azimuth from true north for the rocket
+likely to appear in the sky.</p>
+</dd>
+<dt class="hdlist1">Bearing</dt>
+<dd>
+<p>This is the azimuth from true north for the rocket
 from the android device. Use this in combination with
 the Elevation value to help locate the rocket in the
 sky, or at least to help point the antenna in the
 general direction. This is provided in both degrees
-and a compass point (like West South West). Youll
+and a compass point (like West South West). You&#8217;ll
 want to know which direction is true north before
-launching your rocket.
-</dd><dt><span class="term">
-Ground Distance
-</span></dt><dd>
-This shows the distance across the ground to the
+launching your rocket.</p>
+</dd>
+<dt class="hdlist1">Ground Distance</dt>
+<dd>
+<p>This shows the distance across the ground to the
 lat/lon where the rocket is located. Use this to
-estimate what is currently under the rocket.
-</dd><dt><span class="term">
-Latitude/Longitude
-</span></dt><dd>
-Displays the last known location of the rocket.
-</dd><dt><span class="term">
-Apogee Igniter
-</span></dt><dd>
-This indicates whether the apogee igniter has
+estimate what is currently under the rocket.</p>
+</dd>
+<dt class="hdlist1">Latitude/Longitude</dt>
+<dd>
+<p>Displays the last known location of the rocket.</p>
+</dd>
+<dt class="hdlist1">Apogee Igniter</dt>
+<dd>
+<p>This indicates whether the apogee igniter has
 continuity. If the igniter has a low resistance, then
 the voltage measured here will be close to the Li-Po
 battery voltage. A value greater than 3.2V is required
-for a <span class="emphasis"><em>GO</em></span> status.
-</dd><dt><span class="term">
-Main Igniter
-</span></dt><dd>
-This indicates whether the main igniter has
+for a 'GO' status.</p>
+</dd>
+<dt class="hdlist1">Main Igniter</dt>
+<dd>
+<p>This indicates whether the main igniter has
 continuity. If the igniter has a low resistance, then
 the voltage measured here will be close to the Li-Po
 battery voltage. A value greater than 3.2V is required
-for a <span class="emphasis"><em>GO</em></span> status.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_recover"></a>12.11. Recover</h2></div></div></div><p>The <span class="emphasis"><em>Recover</em></span> tab shows information used while
-recovering the rocket on the ground after flight.</p><p>While the Recover tab is displayed, the voice
+for a 'GO' status.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_recover">12.11. Recover</h3>
+<div class="paragraph">
+<p>The 'Recover' tab shows information used while
+recovering the rocket on the ground after flight.</p>
+</div>
+<div class="paragraph">
+<p>While the Recover tab is displayed, the voice
 announcements will include distance along with either
 bearing or direction, depending on whether you are
-moving.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Bearing
-</span></dt><dd>
-This is the azimuth from true north for the rocket
+moving.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Bearing</dt>
+<dd>
+<p>This is the azimuth from true north for the rocket
 from the android device. Use this in combination with
 the Elevation value to help locate the rocket in the
 sky, or at least to help point the antenna in the
 general direction. This is provided in both degrees
-and a compass point (like West South West). Youll
+and a compass point (like West South West). You&#8217;ll
 want to know which direction is true north before
-launching your rocket.
-</dd><dt><span class="term">
-Direction
-</span></dt><dd>
-When you are in motion, this provides the angle from
-your current direction of motion towards the rocket.
-</dd><dt><span class="term">
-Distance
-</span></dt><dd>
-Distance over the ground to the rocket.
-</dd><dt><span class="term">
-Tar Lat/Tar Lon
-</span></dt><dd>
-Displays the last known location of the rocket.
-</dd><dt><span class="term">
-My Lat/My Lon
-</span></dt><dd>
-Displays the location of the Android device.
-</dd><dt><span class="term">
-Max Height
-</span></dt><dd>
-Shows the maximum height above launch pad seen during
-the flight.
-</dd><dt><span class="term">
-Max Speed
-</span></dt><dd>
-Shows the maximum vertical speed seen during the
-flight.
-</dd><dt><span class="term">
-Max Accel
-</span></dt><dd>
-Shows the maximum vertical acceleration seen during
-the flight.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_map_2"></a>12.12. Map</h2></div></div></div><p>The <span class="emphasis"><em>Map</em></span> tab shows a map of the area around the
+launching your rocket.</p>
+</dd>
+<dt class="hdlist1">Direction</dt>
+<dd>
+<p>When you are in motion, this provides the angle from
+your current direction of motion towards the rocket.</p>
+</dd>
+<dt class="hdlist1">Distance</dt>
+<dd>
+<p>Distance over the ground to the rocket.</p>
+</dd>
+<dt class="hdlist1">Tar Lat/Tar Lon</dt>
+<dd>
+<p>Displays the last known location of the rocket.</p>
+</dd>
+<dt class="hdlist1">My Lat/My Lon</dt>
+<dd>
+<p>Displays the location of the Android device.</p>
+</dd>
+<dt class="hdlist1">Max Height</dt>
+<dd>
+<p>Shows the maximum height above launch pad seen during
+the flight.</p>
+</dd>
+<dt class="hdlist1">Max Speed</dt>
+<dd>
+<p>Shows the maximum vertical speed seen during the
+flight.</p>
+</dd>
+<dt class="hdlist1">Max Accel</dt>
+<dd>
+<p>Shows the maximum vertical acceleration seen during
+the flight.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_map_2">12.12. Map</h3>
+<div class="paragraph">
+<p>The 'Map' tab shows a map of the area around the
 rocket being tracked along with information needed to
-recover it.</p><p>On the map itself, icons showing the location of the
+recover it.</p>
+</div>
+<div class="paragraph">
+<p>On the map itself, icons showing the location of the
 android device along with the last known location of
 each tracker. A blue line is drawn from the android
-device location to the currently selected tracker.</p><p>Below the map, the distance and either bearing or
+device location to the currently selected tracker.</p>
+</div>
+<div class="paragraph">
+<p>Below the map, the distance and either bearing or
 direction along with the lat/lon of the target and the
-android device are shown</p><p>The Map tab provides the same voice announcements as
-the Recover tab.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_downloading_flight_logs"></a>12.13. Downloading Flight Logs</h2></div></div></div><p>AltosDroid always saves every bit of telemetry data it
+android device are shown</p>
+</div>
+<div class="paragraph">
+<p>The Map tab provides the same voice announcements as
+the Recover tab.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_downloading_flight_logs">12.13. Downloading Flight Logs</h3>
+<div class="paragraph">
+<p>AltosDroid always saves every bit of telemetry data it
 receives. To download that to a computer for use with
 AltosUI, remove the SD card from your Android device,
-or connect your device to your computers USB port and
+or connect your device to your computer&#8217;s USB port and
 browse the files on that device. You will find
-<span class="emphasis"><em>.telem</em></span> files in the TeleMetrum directory that will
-work with AltosUI directly.</p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_system_operation"></a>Appendix A. System Operation</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_firmware_modes"></a>A.1. Firmware Modes</h2></div></div></div><p>The AltOS firmware build for the altimeters has two
+'.telem' files in the TeleMetrum directory that will
+work with AltosUI directly.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_system_operation">Appendix A: System Operation</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_firmware_modes">A.1. Firmware Modes</h3>
+<div class="paragraph">
+<p>The AltOS firmware build for the altimeters has two
 fundamental modes, “idle” and “flight”.  Which of these modes
 the firmware operates in is determined at start up
 time.
 For
 TeleMetrum, TeleMega and EasyMega, which have accelerometers, the mode is
 controlled by the orientation of the
-rocket (well, actually the board, of course) at the time
+rocket (well, actually the board, of course&#8230;&#8203;) at the time
 power is switched on.  If the rocket is “nose up”, then
-the flight computer assumes its on a rail or rod being prepared for
+the flight computer assumes it&#8217;s on a rail or rod being prepared for
 launch, so the firmware chooses flight mode.  However, if the
 rocket is more or less horizontal, the firmware instead enters
 idle mode.
 Since
-EasyMini doesnt
+EasyMini doesn&#8217;t
 have an
 accelerometer we can use to determine orientation, “idle” mode
 is selected if the board is connected via USB to a computer,
@@ -1815,13 +4121,19 @@ otherwise the board enters “flight” mode.
 TeleMini
 selects “idle” mode if it receives a command packet
 within the
-first five seconds of operation.</p><p>At power on, the altimeter will beep out the battery voltage
+first five seconds of operation.</p>
+</div>
+<div class="paragraph">
+<p>At power on, the altimeter will beep out the battery voltage
 to the nearest tenth of a volt.  Each digit is represented by
 a sequence of short “dit” beeps, with a pause between
 digits. A zero digit is represented with one long “dah”
 beep. Then there will be a short pause while the altimeter
 completes initialization and self test, and decides which mode
-to enter next.</p><p>In flight or “pad” mode, the altimeter engages the flight
+to enter next.</p>
+</div>
+<div class="paragraph">
+<p>In flight or “pad” mode, the altimeter engages the flight
 state machine, goes into transmit-only mode to send telemetry,
 and waits for launch to be detected.  Flight mode is indicated
 by an “di-dah-dah-dit” (“P” for pad) on the beeper or lights,
@@ -1831,9 +4143,12 @@ apogee continuity, two beeps/flashes indicate main continuity,
 three beeps/flashes indicate both apogee and main continuity,
 and one longer “brap” sound which is made by rapidly
 alternating between two tones indicates no continuity.  For a
-dual deploy flight, make sure youre getting three beeps or
+dual deploy flight, make sure you&#8217;re getting three beeps or
 flashes before launching!  For apogee-only or motor eject
-flights, do what makes sense.</p><p>If idle mode is entered, you will hear an audible “di-dit” or
+flights, do what makes sense.</p>
+</div>
+<div class="paragraph">
+<p>If idle mode is entered, you will hear an audible “di-dit” or
 see two short flashes (“I” for idle), and the flight state
 machine is disengaged, thus no ejection charges will fire.
 The altimeters also listen for the radio link when in idle
@@ -1843,52 +4158,87 @@ equivalently.
 TeleMini only has the radio link.
 Idle mode is useful for configuring the altimeter, for
 extracting data from the on-board storage chip after
-flight, and for ground testing pyro charges.</p><p>In “Idle” and “Pad” modes, once the mode indication
+flight, and for ground testing pyro charges.</p>
+</div>
+<div class="paragraph">
+<p>In “Idle” and “Pad” modes, once the mode indication
 beeps/flashes and continuity indication has been sent, if
 there is no space available to log the flight in on-board
 memory, the flight computer will emit a warbling tone (much
-slower than the “no continuity tone”)</p><p>See <a class="xref" href="#_understanding_beeps" title="3.5. Understanding Beeps">Section 3.5, “Understanding Beeps”</a> for a summary of all of
-the audio signals used.</p><p>Once landed, the flight computer will signal that by emitting
+slower than the “no continuity tone”)</p>
+</div>
+<div class="paragraph">
+<p>See <a href="#_understanding_beeps">Understanding Beeps</a> for a summary of all of
+the audio signals used.</p>
+</div>
+<div class="paragraph">
+<p>Once landed, the flight computer will signal that by emitting
 the “Landed” sound described above, after which it will beep
 out the apogee height (in meters). Each digit is represented
 by a sequence of short “dit” beeps, with a pause between
 digits. A zero digit is represented with one long “dah”
 beep. The flight computer will continue to report landed mode
-and beep out the maximum height until turned off.</p><p>One “neat trick” of particular value when TeleMetrum, TeleMega
+and beep out the maximum height until turned off.</p>
+</div>
+<div class="paragraph">
+<p>One “neat trick” of particular value when TeleMetrum, TeleMega
 or EasyMega are used with
 very large air-frames, is that you can power the board up while the
 rocket is horizontal, such that it comes up in idle mode.  Then you can
-raise the air-frame to launch position, and issue a <span class="emphasis"><em>reset</em></span> command
+raise the air-frame to launch position, and issue a 'reset' command
 via TeleDongle over the radio link to cause the altimeter to reboot and
 come up in flight mode.  This is much safer than standing on the top
 step of a rickety step-ladder or hanging off the side of a launch
 tower with a screw-driver trying to turn on your avionics before
-installing igniters!</p><p>TeleMini is configured solely via the radio link. Of course, that
+installing igniters!</p>
+</div>
+<div class="paragraph">
+<p>TeleMini is configured solely via the radio link. Of course, that
 means you need to know the TeleMini radio configuration values
-or you wont be able to communicate with it. For situations
-when you dont have the radio configuration values,
+or you won&#8217;t be able to communicate with it. For situations
+when you don&#8217;t have the radio configuration values,
 TeleMini v1.0
-offers an <span class="emphasis"><em>emergency recovery</em></span> mode. In this mode,
+offers an 'emergency recovery' mode. In this mode,
 TeleMini v1.0 is
-configured as follows:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Sets the radio frequency to 434.550MHz
-</li><li class="listitem">
-Sets the radio calibration back to the factory value.
-</li><li class="listitem">
-Sets the callsign to N0CALL
-</li><li class="listitem">
-Does not go to <span class="emphasis"><em>pad</em></span> mode after five seconds.
-</li></ul></div><p>To get into <span class="emphasis"><em>emergency recovery</em></span> mode, first find the row of
+configured as follows:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Sets the radio frequency to 434.550MHz</p>
+</li>
+<li>
+<p>Sets the radio calibration back to the factory value.</p>
+</li>
+<li>
+<p>Sets the callsign to N0CALL</p>
+</li>
+<li>
+<p>Does not go to 'pad' mode after five seconds.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>To get into 'emergency recovery' mode, first find the row of
 four small holes opposite the switch wiring. Using a short
 piece of small gauge wire, connect the outer two holes
 together, then power TeleMini up. Once the red LED is lit,
-disconnect the wire and the board should signal that it’s in
-<span class="emphasis"><em>idle</em></span> mode after the initial five second startup
-period.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_gps"></a>A.2. GPS</h2></div></div></div><p>TeleMetrum and TeleMega include a complete GPS receiver.  A
+disconnect the wire and the board should signal that it&#8217;s in
+'idle' mode after the initial five second startup
+period.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_gps">A.2. GPS</h3>
+<div class="paragraph">
+<p>TeleMetrum and TeleMega include a complete GPS receiver.  A
 complete explanation of how GPS works is beyond the scope of
 this manual, but the bottom line is that the GPS receiver
 needs to lock onto at least four satellites to obtain a solid
-3 dimensional position fix and know what time it is.</p><p>The flight computers provide backup power to the GPS chip any time a
+3 dimensional position fix and know what time it is.</p>
+</div>
+<div class="paragraph">
+<p>The flight computers provide backup power to the GPS chip any time a
 battery is connected.  This allows the receiver to “warm start” on
 the launch rail much faster than if every power-on were a GPS
 “cold start”.  In typical operations, powering up
@@ -1898,76 +4248,116 @@ start and acquire lock.  Then the board can be powered down during
 RSO review and installation on a launch rod or rail.  When the board
 is turned back on, the GPS system should lock very quickly, typically
 long before igniter installation and return to the flight line are
-complete.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_controlling_an_altimeter_over_the_radio_link"></a>A.3. Controlling An Altimeter Over The Radio Link</h2></div></div></div><p>One of the unique features of the Altus Metrum system is the
+complete.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_controlling_an_altimeter_over_the_radio_link">A.3. Controlling An Altimeter Over The Radio Link</h3>
+<div class="paragraph">
+<p>One of the unique features of the Altus Metrum system is the
 ability to create a two way command link between TeleDongle
 and an altimeter using the digital radio transceivers
 built into each device. This allows you to interact with the
 altimeter from afar, as if it were directly connected to the
-computer.</p><p>Any operation which can be performed with a flight computer can
+computer.</p>
+</div>
+<div class="paragraph">
+<p>Any operation which can be performed with a flight computer can
 either be done with the device directly connected to the
 computer via the USB cable, or through the radio
-link. TeleMini doesnt provide a USB connector and so it is
+link. TeleMini doesn&#8217;t provide a USB connector and so it is
 always communicated with over radio.  Select the appropriate
 TeleDongle device when the list of devices is presented and
-AltosUI will interact with an altimeter over the radio link.</p><p>One oddity in the current interface is how AltosUI selects the
+AltosUI will interact with an altimeter over the radio link.</p>
+</div>
+<div class="paragraph">
+<p>One oddity in the current interface is how AltosUI selects the
 frequency for radio communications. Instead of providing
 an interface to specifically configure the frequency, it uses
 whatever frequency was most recently selected for the target
-TeleDongle device in Monitor Flight mode. If you havent ever
+TeleDongle device in Monitor Flight mode. If you haven&#8217;t ever
 used that mode with the TeleDongle in question, select the
 Monitor Flight button from the top level UI, and pick the
 appropriate TeleDongle device.  Once the flight monitoring
 window is open, select the desired frequency and then close it
-down again. All radio communications will now use that frequency.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Save Flight Data—Recover flight data from the
-rocket without opening it up.
-</li><li class="listitem">
-Configure altimeter apogee delays, main deploy
+down again. All radio communications will now use that frequency.</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Save Flight Data—Recover flight data from the
+rocket without opening it up.</p>
+</li>
+<li>
+<p>Configure altimeter apogee delays, main deploy
 heights and additional pyro event conditions to
 respond to changing launch conditions. You can also
-<span class="emphasis"><em>reboot</em></span> the altimeter. Use this to remotely enable
+'reboot' the altimeter. Use this to remotely enable
 the flight computer by turning TeleMetrum or
 TeleMega on in “idle” mode, then once the air-frame
 is oriented for launch, you can reboot the
 altimeter and have it restart in pad mode without
-having to climb the scary ladder.
-</li><li class="listitem">
-Fire Igniters—Test your deployment charges without snaking
+having to climb the scary ladder.</p>
+</li>
+<li>
+<p>Fire Igniters—Test your deployment charges without snaking
 wires out through holes in the air-frame. Simply assemble the
 rocket as if for flight with the apogee and main charges
 loaded, then remotely command the altimeter to fire the
-igniters.
-</li></ul></div><p>Operation over the radio link for configuring an
+igniters.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Operation over the radio link for configuring an
 altimeter, ground testing igniters, and so forth uses
 the same RF frequencies as flight telemetry.  To
 configure the desired TeleDongle frequency, select the
 monitor flight tab, then use the frequency selector
 and close the window before performing other desired
-radio operations.</p><p>The flight computers only enable radio commanding in
-<span class="emphasis"><em>idle</em></span> mode.  TeleMetrum and TeleMega use the
+radio operations.</p>
+</div>
+<div class="paragraph">
+<p>The flight computers only enable radio commanding in
+'idle' mode.  TeleMetrum and TeleMega use the
 accelerometer to detect which orientation they start
 up in, so make sure you have the flight computer lying
 horizontally when you turn it on. Otherwise, it will
-start in <span class="emphasis"><em>pad</em></span> mode ready for flight, and will not be
-listening for command packets from TeleDongle.</p><p>TeleMini listens for a command packet for five seconds
-after first being turned on, if it doesn’t hear
-anything, it enters <span class="emphasis"><em>pad</em></span> mode, ready for flight and
+start in 'pad' mode ready for flight, and will not be
+listening for command packets from TeleDongle.</p>
+</div>
+<div class="paragraph">
+<p>TeleMini listens for a command packet for five seconds
+after first being turned on, if it doesn&#8217;t hear
+anything, it enters 'pad' mode, ready for flight and
 will no longer listen for command packets. The easiest
 way to connect to TeleMini is to initiate the command
 and select the TeleDongle device. At this point, the
 TeleDongle will be attempting to communicate with the
 TeleMini. Now turn TeleMini on, and it should
 immediately start communicating with the TeleDongle
-and the desired operation can be performed.</p><p>You can monitor the operation of the radio link by watching the
+and the desired operation can be performed.</p>
+</div>
+<div class="paragraph">
+<p>You can monitor the operation of the radio link by watching the
 lights on the devices. The red LED will flash each time a packet
 is transmitted, while the green LED will light up on TeleDongle when
-it is waiting to receive a packet from the altimeter.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ground_testing"></a>A.4. Ground Testing</h2></div></div></div><p>An important aspect of preparing a rocket using electronic deployment
+it is waiting to receive a packet from the altimeter.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ground_testing">A.4. Ground Testing</h3>
+<div class="paragraph">
+<p>An important aspect of preparing a rocket using electronic deployment
 for flight is ground testing the recovery system.
 Thanks
 to the bi-directional radio link central to the Altus Metrum system,
 this can be accomplished in a TeleMega, TeleMetrum or TeleMini equipped rocket
 with less work than you may be accustomed to with other systems.  It
-can even be fun!</p><p>Just prep the rocket for flight, then power up the altimeter
+can even be fun!</p>
+</div>
+<div class="paragraph">
+<p>Just prep the rocket for flight, then power up the altimeter
 in “idle”
 mode (placing air-frame horizontal for TeleMetrum or TeleMega, or
 selecting the Configure Altimeter tab for TeleMini).
@@ -1977,22 +4367,34 @@ state machine is disabled and charges will not fire without
 manual command.
 You can now command the altimeter to fire the apogee
 or main charges from a safe distance using your
-computer and the Fire Igniter tab to complete ejection testing.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_radio_link"></a>A.5. Radio Link</h2></div></div></div><p>TeleMetrum, TeleMini and TeleMega all incorporate an
-RF transceiver, but it’s not a full duplex system;
+computer and the Fire Igniter tab to complete ejection testing.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_radio_link">A.5. Radio Link</h3>
+<div class="paragraph">
+<p>TeleMetrum, TeleMini and TeleMega all incorporate an
+RF transceiver, but it&#8217;s not a full duplex system;
 each end can only be transmitting or receiving at any
 given moment. So we had to decide how to manage the
-link.</p><p>By design, the altimeter firmware listens for the
-radio link when it’s in “idle mode”, which allows us
+link.</p>
+</div>
+<div class="paragraph">
+<p>By design, the altimeter firmware listens for the
+radio link when it&#8217;s in “idle mode”, which allows us
 to use the radio link to configure the rocket, do
 things like ejection tests, and extract data after a
 flight without having to crack open the air-frame.
 However, when the board is in “flight mode”, the
-altimeter only transmits and doesnt listen at all.
-Thats because we want to put ultimate priority on
+altimeter only transmits and doesn&#8217;t listen at all.
+That&#8217;s because we want to put ultimate priority on
 event detection and getting telemetry out of the
 rocket through the radio in case the rocket crashes
-and we aren’t able to extract data later.</p><p>We don’t generally use a <span class="emphasis"><em>normal packet radio</em></span> mode
-like APRS because they’re just too inefficient.  The
+and we aren&#8217;t able to extract data later.</p>
+</div>
+<div class="paragraph">
+<p>We don&#8217;t generally use a 'normal packet radio' mode
+like APRS because they&#8217;re just too inefficient.  The
 GFSK modulation we use is FSK with the base-band
 pulses passed through a Gaussian filter before they go
 into the modulator to limit the transmitted bandwidth.
@@ -2000,67 +4402,186 @@ When combined with forward error correction and
 interleaving, this allows us to have a very robust
 19.2 kilobit data link with only 10-40 milliwatts of
 transmit power, a whip antenna in the rocket, and a
-hand-held Yagi on the ground.  Weve had flights to
+hand-held Yagi on the ground.  We&#8217;ve had flights to
 above 21k feet AGL with great reception, and
 calculations suggest we should be good to well over
 40k feet AGL with a 5-element yagi on the ground with
 our 10mW units and over 100k feet AGL with the 40mW
 devices.  We hope to fly boards to higher altitudes
 over time, and would of course appreciate customer
-feedback on performance in higher altitude flights!</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_aprs"></a>A.6. APRS</h2></div></div></div><p>TeleMetrum v2.0 and TeleMega can send APRS if desired, and the
+feedback on performance in higher altitude flights!</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_aprs">A.6. APRS</h3>
+<div class="paragraph">
+<p>TeleMetrum v2.0 and TeleMega can send APRS if desired, and the
 interval between APRS packets can be configured. As each APRS
 packet takes a full second to transmit, we recommend an
 interval of at least 5 seconds to avoid consuming too much
 battery power or radio channel bandwidth. You can configure
 the APRS interval using AltosUI; that process is described in
-<a class="xref" href="#_configure_altimeter" title="11.6. Configure Altimeter">Section 11.6, “Configure Altimeter”</a>.</p><p>AltOS supports both compressed and uncompressed APRS
+<a href="#_configure_altimeter">Configure Altimeter</a>.</p>
+</div>
+<div class="paragraph">
+<p>AltOS supports both compressed and uncompressed APRS
 position report data formats. The compressed format
 provides for higher position precision and shorter
-packets than the uncompressed APRS format. Weve found
+packets than the uncompressed APRS format. We&#8217;ve found
 some older APRS receivers that do not handle the
 compressed format. The Kenwood TH-72A requires the use
 of uncompressed format to display altitude information
 correctly. The Yaesu FT1D requires the use of
-compressed format to display altitude information.</p><p>APRS packets include an SSID (Secondary Station Identifier)
+compressed format to display altitude information.</p>
+</div>
+<div class="paragraph">
+<p>APRS packets include an SSID (Secondary Station Identifier)
 field that allows one operator to have multiple
 transmitters. AltOS allows you to set this to a single digit
 from 0 to 9, allowing you to fly multiple transmitters at the
 same time while keeping the identify of each one separate in
 the receiver. By default, the SSID is set to the last digit of
-the device serial number.</p><p>The APRS packet format includes a comment field that
+the device serial number.</p>
+</div>
+<div class="paragraph">
+<p>The APRS packet format includes a comment field that
 can have arbitrary text in it. AltOS uses this to send
-status information as shown in the following table.</p><div class="table"><a id="idm2086"></a><p class="title"><strong>Table A.1. Altus Metrum APRS Comments</strong></p><div class="table-contents"><table class="table" summary="Altus Metrum APRS Comments" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Field        </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Example        </th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>L</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>GPS Status U for unlocked, L for locked</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Number of Satellites in View</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B4.0</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Altimeter Battery Voltage</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A3.7</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee Igniter Voltage</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>M3.7</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main Igniter Voltage</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1286</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Device Serial Number</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>1286</p></td><td style="" align="left" valign="top"><p>Device Serial Number</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Here’s an example of an APRS comment showing GPS lock with 6
+status information as shown in the following table.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 9. Altus Metrum APRS Comments</caption>
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Field</th>
+<th class="tableblock halign-left valign-top">Example</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">L</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GPS Status U for unlocked, L for locked</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Number of Satellites in View</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B4.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Altimeter Battery Voltage</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A3.7</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee Igniter Voltage</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">M3.7</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main Igniter Voltage</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1286</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Device Serial Number</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1286</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Device Serial Number</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Here&#8217;s an example of an APRS comment showing GPS lock with 6
 satellites in view, a primary battery at 4.0V, and
-apogee and main igniters both at 3.7V from device 1286.</p><pre class="literallayout">L6 B4.0 A3.7 M3.7 1286</pre><p>Here’s an example of an APRS comment showing GPS lock with 6
-satellites in view and a primary battery at 4.0V from device 1876.</p><pre class="literallayout">L6 B4.0 1876</pre><p>Make sure your primary battery is above 3.8V
+apogee and main igniters both at 3.7V from device 1286.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>L6 B4.0 A3.7 M3.7 1286</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Here&#8217;s an example of an APRS comment showing GPS lock with 6
+satellites in view and a primary battery at 4.0V from device 1876.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>L6 B4.0 1876</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Make sure your primary battery is above 3.8V
 any connected igniters are above 3.5V
 and GPS is locked with at least 5 or 6 satellites in
 view before flying. If GPS is switching between L and
-U regularly, then it doesn’t have a good lock and you
-should wait until it becomes stable.</p><p>If the GPS receiver loses lock, the APRS data
+U regularly, then it doesn&#8217;t have a good lock and you
+should wait until it becomes stable.</p>
+</div>
+<div class="paragraph">
+<p>If the GPS receiver loses lock, the APRS data
 transmitted will contain the last position for which
 GPS lock was available. You can tell that this has
 happened by noticing that the GPS status character
-switches from <span class="emphasis"><em>L</em></span> to <span class="emphasis"><em>U</em></span>. Before GPS has locked, APRS
+switches from 'L' to 'U'. Before GPS has locked, APRS
 will transmit zero for latitude, longitude and
-altitude.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_configurable_parameters"></a>A.7. Configurable Parameters</h2></div></div></div><p>Configuring an Altus Metrum altimeter for flight is
+altitude.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configurable_parameters">A.7. Configurable Parameters</h3>
+<div class="paragraph">
+<p>Configuring an Altus Metrum altimeter for flight is
 very simple.  Even on our baro-only TeleMini and
 EasyMini boards, the use of a Kalman filter means
 there is no need to set a “mach delay”.  All of the
 configurable parameters can be set using AltosUI. Read
-<a class="xref" href="#_configure_altimeter" title="11.6. Configure Altimeter">Section 11.6, “Configure Altimeter”</a> for more information.</p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_handling_precautions"></a>Appendix B. Handling Precautions</h1></div></div></div><p>All Altus Metrum products are sophisticated electronic devices.
+<a href="#_configure_altimeter">Configure Altimeter</a> for more information.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_handling_precautions">Appendix B: Handling Precautions</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>All Altus Metrum products are sophisticated electronic devices.
 When handled gently and properly installed in an air-frame, they
 will deliver impressive results.  However, as with all electronic
-devices, there are some precautions you must take.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>The Lithium Polymer rechargeable batteries have an
+devices, there are some precautions you must take.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<img src="./images/icons/warning.svg" alt="Warning">
+</td>
+<td class="content">
+The Lithium Polymer rechargeable batteries have an
 extraordinary power density.  This is great because we can fly with
 much less battery mass than if we used alkaline batteries or previous
-generation rechargeable batteries but if they are punctured
+generation rechargeable batteries&#8230;&#8203; but if they are punctured
 or their leads are allowed to short, they can and will release their
 energy very rapidly!
 Thus we recommend that you take some care when handling our batteries
 and consider giving them some extra protection in your air-frame.  We
 often wrap them in suitable scraps of closed-cell packing foam before
-strapping them down, for example.</p></div><p>The barometric sensors used on all of our flight computers are
+strapping them down, for example.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>The barometric sensors used on all of our flight computers are
 sensitive to sunlight.  In normal mounting situations, the baro sensor
 and all of the other surface mount components
 are “down” towards whatever the underlying mounting surface is, so
@@ -2072,196 +4593,304 @@ consider this with TeleMini v1.0, both because the baro sensor is on the
 use clear plastic for the payload bay!  Replacing these with an opaque
 cardboard tube, painting them, or wrapping them with a layer of masking
 tape are all reasonable approaches to keep the sensor out of direct
-sunlight.</p><p>The barometric sensor sampling port must be able to “breathe”,
+sunlight.</p>
+</div>
+<div class="paragraph">
+<p>The barometric sensor sampling port must be able to “breathe”,
 both by not being covered by foam or tape or other materials that might
 directly block the hole on the top of the sensor, and also by having a
-suitable static vent to outside air.</p><p>As with all other rocketry electronics, Altus Metrum altimeters must
+suitable static vent to outside air.</p>
+</div>
+<div class="paragraph">
+<p>As with all other rocketry electronics, Altus Metrum altimeters must
 be protected from exposure to corrosive motor exhaust and ejection
-charge gasses.</p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_updating_device_firmware"></a>Appendix C. Updating Device Firmware</h1></div></div></div><p>TeleMega, TeleMetrum v2, EasyMega, EasyMini and TeleDongle v3
+charge gasses.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_updating_device_firmware">Appendix C: Updating Device Firmware</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>TeleMega, TeleMetrum v2, EasyMega, EasyMini and TeleDongle v3
 are all
 programmed directly over their USB connectors (self
 programming).
 TeleMetrum v1, TeleMini v1.0 and TeleDongle v0.2 are
 all programmed by using another device as a programmer (pair
-programming). It’s important to recognize which kind of devices
-you have before trying to reprogram them.</p><p>You may wish to begin by ensuring you have current firmware
+programming). It&#8217;s important to recognize which kind of devices
+you have before trying to reprogram them.</p>
+</div>
+<div class="paragraph">
+<p>You may wish to begin by ensuring you have current firmware
 images.  These are distributed as part of the AltOS software
 bundle that also includes the AltosUI ground station program.
 Newer ground station versions typically work fine with older
-firmware versions, so you dont need to update your devices
+firmware versions, so you don&#8217;t need to update your devices
 just to try out new software features.  You can always
 download the most recent version from
-<a class="ulink" href="http://www.altusmetrum.org/AltOS/" target="_top">http://www.altusmetrum.org/AltOS/</a></p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_updating_telemega_telemetrum_v2_easymega_easymini_or_teledongle_v3_firmware"></a>C.1. Updating TeleMega, TeleMetrum v2, EasyMega, EasyMini or TeleDongle v3 Firmware</h2></div></div></div><p>Self-programmable devices are reprogrammed by
-connecting them to your computer over USB.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Attach a battery if necessary and power switch to
-the target device. Power up the device.
-</li><li class="listitem">
-Using a Micro USB cable, connect the target device to your
-computer’s USB socket.
-</li><li class="listitem">
-Run AltosUI, and select <span class="emphasis"><em>Flash Image</em></span> from the File menu.
-</li><li class="listitem">
-Select the target device in the Device Selection dialog.
-</li><li class="listitem">
-Select the image you want to flash to the device,
+<a href="http://www.altusmetrum.org/AltOS/" class="bare">http://www.altusmetrum.org/AltOS/</a></p>
+</div>
+<div class="sect2">
+<h3 id="_updating_telemega_telemetrum_v2_easymega_easymini_or_teledongle_v3_firmware">C.1. Updating TeleMega, TeleMetrum v2, EasyMega, EasyMini or TeleDongle v3 Firmware</h3>
+<div class="paragraph">
+<p>Self-programmable devices are reprogrammed by
+connecting them to your computer over USB.</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Attach a battery if necessary and power switch to
+the target device. Power up the device.</p>
+</li>
+<li>
+<p>Using a Micro USB cable, connect the target device to your
+computer&#8217;s USB socket.</p>
+</li>
+<li>
+<p>Run AltosUI, and select 'Flash Image' from the File menu.</p>
+</li>
+<li>
+<p>Select the target device in the Device Selection dialog.</p>
+</li>
+<li>
+<p>Select the image you want to flash to the device,
 which should have a name in the form
 &lt;product&gt;-v&lt;product-version&gt;-&lt;software-version&gt;.ihx,
-such as EasyMini-v1.0-1.6.0.ihx.
-</li><li class="listitem">
-Make sure the configuration parameters are
+such as EasyMini-v1.0-1.6.0.ihx.</p>
+</li>
+<li>
+<p>Make sure the configuration parameters are
 reasonable looking. If the serial number and/or RF
-configuration values aren’t right, you’ll need to
-change them.
-</li><li class="listitem">
-Hit the <span class="emphasis"><em>OK</em></span> button and the software should proceed
+configuration values aren&#8217;t right, you&#8217;ll need to
+change them.</p>
+</li>
+<li>
+<p>Hit the 'OK' button and the software should proceed
 to flash the device with new firmware, showing a
-progress bar.
-</li><li class="listitem">
-Verify that the device is working by using the
-<span class="emphasis"><em>Configure Altimeter</em></span> or <span class="emphasis"><em>Configure Groundstation</em></span>
-item to check over the configuration.
-</li></ol></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_recovering_from_self_flashing_failure"></a>C.1.1. Recovering From Self-Flashing Failure</h3></div></div></div><p>If the firmware loading fails, it can leave the device
+progress bar.</p>
+</li>
+<li>
+<p>Verify that the device is working by using the
+'Configure Altimeter' or 'Configure Groundstation'
+item to check over the configuration.</p>
+</li>
+</ol>
+</div>
+<div class="sect3">
+<h4 id="_recovering_from_self_flashing_failure">C.1.1. Recovering From Self-Flashing Failure</h4>
+<div class="paragraph">
+<p>If the firmware loading fails, it can leave the device
 unable to boot. Not to worry, you can force the device to
 start the boot loader instead, which will let you try to
-flash the device again.</p><p>On each device, connecting two pins from one of the exposed
+flash the device again.</p>
+</div>
+<div class="paragraph">
+<p>On each device, connecting two pins from one of the exposed
 connectors will force the boot loader to start, even if the
-regular operating system has been corrupted in some way.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-TeleMega
-</span></dt><dd>
-Connect pin 6 and pin 1 of the companion
+regular operating system has been corrupted in some way.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">TeleMega</dt>
+<dd>
+<p>Connect pin 6 and pin 1 of the companion
 connector. Pin 1 can be identified by the square pad
 around it, and then the pins could sequentially across
-the board. Be very careful to <span class="strong"><strong>not</strong></span> short pin 8 to
+the board. Be very careful to <strong>not</strong> short pin 8 to
 anything as that is connected directly to the
 battery. Pin 7 carries 3.3V and the board will crash
-if that is connected to pin 1, but shouldnt damage
-the board.
-</dd><dt><span class="term">
-EasyMega
-</span></dt><dd>
-Connect pin 6 and pin 1 of the companion
+if that is connected to pin 1, but shouldn&#8217;t damage
+the board.</p>
+</dd>
+<dt class="hdlist1">EasyMega</dt>
+<dd>
+<p>Connect pin 6 and pin 1 of the companion
 connector. Pin 1 can be identified by the square pad
 around it, and then the pins could sequentially across
-the board. Be very careful to <span class="strong"><strong>not</strong></span> short pin 8 to
+the board. Be very careful to <strong>not</strong> short pin 8 to
 anything as that is connected directly to the
 battery. Pin 7 carries 3.3V and the board will crash
-if that is connected to pin 1, but shouldnt damage
-the board.
-</dd><dt><span class="term">
-TeleMetrum v2
-</span></dt><dd>
-Connect pin 6 and pin 1 of the companion
+if that is connected to pin 1, but shouldn&#8217;t damage
+the board.</p>
+</dd>
+<dt class="hdlist1">TeleMetrum v2</dt>
+<dd>
+<p>Connect pin 6 and pin 1 of the companion
 connector. Pin 1 can be identified by the square pad
 around it, and then the pins could sequentially across
-the board. Be very careful to <span class="strong"><strong>not</strong></span> short pin 8 to
+the board. Be very careful to <strong>not</strong> short pin 8 to
 anything as that is connected directly to the
 battery. Pin 7 carries 3.3V and the board will crash
-if that is connected to pin 1, but shouldnt damage
-the board.
-</dd><dt><span class="term">
-EasyMini
-</span></dt><dd>
-Connect pin 6 and pin 1 of the debug connector, which
+if that is connected to pin 1, but shouldn&#8217;t damage
+the board.</p>
+</dd>
+<dt class="hdlist1">EasyMini</dt>
+<dd>
+<p>Connect pin 6 and pin 1 of the debug connector, which
 is the six holes next to the beeper. Pin 1 can be
 identified by the square pad around it, and then the
 pins could sequentially across the board, making Pin 6
-the one on the other end of the row.
-</dd><dt><span class="term">
-TeleDongle v3
-</span></dt><dd>
-Connect pin 32 on the CPU to ground. Pin 32 is closest
+the one on the other end of the row.</p>
+</dd>
+<dt class="hdlist1">TeleDongle v3</dt>
+<dd>
+<p>Connect pin 32 on the CPU to ground. Pin 32 is closest
 to the USB wires on the row of pins towards the center
 of the board. Ground is available on the capacitor
-next to it, on the end towards the USB wires.
-</dd></dl></div><p>Once you’ve located the right pins:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Turn the altimeter power off.
-</li><li class="listitem">
-Connect a battery.
-</li><li class="listitem">
-Connect the indicated terminals together with a
+next to it, on the end towards the USB wires.</p>
+</dd>
+<dt class="hdlist1">TeleBT v4</dt>
+<dd>
+<p>Connect pin 30 on the CPU to ground. Pin 30 is the 6th
+pin from the right on the top when the unit is oriented
+such that the SMA is at the top.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>Once you&#8217;ve located the right pins:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Turn the altimeter power off.</p>
+</li>
+<li>
+<p>Connect a battery.</p>
+</li>
+<li>
+<p>Connect the indicated terminals together with a
 short piece of wire. Take care not to accidentally
-connect anything else.
-</li><li class="listitem">
-Connect USB
-</li><li class="listitem">
-Turn the board power on.
-</li></ol></div><p>The board should now be visible over USB as
-<span class="emphasis"><em>AltosFlash</em></span> and be ready to receive firmware.  Once
+connect anything else.</p>
+</li>
+<li>
+<p>Connect USB</p>
+</li>
+<li>
+<p>Turn the board power on.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>The board should now be visible over USB as
+'AltosFlash' and be ready to receive firmware.  Once
 the board has been powered up, you can remove the
-piece of wire.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_pair_programming"></a>C.2. Pair Programming</h2></div></div></div><p>The big concept to understand is that you have to use
+piece of wire.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_pair_programming">C.2. Pair Programming</h3>
+<div class="paragraph">
+<p>The big concept to understand is that you have to use
 a TeleMetrum v1.0, TeleBT v1.0 or TeleDongle v0.2 as a
 programmer to update a pair programmed device. Due to
-limited memory resources in the cc1111, we dont
+limited memory resources in the cc1111, we don&#8217;t
 support programming directly over USB for these
-devices.</p><p>If you need to update the firmware on a TeleDongle
+devices.</p>
+</div>
+<div class="paragraph">
+<p>If you need to update the firmware on a TeleDongle
 v0.2, we recommend updating the altimeter first,
 before updating TeleDongle.  However, note that
 TeleDongle rarely need to be updated.  Any firmware
 version 1.0.1 or later will work, version 1.2.1 may
-have improved receiver performance slightly.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_updating_telemetrum_v1_x_firmware"></a>C.2.1. Updating TeleMetrum v1.x Firmware</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Find the <span class="emphasis"><em>programming cable</em></span> that you got as
+have improved receiver performance slightly.</p>
+</div>
+<div class="sect3">
+<h4 id="_updating_telemetrum_v1_x_firmware">C.2.1. Updating TeleMetrum v1.x Firmware</h4>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Find the 'programming cable' that you got as
 part of the starter kit, that has a red
 8-pin MicroMaTch connector on one end and a
 red 4-pin MicroMaTch connector on the other
-end.
-</li><li class="listitem">
-Take the 2 screws out of the TeleDongle v0.2
+end.</p>
+</li>
+<li>
+<p>Take the 2 screws out of the TeleDongle v0.2
 or TeleBT v1.0 case to get access to the
-circuit board.
-</li><li class="listitem">
-Plug the 8-pin end of the programming cable
+circuit board.</p>
+</li>
+<li>
+<p>Plug the 8-pin end of the programming cable
 to the matching connector on the TeleDongle
 v0.2 or TeleBT v1.0, and the 4-pin end to
 the matching connector on the TeleMetrum.
 Note that each MicroMaTch connector has an
 alignment pin that goes through a hole in
 the PC board when you have the cable
-oriented correctly.
-</li><li class="listitem">
-Attach a battery to the TeleMetrum board.
-</li><li class="listitem">
-Plug the TeleDongle v0.2 or TeleBT v1.0 into
-your computer’s USB port, and power up the
-TeleMetrum.
-</li><li class="listitem">
-Run AltosUI, and select <span class="emphasis"><em>Flash Image</em></span> from
-the File menu.
-</li><li class="listitem">
-Pick the TeleDongle v0.2 or TeleBT v1.0
+oriented correctly.</p>
+</li>
+<li>
+<p>Attach a battery to the TeleMetrum board.</p>
+</li>
+<li>
+<p>Plug the TeleDongle v0.2 or TeleBT v1.0 into
+your computer&#8217;s USB port, and power up the
+TeleMetrum.</p>
+</li>
+<li>
+<p>Run AltosUI, and select 'Flash Image' from
+the File menu.</p>
+</li>
+<li>
+<p>Pick the TeleDongle v0.2 or TeleBT v1.0
 device from the list, identifying it as the
-programming device.
-</li><li class="listitem">
-Select the image you want put on the
+programming device.</p>
+</li>
+<li>
+<p>Select the image you want put on the
 TeleMetrum, which should have a name in the
 form telemetrum-v1.2-1.0.0.ihx.  It should
 be visible in the default directory, if not
 you may have to poke around your system to
-find it.
-</li><li class="listitem">
-Make sure the configuration parameters are
+find it.</p>
+</li>
+<li>
+<p>Make sure the configuration parameters are
 reasonable looking. If the serial number
-and/or RF configuration values aren’t right,
-you’ll need to change them.
-</li><li class="listitem">
-Hit the <span class="emphasis"><em>OK</em></span> button and the software should
+and/or RF configuration values aren&#8217;t right,
+you&#8217;ll need to change them.</p>
+</li>
+<li>
+<p>Hit the 'OK' button and the software should
 proceed to flash the TeleMetrum with new
-firmware, showing a progress bar.
-</li><li class="listitem">
-Confirm that the TeleMetrum board seems to
+firmware, showing a progress bar.</p>
+</li>
+<li>
+<p>Confirm that the TeleMetrum board seems to
 have updated OK, which you can do by
 plugging in to it over USB and using a
 terminal program to connect to the board and
-issue the <span class="emphasis"><em>v</em></span> command to check the version,
-etc.
-</li></ol></div><p>If something goes wrong, give it another try.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_updating_telemini_v1_0_firmware"></a>C.2.2. Updating TeleMini v1.0 Firmware</h3></div></div></div><p>You’ll need a special <span class="emphasis"><em>programming cable</em></span> to
+issue the 'v' command to check the version,
+etc.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>If something goes wrong, give it another try.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_updating_telemini_v1_0_firmware">C.2.2. Updating TeleMini v1.0 Firmware</h4>
+<div class="paragraph">
+<p>You&#8217;ll need a special 'programming cable' to
 reprogram the TeleMini v1.0.  You can make your own
 using an 8-pin MicroMaTch connector on one end
-and a set of four pins on the other.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Take the 2 screws out of the TeleDongle v0.2
+and a set of four pins on the other.</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Take the 2 screws out of the TeleDongle v0.2
 or TeleBT v1.0 case to get access to the
-circuit board.
-</li><li class="listitem">
-Plug the 8-pin end of the programming cable
+circuit board.</p>
+</li>
+<li>
+<p>Plug the 8-pin end of the programming cable
 to the matching connector on the TeleDongle
 v0.2 or TeleBT v1.0, and the 4-pins into the
 holes in the TeleMini v1.0 circuit board.  Note
@@ -2270,131 +4899,260 @@ alignment pin that goes through a hole in
 the PC board when you have the cable
 oriented correctly, and that pin 1 on the
 TeleMini v1.0 board is marked with a square pad
-while the other pins have round pads.
-</li><li class="listitem">
-Attach a battery to the TeleMini v1.0 board.
-</li><li class="listitem">
-Plug the TeleDongle v0.2 or TeleBT v1.0 into
-your computer’s USB port, and power up the
-TeleMini v1.0
-</li><li class="listitem">
-Run AltosUI, and select <span class="emphasis"><em>Flash Image</em></span> from
-the File menu.
-</li><li class="listitem">
-Pick the TeleDongle v0.2 or TeleBT v1.0
+while the other pins have round pads.</p>
+</li>
+<li>
+<p>Attach a battery to the TeleMini v1.0 board.</p>
+</li>
+<li>
+<p>Plug the TeleDongle v0.2 or TeleBT v1.0 into
+your computer&#8217;s USB port, and power up the
+TeleMini v1.0</p>
+</li>
+<li>
+<p>Run AltosUI, and select 'Flash Image' from
+the File menu.</p>
+</li>
+<li>
+<p>Pick the TeleDongle v0.2 or TeleBT v1.0
 device from the list, identifying it as the
-programming device.
-</li><li class="listitem">
-Select the image you want put on the
+programming device.</p>
+</li>
+<li>
+<p>Select the image you want put on the
 TeleMini v1.0, which should have a name in the
 form telemini-v1.0-1.0.0.ihx.  It should be
 visible in the default directory, if not you
 may have to poke around your system to find
-it.
-</li><li class="listitem">
-Make sure the configuration parameters are
+it.</p>
+</li>
+<li>
+<p>Make sure the configuration parameters are
 reasonable looking. If the serial number
-and/or RF configuration values aren’t right,
-you’ll need to change them.
-</li><li class="listitem">
-Hit the <span class="emphasis"><em>OK</em></span> button and the software should
+and/or RF configuration values aren&#8217;t right,
+you&#8217;ll need to change them.</p>
+</li>
+<li>
+<p>Hit the 'OK' button and the software should
 proceed to flash the TeleMini v1.0 with new
-firmware, showing a progress bar.
-</li><li class="listitem">
-Confirm that the TeleMini v1.0 board seems to
+firmware, showing a progress bar.</p>
+</li>
+<li>
+<p>Confirm that the TeleMini v1.0 board seems to
 have updated OK, which you can do by
 configuring it over the radio link through
 the TeleDongle, or letting it come up in
-“flight” mode and listening for telemetry.
-</li></ol></div><p>If something goes wrong, give it another try.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_updating_teledongle_v0_2_firmware"></a>C.2.3. Updating TeleDongle v0.2 Firmware</h3></div></div></div><p>Updating TeleDongle v0.2 firmware is just like
+“flight” mode and listening for telemetry.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>If something goes wrong, give it another try.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_updating_teledongle_v0_2_firmware">C.2.3. Updating TeleDongle v0.2 Firmware</h4>
+<div class="paragraph">
+<p>Updating TeleDongle v0.2 firmware is just like
 updating TeleMetrum v1.x or TeleMini v1.0 firmware, but you
 use either a TeleMetrum v1.x, TeleDongle v0.2 or
-TeleBT v1.0 as the programmer.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Find the <span class="emphasis"><em>programming cable</em></span> that you got as part of
+TeleBT v1.0 as the programmer.</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Find the 'programming cable' that you got as part of
 the starter kit, that has a red 8-pin MicroMaTch
 connector on one end and a red 4-pin MicroMaTch
-connector on the other end.
-</li><li class="listitem">
-Find the USB cable that you got as part of the
+connector on the other end.</p>
+</li>
+<li>
+<p>Find the USB cable that you got as part of the
 starter kit, and plug the “mini” end in to the
 mating connector on TeleMetrum v1.x, TeleDongle v0.2
-or TeleBT v1.0.
-</li><li class="listitem">
-Take the 2 screws out of the TeleDongle v0.2 or
-TeleBT v1.0 case to get access to the circuit board.
-</li><li class="listitem">
-Plug the 8-pin end of the programming cable to the
+or TeleBT v1.0.</p>
+</li>
+<li>
+<p>Take the 2 screws out of the TeleDongle v0.2 or
+TeleBT v1.0 case to get access to the circuit board.</p>
+</li>
+<li>
+<p>Plug the 8-pin end of the programming cable to the
 matching connector on the programmer, and the 4-pin
 end to the matching connector on the TeleDongle
 v0.2.  Note that each MicroMaTch connector has an
 alignment pin that goes through a hole in the PC
-board when you have the cable oriented correctly.
-</li><li class="listitem">
-Attach a battery to the TeleMetrum v1.x board if
-you’re using one.
-</li><li class="listitem">
-Plug both the programmer and the TeleDongle into
-your computer’s USB ports, and power up the
-programmer.
-</li><li class="listitem">
-Run AltosUI, and select <span class="emphasis"><em>Flash Image</em></span> from the File
-menu.
-</li><li class="listitem">
-Pick the programmer device from the list,
-identifying it as the programming device.
-</li><li class="listitem">
-Select the image you want put on the TeleDongle
+board when you have the cable oriented correctly.</p>
+</li>
+<li>
+<p>Attach a battery to the TeleMetrum v1.x board if
+you&#8217;re using one.</p>
+</li>
+<li>
+<p>Plug both the programmer and the TeleDongle into
+your computer&#8217;s USB ports, and power up the
+programmer.</p>
+</li>
+<li>
+<p>Run AltosUI, and select 'Flash Image' from the File
+menu.</p>
+</li>
+<li>
+<p>Pick the programmer device from the list,
+identifying it as the programming device.</p>
+</li>
+<li>
+<p>Select the image you want put on the TeleDongle
 v0.2, which should have a name in the form
 teledongle-v0.2-1.0.0.ihx.  It should be visible in
 the default directory, if not you may have to poke
-around your system to find it.
-</li><li class="listitem">
-Make sure the configuration parameters are
+around your system to find it.</p>
+</li>
+<li>
+<p>Make sure the configuration parameters are
 reasonable looking. If the serial number and/or RF
-configuration values aren’t right, you’ll need to
+configuration values aren&#8217;t right, you&#8217;ll need to
 change them.  The TeleDongle v0.2 serial number is
 on the “bottom” of the circuit board, and can
 usually be read through the translucent blue plastic
 case without needing to remove the board from the
-case.
-</li><li class="listitem">
-Hit the <span class="emphasis"><em>OK</em></span> button and the software should proceed
+case.</p>
+</li>
+<li>
+<p>Hit the 'OK' button and the software should proceed
 to flash the TeleDongle v0.2 with new firmware,
-showing a progress bar.
-</li><li class="listitem">
-Confirm that the TeleDongle v0.2 board seems to have
+showing a progress bar.</p>
+</li>
+<li>
+<p>Confirm that the TeleDongle v0.2 board seems to have
 updated OK, which you can do by plugging in to it
 over USB and using a terminal program to connect to
-the board and issue the <span class="emphasis"><em>v</em></span> command to check the
-version, etc.  Once youre happy, remove the
+the board and issue the 'v' command to check the
+version, etc.  Once you&#8217;re happy, remove the
 programming cable and put the cover back on the
-TeleDongle v0.2.
-</li></ol></div><p>If something goes wrong, give it another try.</p><p>Be careful removing the programming cable from the
-locking 8-pin connector on TeleMetrum.  You’ll need a
+TeleDongle v0.2.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>If something goes wrong, give it another try.</p>
+</div>
+<div class="paragraph">
+<p>Be careful removing the programming cable from the
+locking 8-pin connector on TeleMetrum.  You&#8217;ll need a
 fingernail or perhaps a thin screwdriver or knife
 blade to gently pry the locking ears out slightly to
 extract the connector.  We used a locking connector on
 TeleMetrum to help ensure that the cabling to
-companion boards used in a rocket don’t ever come
-loose accidentally in flight.</p></div></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_flight_data_recording"></a>Appendix D. Flight Data Recording</h1></div></div></div><p>Each flight computer logs data at 100 samples per second
+companion boards used in a rocket don&#8217;t ever come
+loose accidentally in flight.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_flight_data_recording">Appendix D: Flight Data Recording</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Each flight computer logs data at 100 samples per second
 during ascent and 10 samples per second during
 descent, except for TeleMini v1.0, which records ascent at 10 samples
 per second and descent at 1 sample per second.
 Data are logged to
 an on-board flash memory part, which can be partitioned into
-several equal-sized blocks, one for each flight.</p><div class="table"><a id="idm2337"></a><p class="title"><strong>Table D.1. Data Storage on Altus Metrum altimeters</strong></p><div class="table-contents"><table class="table" summary="Data Storage on Altus Metrum altimeters" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Device                 </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Bytes per Sample       </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Total Storage  </th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Minutes at Full Rate</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v1.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1MB</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>20</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v1.1 v1.2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2MB</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>40</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v2.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8MB</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>80</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMini v1.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5kB</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMini v3.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>512kB</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>EasyMini</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1MB</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMega</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>32</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8MB</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>40</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>EasyMega</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>32</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>8MB</p></td><td style="" align="left" valign="top"><p>40</p></td></tr></tbody></table></div></div><br class="table-break" /><p>The on-board flash is partitioned into separate flight logs,
+several equal-sized blocks, one for each flight.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 10. Data Storage on Altus Metrum altimeters</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 25%;">
+<col style="width: 25%;">
+<col style="width: 25%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Device</th>
+<th class="tableblock halign-left valign-top">Bytes per Sample</th>
+<th class="tableblock halign-left valign-top">Total Storage</th>
+<th class="tableblock halign-left valign-top">Minutes at Full Rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v1.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v1.1 v1.2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v2.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">80</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMini v1.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5kB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMini v3.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">512kB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMini</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMega</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">32</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMega</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">32</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The on-board flash is partitioned into separate flight logs,
 each of a fixed maximum size. Increase the maximum size of
 each log and you reduce the number of flights that can be
-stored. Decrease the size and you can store more flights.</p><p>Configuration data is also stored in the flash memory on
+stored. Decrease the size and you can store more flights.</p>
+</div>
+<div class="paragraph">
+<p>Configuration data is also stored in the flash memory on
 TeleMetrum v1.x,
 TeleMini v3.0 and
 EasyMini.
 This consumes 64kB
 of flash space.  This configuration space is not available
-for storing flight log data.</p><p>TeleMetrum v2.0, TeleMega and EasyMega
+for storing flight log data.</p>
+</div>
+<div class="paragraph">
+<p>TeleMetrum v2.0, TeleMega and EasyMega
 store configuration data in a bit of eeprom available within
 the processor chip, leaving that space available in flash for
-more flight data.</p><p>To compute the amount of space needed for a single flight, you
+more flight data.</p>
+</div>
+<div class="paragraph">
+<p>To compute the amount of space needed for a single flight, you
 can multiply the expected ascent time (in seconds) by 100
 times bytes-per-sample, multiply the expected descent time (in
 seconds) by 10 times the bytes per sample and add the two
@@ -2403,632 +5161,1786 @@ bytes) needed for the flight.
 For instance, a TeleMetrum v2.0 flight spending
 20 seconds in ascent and 150 seconds in descent will take
 about (20 * 1600) + (150 * 160) = 56000 bytes of storage. You
-could store dozens of these flights in the on-board flash.</p><p>The default size allows for several flights on each flight
+could store dozens of these flights in the on-board flash.</p>
+</div>
+<div class="paragraph">
+<p>The default size allows for several flights on each flight
 computer, except for TeleMini v1.0, which
 only holds data for a single flight.
-You can adjust the size.</p><p>Altus Metrum flight computers will not overwrite existing
+You can adjust the size.</p>
+</div>
+<div class="paragraph">
+<p>Altus Metrum flight computers will not overwrite existing
 flight data, so be sure to download flight data and erase it
 from the flight computer before it fills up. The flight
 computer will still successfully control the flight even if it
-cannot log data, so the only thing you will lose is the data.</p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_altus_metrum_hardware_specifications"></a>Appendix E. Altus Metrum Hardware Specifications</h1></div></div></div><p>Here’s the full set of Altus Metrum products, both in
-production and retired.</p><div class="table"><a id="idm2432"></a><p class="title"><strong>Table E.1. Altus Metrum Flight Computer Electronics</strong></p><div class="table-contents"><table class="table" summary="Altus Metrum Flight Computer Electronics" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /><col class="col_5" /><col class="col_6" /><col class="col_7" /><col class="col_8" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Device </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> Barometer </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> Z-axis accel </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> GPS </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> 3D sensors </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> Storage </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> RF Output </th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top"> Battery</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v1.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MP3H6115 10km (33k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MMA2202 50g</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>SkyTraq</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10mW</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v1.1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MP3H6115 10km (33k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MMA2202 50g</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>SkyTraq</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10mW</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v1.2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MP3H6115 10km (33k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>ADXL78 70g</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>SkyTraq</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10mW</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v2.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MMA6555 102g</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uBlox Max-7Q</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>40mW</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMini v1.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MP3H6115 10km (33k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5kB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10mW</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMini v3.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>512kB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>40mW</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>EasyMini v1.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7-12V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>EasyMini v2.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7-12V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMega v1.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MMA6555 102g</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uBlox Max-7Q</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MPU6000 HMC5883</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>40mW</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMega v2.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MMA6555 102g</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uBlox Max-7Q</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MPU6000 HMC5883</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>40mW</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7V</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMega v3.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MMA6555 102g</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uBlox Max-7Q</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MPU9250</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>40mW</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7V</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>EasyMega v1.0</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>MMA6555 102g</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>MPU6000 HMC5883</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>8MB</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="" align="left" valign="top"><p>3.7V</p></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idm2659"></a><p class="title"><strong>Table E.2. Altus Metrum Flight Computer Mechanical Components</strong></p><div class="table-contents"><table class="table" summary="Altus Metrum Flight Computer Mechanical Components" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /><col class="col_5" /><col class="col_6" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Device</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Connectors</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Screw Terminals</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Width</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Length</th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Tube Size</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Antenna Debug Companion USB Battery</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro Main pyro Switch</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1 inch (2.54cm)</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2 ¾ inch (6.99cm)</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>29mm coupler</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMini v1.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Antenna Debug Battery</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro Main pyro</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>½ inch (1.27cm)</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1½ inch (3.81cm)</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>18mm coupler</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMini v2.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Antenna Debug USB Battery</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro Main pyro Battery Switch</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0.8 inch (2.03cm)</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1½ inch (3.81cm)</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>24mm coupler</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>EasyMini</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Debug USB Battery</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro Main pyro Battery</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0.8 inch (2.03cm)</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1½ inch (3.81cm)</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>24mm coupler</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMega</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Antenna Debug Companion USB Battery</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro Main pyro Pyro A-D Switch Pyro battery</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1¼ inch (3.18cm)</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3¼ inch (8.26cm)</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>38mm coupler</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>EasyMega</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Debug Companion USB Battery</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro Main pyro Pyro A-D Switch Pyro battery</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>1¼ inch (3.18cm)</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>2¼ inch (5.62cm)</p></td><td style="" align="left" valign="top"><p>38mm coupler</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_release_notes"></a>Appendix F. Release Notes</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_7"></a>F.1. Release Notes for Version 1.8.7</h2></div></div></div><p>Version 1.8.7</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos"></a>F.1.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Include TeleMega v3.0 firmware
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_micropeak"></a>F.1.2. AltosUI, TeleGPS, MicroPeak</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Poll for new devices while Device dialog is displayed
-</li><li class="listitem">
-Wait for device to re-appear when flashing new firmware
-</li><li class="listitem">
-Fetch correct TeleBT v4.0 RF calibration values from web
-site when reflashing.
-</li><li class="listitem">
-Change gyro headings in .csv files from x/y/z to
-roll/pitch/yaw
-</li><li class="listitem">
-Add documentation about Packet Link mode
-</li><li class="listitem">
-Add documentation about forcing TeleMini RF parameters to
-known values.
-</li><li class="listitem">
-Create a proxy server for Google Maps to re-enable map
-images
-</li><li class="listitem">
-Fix Java version info in all distributed jar files so that
-applications will run with standard Mac OS X Java.
-</li><li class="listitem">
-Replace JavaApplicationStub for Mac OS X so that
-applications will run with Oracle Java.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_6"></a>F.2. Release Notes for Version 1.8.6</h2></div></div></div><p>Version 1.8.6</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_2"></a>F.2.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Use maximum of 64 previous tilt values in pyro tilt tests
-</li><li class="listitem">
-Eliminate 100m height requirement for coast detection
-</li><li class="listitem">
-Change After Motor pyro check to be &gt;= instead of ==
-</li><li class="listitem">
-Change Time since Boost to be Time since launch.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps"></a>F.2.2. AltosUI, TeleGPS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Clarify pyro test phrasing
-</li><li class="listitem">
-Remove ascending/descending from pyro config UI
-</li><li class="listitem">
-Fix accel calibration in Antenna Down mode
-</li><li class="listitem">
-Add mag sensor reporting for TeleMega v3 idle monitoring.
-</li><li class="listitem">
-Fix radio parameter saving at 2400 bps telmetry rate.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_micropeak"></a>F.2.3. MicroPeak</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Report altimeter-recorded maximum height value
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_5"></a>F.3. Release Notes for Version 1.8.5</h2></div></div></div><p>Version 1.8.5 includes fixes to the ground software support
-for TeleBT v4, along with a few other minor updates.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_3"></a>F.3.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix startup beeps that indicate sensor failures.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_2"></a>F.3.2. AltosUI, TeleGPS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-When updating device firmware, make sure selected firmware
-matches target device.
-</li><li class="listitem">
-Correct Bluetooth device matching when looking for TeleBT
-devices.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_4"></a>F.4. Release Notes for Version 1.8.4</h2></div></div></div><p>Version 1.8.4 includes support for EasyMini version 2.0</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_4"></a>F.4.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for EasyMini version 2.0 hardware.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_3"></a>F.5. Release Notes for Version 1.8.3</h2></div></div></div><p>Version 1.8.3 includes support for TeleMega version 3.0 along
+cannot log data, so the only thing you will lose is the data.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_altus_metrum_hardware_specifications">Appendix E: Altus Metrum Hardware Specifications</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Here&#8217;s the full set of Altus Metrum products, both in
+production and retired.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 11. Altus Metrum Flight Computer Electronics</caption>
+<colgroup>
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Device</th>
+<th class="tableblock halign-left valign-top">Barometer</th>
+<th class="tableblock halign-left valign-top">Z-axis accel</th>
+<th class="tableblock halign-left valign-top">GPS</th>
+<th class="tableblock halign-left valign-top">3D sensors</th>
+<th class="tableblock halign-left valign-top">Storage</th>
+<th class="tableblock halign-left valign-top">RF Output</th>
+<th class="tableblock halign-left valign-top">Battery</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v1.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MP3H6115 10km (33k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MMA2202 50g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">SkyTraq</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10mW</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v1.1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MP3H6115 10km (33k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MMA2202 50g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">SkyTraq</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10mW</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v1.2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MP3H6115 10km (33k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ADXL78 70g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">SkyTraq</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10mW</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v2.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MMA6555 102g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uBlox Max-7Q</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40mW</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMini v1.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MP3H6115 10km (33k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5kB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10mW</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMini v3.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">512kB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40mW</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMini v1.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7-12V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMini v2.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7-12V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMega v1.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MMA6555 102g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uBlox Max-7Q</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MPU6000 HMC5883</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40mW</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMega v2.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MMA6555 102g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uBlox Max-7Q</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MPU6000 HMC5883</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40mW</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMega v3.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MMA6555 102g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uBlox Max-7Q</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MPU9250</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">40mW</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMega v1.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MMA6555 102g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MPU6000 HMC5883</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMega v2.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ADXL375 200g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MPU9250</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7V</p></td>
+</tr>
+</tbody>
+</table>
+<div style="page-break-after: always;"></div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 12. Altus Metrum Flight Computer Mechanical Components</caption>
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 16.667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Device</th>
+<th class="tableblock halign-left valign-top">Connectors</th>
+<th class="tableblock halign-left valign-top">Screw Terminals</th>
+<th class="tableblock halign-left valign-top">Width</th>
+<th class="tableblock halign-left valign-top">Length</th>
+<th class="tableblock halign-left valign-top">Tube Size</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Antenna Debug Companion USB Battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro Main pyro Switch</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1 inch (2.54cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2 ¾ inch (6.99cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">29mm coupler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMini v1.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Antenna Debug Battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro Main pyro</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">½ inch (1.27cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1½ inch (3.81cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">18mm coupler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMini v2.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Antenna Debug USB Battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro Main pyro Battery Switch</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0.8 inch (2.03cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1½ inch (3.81cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24mm coupler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMini</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Debug USB Battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro Main pyro Battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0.8 inch (2.03cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1½ inch (3.81cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24mm coupler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMega</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Antenna Debug Companion USB Battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro Main pyro Pyro A-D Switch Pyro battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1¼ inch (3.18cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3¼ inch (8.26cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">38mm coupler</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMega</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Debug Companion USB Battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro Main pyro Pyro A-D Switch Pyro battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1¼ inch (3.18cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2¼ inch (5.62cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">38mm coupler</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_release_notes">Appendix F: Release Notes</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_9">F.1. Release Notes for Version 1.9</h3>
+<div class="paragraph">
+<p>Version 1.9</p>
+</div>
+<div class="sect3">
+<h4 id="_altos">F.1.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for EasyMega v2.0</p>
+</li>
+<li>
+<p>Replace C library for ARM devices</p>
+</li>
+<li>
+<p>Remove support for 8051-based devices and SDCC compiler</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_micropeak">F.1.2. AltosUI, TeleGPS, MicroPeak</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Select ROM images based on product name when reflashing</p>
+</li>
+<li>
+<p>Fix TeleGPS v2 battery voltage display</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_7">F.2. Release Notes for Version 1.8.7</h3>
+<div class="paragraph">
+<p>Version 1.8.7</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_2">F.2.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Include TeleMega v3.0 firmware</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_micropeak_2">F.2.2. AltosUI, TeleGPS, MicroPeak</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Poll for new devices while Device dialog is displayed</p>
+</li>
+<li>
+<p>Wait for device to re-appear when flashing new firmware</p>
+</li>
+<li>
+<p>Fetch correct TeleBT v4.0 RF calibration values from web
+site when reflashing.</p>
+</li>
+<li>
+<p>Change gyro headings in .csv files from x/y/z to
+roll/pitch/yaw</p>
+</li>
+<li>
+<p>Add documentation about Packet Link mode</p>
+</li>
+<li>
+<p>Add documentation about forcing TeleMini RF parameters to
+known values.</p>
+</li>
+<li>
+<p>Create a proxy server for Google Maps to re-enable map
+images</p>
+</li>
+<li>
+<p>Fix Java version info in all distributed jar files so that
+applications will run with standard Mac OS X Java.</p>
+</li>
+<li>
+<p>Replace JavaApplicationStub for Mac OS X so that
+applications will run with Oracle Java.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_6">F.3. Release Notes for Version 1.8.6</h3>
+<div class="paragraph">
+<p>Version 1.8.6</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_3">F.3.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Use maximum of 64 previous tilt values in pyro tilt tests</p>
+</li>
+<li>
+<p>Eliminate 100m height requirement for coast detection</p>
+</li>
+<li>
+<p>Change After Motor pyro check to be &gt;= instead of ==</p>
+</li>
+<li>
+<p>Change Time since Boost to be Time since launch.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps">F.3.2. AltosUI, TeleGPS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Clarify pyro test phrasing</p>
+</li>
+<li>
+<p>Remove ascending/descending from pyro config UI</p>
+</li>
+<li>
+<p>Fix accel calibration in Antenna Down mode</p>
+</li>
+<li>
+<p>Add mag sensor reporting for TeleMega v3 idle monitoring.</p>
+</li>
+<li>
+<p>Fix radio parameter saving at 2400 bps telmetry rate.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_micropeak">F.3.3. MicroPeak</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Report altimeter-recorded maximum height value</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_5">F.4. Release Notes for Version 1.8.5</h3>
+<div class="paragraph">
+<p>Version 1.8.5 includes fixes to the ground software support
+for TeleBT v4, along with a few other minor updates.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_4">F.4.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix startup beeps that indicate sensor failures.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_2">F.4.2. AltosUI, TeleGPS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>When updating device firmware, make sure selected firmware
+matches target device.</p>
+</li>
+<li>
+<p>Correct Bluetooth device matching when looking for TeleBT
+devices.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_4">F.5. Release Notes for Version 1.8.4</h3>
+<div class="paragraph">
+<p>Version 1.8.4 includes support for EasyMini version 2.0</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_5">F.5.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for EasyMini version 2.0 hardware.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_3">F.6. Release Notes for Version 1.8.3</h3>
+<div class="paragraph">
+<p>Version 1.8.3 includes support for TeleMega version 3.0 along
 with two important flight computer fixes. This version also
 changes KML export data to make Tripoli Record reporting
 better and some updates to graph presentation and data
-downloading.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_5"></a>F.5.1. AltOS</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altos_new_features"></a>AltOS New Features</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleMega version 3.0 hardware.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altos_bug_fixes"></a>AltOS Bug Fixes</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Ground testing EasyMega and TeleMega additional pyro
-channels could result in a sticky <span class="emphasis"><em>fired</em></span> status which would
-prevent these channels from firing on future flights.
-</li><li class="listitem">
-Corrupted flight log records could prevent future flights
-from capturing log data.
-</li><li class="listitem">
-Fixed saving of pyro configuration that ended with
-<span class="emphasis"><em>Descending</em></span>.
-</li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications"></a>F.5.2. AltosUI and TeleGPS Applications</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altosui_new_features"></a>AltosUI New Features</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleMega version 3.0.
-</li><li class="listitem">
-Graph lines have improved appearance to make them easier to
+downloading.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_6">F.6.1. AltOS</h4>
+<div class="sect4">
+<h5 id="_altos_new_features">AltOS New Features</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleMega version 3.0 hardware.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_altos_bug_fixes">AltOS Bug Fixes</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Ground testing EasyMega and TeleMega additional pyro
+channels could result in a sticky 'fired' status which would
+prevent these channels from firing on future flights.</p>
+</li>
+<li>
+<p>Corrupted flight log records could prevent future flights
+from capturing log data.</p>
+</li>
+<li>
+<p>Fixed saving of pyro configuration that ended with
+'Descending'.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications">F.6.2. AltosUI and TeleGPS Applications</h4>
+<div class="sect4">
+<h5 id="_altosui_new_features">AltosUI New Features</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleMega version 3.0.</p>
+</li>
+<li>
+<p>Graph lines have improved appearance to make them easier to
 distinguish. Markers may be placed at data points to show
-captured recorded data values.
-</li><li class="listitem">
-Graphing offers the ability to adjust the smoothing of
-computed speed and acceleration data.
-</li><li class="listitem">
-The download dialog now offers to graph new flights, checks
+captured recorded data values.</p>
+</li>
+<li>
+<p>Graphing offers the ability to adjust the smoothing of
+computed speed and acceleration data.</p>
+</li>
+<li>
+<p>The download dialog now offers to graph new flights, checks
 for existing files to avoid overwriting data and reports if
-there are checksum errors in the downloaded data.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altosui_telegps_bug_fixes"></a>AltosUI/TeleGPS Bug Fixes</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Restore TeleGPS tracking behavior.
-</li><li class="listitem">
-Display flight computer call sign and serial number in
-Monitor Idle mode instead of ground station values.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altosui_and_telegps_changes"></a>AltosUI and TeleGPS Changes</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-KML export now reports both barometric and GPS altitude data
-to make it more useful for Tripoli record reporting.
-</li><li class="listitem">
-CSV export now includes TeleMega/EasyMega pyro voltages and
-tilt angle.
-</li></ul></div><p></p></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_2"></a>F.6. Release Notes for Version 1.8.2</h2></div></div></div><p>Version 1.8.2 includes support for TeleGPS version 2.0 along
-with accelerometer recalibration support in AltosUI.</p><p>1.8.2 also contains a couple of minor fixes for AltosUI when
-analyzing saved data files.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_6"></a>F.6.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleGPS version 2.0 hardware.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_2"></a>F.6.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleGPS version 2.0.
-</li><li class="listitem">
-Accelerometer re-calibration user interface.
-</li></ul></div><p>AltosUI and TeleGPS Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Prevent some crashes when reading older saved flight data
-for graphing or KML export.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_1"></a>F.7. Release Notes for Version 1.8.1</h2></div></div></div><p>Version 1.8.1 includes an important bug fix for Apogee Lockout
+there are checksum errors in the downloaded data.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_altosuitelegps_bug_fixes">AltosUI/TeleGPS Bug Fixes</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Restore TeleGPS tracking behavior.</p>
+</li>
+<li>
+<p>Display flight computer call sign and serial number in
+Monitor Idle mode instead of ground station values.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_altosui_and_telegps_changes">AltosUI and TeleGPS Changes</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>KML export now reports both barometric and GPS altitude data
+to make it more useful for Tripoli record reporting.</p>
+</li>
+<li>
+<p>CSV export now includes TeleMega/EasyMega pyro voltages and
+tilt angle.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_2">F.7. Release Notes for Version 1.8.2</h3>
+<div class="paragraph">
+<p>Version 1.8.2 includes support for TeleGPS version 2.0 along
+with accelerometer recalibration support in AltosUI.</p>
+</div>
+<div class="paragraph">
+<p>1.8.2 also contains a couple of minor fixes for AltosUI when
+analyzing saved data files.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_7">F.7.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleGPS version 2.0 hardware.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_2">F.7.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleGPS version 2.0.</p>
+</li>
+<li>
+<p>Accelerometer re-calibration user interface.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Prevent some crashes when reading older saved flight data
+for graphing or KML export.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_1">F.8. Release Notes for Version 1.8.1</h3>
+<div class="paragraph">
+<p>Version 1.8.1 includes an important bug fix for Apogee Lockout
 operation in all flight computers. Anyone using this option
-must update firmware.</p><p>This release also contains a change in how flight computers
+must update firmware.</p>
+</div>
+<div class="paragraph">
+<p>This release also contains a change in how flight computers
 with accelerometers deal with speeds around and above Mach
 1. In previous versions, the flight computer would completely
 disregard the barometric sensor above 330m/s (around Mach
 1). Now, the data from the barometric sensor is reduced in
 effect without ever going away entirely. This prevents early
 drogue deployment for flights which spend considerable time
-above Mach 1.</p><p>1.8.1 also contains a couple of minor fixes for AltosUI when
-analyzing saved data files.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_7"></a>F.7.1. AltOS</h3></div></div></div><p>AltOS Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Handle time value wrapping in Apogee Lockout
+above Mach 1.</p>
+</div>
+<div class="paragraph">
+<p>1.8.1 also contains a couple of minor fixes for AltosUI when
+analyzing saved data files.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_8">F.8.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Handle time value wrapping in Apogee Lockout
 correctly. Without this, apogee lockout would sometimes
-prevent any drogue charge from firing.
-</li><li class="listitem">
-Change Kalman filter on flight computers with accelerometer
+prevent any drogue charge from firing.</p>
+</li>
+<li>
+<p>Change Kalman filter on flight computers with accelerometer
 to continue using the barometric sensor even at high speeds
 to avoid unintentional drogue deployment during
-deceleration.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_3"></a>F.7.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add new <span class="emphasis"><em>Huge</em></span> font size to make text even bigger on high
-resolution monitors.
-</li></ul></div><p>AltosUI Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Prevent some crashes when reading older saved flight data
-for graphing or KML export.
-</li><li class="listitem">
-Load frequency preference at startup. The loading code was
-broken, so you’d see only the default frequencies.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8"></a>F.8. Release Notes for Version 1.8</h2></div></div></div><p>Version 1.8 includes support for our new TeleBT v4.0 ground
+deceleration.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_3">F.8.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add new 'Huge' font size to make text even bigger on high
+resolution monitors.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Prevent some crashes when reading older saved flight data
+for graphing or KML export.</p>
+</li>
+<li>
+<p>Load frequency preference at startup. The loading code was
+broken, so you&#8217;d see only the default frequencies.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8">F.9. Release Notes for Version 1.8</h3>
+<div class="paragraph">
+<p>Version 1.8 includes support for our new TeleBT v4.0 ground
 station, updates for data analysis in our ground station
 software and bug fixes in in the flight software for all our
-boards and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_8"></a>F.8.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleBT v4.0 boards.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_4"></a>F.8.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleBT v4.0 hardware
-</li><li class="listitem">
-Rewrite graphing and export functions. This code now handles
+boards and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_9">F.9.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleBT v4.0 boards.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_4">F.9.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleBT v4.0 hardware</p>
+</li>
+<li>
+<p>Rewrite graphing and export functions. This code now handles
 each data series separately so that graphs are drawn
 correctly. Smoothing now uses a filter that looks both
 forward and backwards in time to make computed speed and
-acceleration data more accurate.
-</li></ul></div><p>AltosUI Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Correct axis labeling of magnetic sensor in TeleMega and
-EasyMega. The Y and Z axes were flipped.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_7"></a>F.9. Release Notes for Version 1.7</h2></div></div></div><p>Version 1.7 includes support for our new TeleMini v3.0
+acceleration data more accurate.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Correct axis labeling of magnetic sensor in TeleMega and
+EasyMega. The Y and Z axes were flipped.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_7">F.10. Release Notes for Version 1.7</h3>
+<div class="paragraph">
+<p>Version 1.7 includes support for our new TeleMini v3.0
 flight computer and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_9"></a>F.9.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleMini v3.0 boards.
-</li></ul></div><p>AltOS Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix interrupt priorities on STM32L processors. Run timer
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_10">F.10.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleMini v3.0 boards.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix interrupt priorities on STM32L processors. Run timer
 interrupt at lowest priority so that device interrupts get
-serviced first.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_5"></a>F.9.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleMini v3.0 hardware
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_8"></a>F.10. Release Notes for Version 1.6.8</h2></div></div></div><p>Version 1.6.8 fixes a TeleMega and TeleMetrum v2.0 bug where
+serviced first.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_5">F.10.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleMini v3.0 hardware</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_8">F.11. Release Notes for Version 1.6.8</h3>
+<div class="paragraph">
+<p>Version 1.6.8 fixes a TeleMega and TeleMetrum v2.0 bug where
 the device could stop logging data and transmitting
 telemetry in flight. All TeleMega v1.0, v2.0 and TeleMetrum
-v2.0 users should update their flight firmware.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_10"></a>F.10.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix STM32L DMA driver to work around STM32L SoC DMA priority
+v2.0 users should update their flight firmware.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_11">F.11.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix STM32L DMA driver to work around STM32L SoC DMA priority
 issue t lock-up in the logging or radio code, either of
-which could stop data logging and telemetry.
-</li><li class="listitem">
-Avoid having TeleBT battery status values smash telemetry
-packet data by holding a lock during both operations.
-</li><li class="listitem">
-Don’t start reporting <span class="emphasis"><em>flight 0</em></span> when the log fills in
-flight.
-</li></ul></div><p>AltOS changes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Flash LEDS on all products briefly during power up so that
-they can be tested during production.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_and_altosdroid_applications"></a>F.10.2. AltosUI, TeleGPS and AltosDroid Applications</h3></div></div></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Re-enable go/no-go entries after they’ve been disabled due
+which could stop data logging and telemetry.</p>
+</li>
+<li>
+<p>Avoid having TeleBT battery status values smash telemetry
+packet data by holding a lock during both operations.</p>
+</li>
+<li>
+<p>Don&#8217;t start reporting 'flight 0' when the log fills in
+flight.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS changes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Flash LEDS on all products briefly during power up so that
+they can be tested during production.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_and_altosdroid_applications">F.11.2. AltosUI, TeleGPS and AltosDroid Applications</h4>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Re-enable go/no-go entries after they&#8217;ve been disabled due
 to lack of data. If telemetry information is delayed when
 the Ui starts up, sometimes important fields would get
-disabled to never re-appear.
-</li><li class="listitem">
-Deal with ground station failure better during Configure
-Ground Station operation by cleaning up pending operations.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_5"></a>F.11. Release Notes for Version 1.6.5</h2></div></div></div><p>Version 1.6.5 fixes a TeleMega and TeleMetrum v2.0 bug where
+disabled to never re-appear.</p>
+</li>
+<li>
+<p>Deal with ground station failure better during Configure
+Ground Station operation by cleaning up pending operations.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_5">F.12. Release Notes for Version 1.6.5</h3>
+<div class="paragraph">
+<p>Version 1.6.5 fixes a TeleMega and TeleMetrum v2.0 bug where
 the device would often stop logging data and transmitting
 telemetry in flight. All TeleMega v1.0, v2.0 and TeleMetrum
-v2.0 users should update their flight firmware.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_11"></a>F.11.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix STM32L SPI driver to prevent lock-up in the logging or
+v2.0 users should update their flight firmware.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_12">F.12.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix STM32L SPI driver to prevent lock-up in the logging or
 radio code, either of which could stop data logging and
 telemetry. Found and characterized by Chuck Haskin, who also
-tested the new firmware before release.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_and_altosdroid_applications_2"></a>F.11.2. AltosUI, TeleGPS and AltosDroid Applications</h3></div></div></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Deliver firmward for TeleMega v2.0 and TeleBT v3.0 with
-Windows package.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_4"></a>F.12. Release Notes for Version 1.6.4</h2></div></div></div><p>Version 1.6.4 fixes a bluetooth communication problem with
+tested the new firmware before release.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_and_altosdroid_applications_2">F.12.2. AltosUI, TeleGPS and AltosDroid Applications</h4>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Deliver firmward for TeleMega v2.0 and TeleBT v3.0 with
+Windows package.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_4">F.13. Release Notes for Version 1.6.4</h3>
+<div class="paragraph">
+<p>Version 1.6.4 fixes a bluetooth communication problem with
 TeleBT v1.0 devices, along with some altosui and altosdroid
-minor nits. It also now ships firmware for some newer devices.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_12"></a>F.12.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix hardware flow control on TeleBT v1.0. Hardware RTS/CTS
-doesn’t seem to work, switch from using the hardware to
-driving these pins with software.
-</li><li class="listitem">
-Fix ARM USB drivers to deal with OS restarts. Needed to
+minor nits. It also now ships firmware for some newer devices.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_13">F.13.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix hardware flow control on TeleBT v1.0. Hardware RTS/CTS
+doesn&#8217;t seem to work, switch from using the hardware to
+driving these pins with software.</p>
+</li>
+<li>
+<p>Fix ARM USB drivers to deal with OS restarts. Needed to
 reset all USB-related state when the USB bus is reset. These
-fixes affect all STM32L, STM32F0 and LPC11U14 based devices.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_and_altosdroid_applications_3"></a>F.12.2. AltosUI, TeleGPS and AltosDroid Applications</h3></div></div></div><p>AltosUI, TeleGPS and AltosDroid New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Automatically switch from meters or feet to kilometers or
-miles for distance units.
-</li><li class="listitem">
-Add Monitor Idle mode to TeleGPS application.
-</li></ul></div><p>AltosUI, TeleGPS and AltosDroid Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Abort map preloading when the preload map dialog is closed.
-</li><li class="listitem">
-In AltosDroid, Don’t reconnect to last device if the user
+fixes affect all STM32L, STM32F0 and LPC11U14 based devices.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_and_altosdroid_applications_3">F.13.2. AltosUI, TeleGPS and AltosDroid Applications</h4>
+<div class="paragraph">
+<p>AltosUI, TeleGPS and AltosDroid New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Automatically switch from meters or feet to kilometers or
+miles for distance units.</p>
+</li>
+<li>
+<p>Add Monitor Idle mode to TeleGPS application.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI, TeleGPS and AltosDroid Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Abort map preloading when the preload map dialog is closed.</p>
+</li>
+<li>
+<p>In AltosDroid, Don&#8217;t reconnect to last device if the user
 had disconnected it the last time the application was
-active.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation"></a>F.12.3. Documentation</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Mention TeleMega v2.0 in hardware specs table.
-</li><li class="listitem">
-Document TeleGPS RF output in telegps manual.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_3"></a>F.13. Release Notes for Version 1.6.3</h2></div></div></div><p>Version 1.6.3 adds idle mode to AltosDroid and has bug fixes
+active.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation">F.13.3. Documentation</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Mention TeleMega v2.0 in hardware specs table.</p>
+</li>
+<li>
+<p>Document TeleGPS RF output in telegps manual.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_3">F.14. Release Notes for Version 1.6.3</h3>
+<div class="paragraph">
+<p>Version 1.6.3 adds idle mode to AltosDroid and has bug fixes
 for our host software on desktops, laptops an android devices
-along with BlueTooth support for Windows.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_13"></a>F.13.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix hardware flow control on TeleBT v3.0. RTS/CTS is
+along with BlueTooth support for Windows.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_14">F.14.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix hardware flow control on TeleBT v3.0. RTS/CTS is
 wired backwards on this board, switch from using the
-hardware to driving these pins with software.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_6"></a>F.13.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add BlueTooth support for Windows operating system. This
+hardware to driving these pins with software.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_6">F.14.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add BlueTooth support for Windows operating system. This
 supports connections to TeleBT over BlueTooth rather than
-just USB.
-</li></ul></div><p>AltosUI and TeleGPS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Change Java detection and install on Windows. Detection is
-now done by looking for the <span class="emphasis"><em>javaw.exe</em></span> program, and
-installation by opening a browser on the java.com web site.
-</li><li class="listitem">
-Delay polling while the Fire Igniters is visible to allow
-for TeleMega to report back complete status over the radio.
-</li><li class="listitem">
-Disallow changing RF calibration numbers in the
-configuration UI. There’s no good reason to change this from
-the field, and recovering is really hard if you haven’t
-written down the right number.
-</li><li class="listitem">
-Fix USB device discovery on Mac OS X El Capitan. This makes
-the connected Altus Metrum USB devices appear again.
-</li><li class="listitem">
-Fix acceleration data presented in MonitorIdle mode for
-TeleMetrum v2.0 flight computers.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosdroid_2"></a>F.13.3. AltosDroid</h3></div></div></div><p>AltosDroid new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Monitor Idle mode. Check state of flight computer while in
-idle mode over the radio link
-</li><li class="listitem">
-Fire Igniters. Remotely fire ignires for recovery system
-ground tests.
-</li><li class="listitem">
-Remote reboot. Cause the flight computer to reboot over the
+just USB.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Change Java detection and install on Windows. Detection is
+now done by looking for the 'javaw.exe' program, and
+installation by opening a browser on the java.com web site.</p>
+</li>
+<li>
+<p>Delay polling while the Fire Igniters is visible to allow
+for TeleMega to report back complete status over the radio.</p>
+</li>
+<li>
+<p>Disallow changing RF calibration numbers in the
+configuration UI. There&#8217;s no good reason to change this from
+the field, and recovering is really hard if you haven&#8217;t
+written down the right number.</p>
+</li>
+<li>
+<p>Fix USB device discovery on Mac OS X El Capitan. This makes
+the connected Altus Metrum USB devices appear again.</p>
+</li>
+<li>
+<p>Fix acceleration data presented in MonitorIdle mode for
+TeleMetrum v2.0 flight computers.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosdroid_2">F.14.3. AltosDroid</h4>
+<div class="paragraph">
+<p>AltosDroid new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Monitor Idle mode. Check state of flight computer while in
+idle mode over the radio link</p>
+</li>
+<li>
+<p>Fire Igniters. Remotely fire ignires for recovery system
+ground tests.</p>
+</li>
+<li>
+<p>Remote reboot. Cause the flight computer to reboot over the
 radio link. This provides a method for switching the flight
 computer from idle to flight mode without needing to reach
-the power switch.
-</li><li class="listitem">
-Configurable frequency menu. Change the set of available
-frequencies and provide more descriptive names.
-</li></ul></div><p>AltosDroid bug fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Don’t set target location if GPS hasn’t locked yet.
-</li><li class="listitem">
-Fix saving target states so they can be reloaded when the
+the power switch.</p>
+</li>
+<li>
+<p>Configurable frequency menu. Change the set of available
+frequencies and provide more descriptive names.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosDroid bug fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Don&#8217;t set target location if GPS hasn&#8217;t locked yet.</p>
+</li>
+<li>
+<p>Fix saving target states so they can be reloaded when the
 application restarts. When the application is shut down and
 restarted, all previous target state information will be
-restored (including GPS position if available).
-</li><li class="listitem">
-Fix crash on some Android devices for offline maps when
-changing the map scale or location.
-</li><li class="listitem">
-Don’t require USB OTG support. This kept the latest
+restored (including GPS position if available).</p>
+</li>
+<li>
+<p>Fix crash on some Android devices for offline maps when
+changing the map scale or location.</p>
+</li>
+<li>
+<p>Don&#8217;t require USB OTG support. This kept the latest
 AltosDroid from being offered on devices without USB device
 support, although it can work without that just fine using
-BlueTooth.
-</li><li class="listitem">
-Don’t require bluetooth to be enabled. This allows the
+BlueTooth.</p>
+</li>
+<li>
+<p>Don&#8217;t require bluetooth to be enabled. This allows the
 application to operate with USB devices or just show old
-data without turning on the bluetooth radio.
-</li><li class="listitem">
-Recover old tracker positions when restarting
+data without turning on the bluetooth radio.</p>
+</li>
+<li>
+<p>Recover old tracker positions when restarting
 application. This finally allows you to safely stop and
 restart the application without losing the last known
-location of any tracker.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation_2"></a>F.13.4. Documentation</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Document TeleMega and EasyMega additional pyro channel
-continuity audio alert pattern.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_2"></a>F.14. Release Notes for Version 1.6.2</h2></div></div></div><p>Version 1.6.2 includes support for our updated TeleMega v2.0
+location of any tracker.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation_2">F.14.4. Documentation</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Document TeleMega and EasyMega additional pyro channel
+continuity audio alert pattern.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_2">F.15. Release Notes for Version 1.6.2</h3>
+<div class="paragraph">
+<p>Version 1.6.2 includes support for our updated TeleMega v2.0
 product and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_14"></a>F.14.1. AltOS</h3></div></div></div><p>AltOS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleMega v2.0 boards.
-</li><li class="listitem">
-Add PWM servo driver. There’s no higher level code using
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_15">F.15.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleMega v2.0 boards.</p>
+</li>
+<li>
+<p>Add PWM servo driver. There&#8217;s no higher level code using
 this yet, but the driver allows testing of the TeleMega v2.0
-servo output connector.
-</li></ul></div><p>AltOS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Slow down telemetry packets to allow receiver to keep
-up.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_7"></a>F.14.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix post-flight orientation computation when processing
-TeleMega and EasyMega eeprom data files.
-</li><li class="listitem">
-Capture complete eeprom data even when there are invalid
+servo output connector.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Slow down telemetry packets to allow receiver to keep
+up.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_7">F.15.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix post-flight orientation computation when processing
+TeleMega and EasyMega eeprom data files.</p>
+</li>
+<li>
+<p>Capture complete eeprom data even when there are invalid
 entries in the data. This keeps reading eeprom contents and
-writing the associated .eeprom file when an error is detected.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation_3"></a>F.14.3. Documentation</h3></div></div></div><p>We spent a bunch of time trying to improve our documentation</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-HTML versions now have a table of contents on the left side.
-</li><li class="listitem">
-EasyMini now has its own shorter manual.
-</li><li class="listitem">
-Provide links between sections in each document.
-</li><li class="listitem">
-Lots of minor rewriting and restructuring to avoid
-duplication of information
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_1"></a>F.15. Release Notes for Version 1.6.1</h2></div></div></div><p>Version 1.6.1 includes support for our updated TeleBT v3.0
+writing the associated .eeprom file when an error is detected.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation_3">F.15.3. Documentation</h4>
+<div class="paragraph">
+<p>We spent a bunch of time trying to improve our documentation</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>HTML versions now have a table of contents on the left side.</p>
+</li>
+<li>
+<p>EasyMini now has its own shorter manual.</p>
+</li>
+<li>
+<p>Provide links between sections in each document.</p>
+</li>
+<li>
+<p>Lots of minor rewriting and restructuring to avoid
+duplication of information</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_1">F.16. Release Notes for Version 1.6.1</h3>
+<div class="paragraph">
+<p>Version 1.6.1 includes support for our updated TeleBT v3.0
 product and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_15"></a>F.15.1. AltOS</h3></div></div></div><p>AltOS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleBT v3.0 boards.
-</li><li class="listitem">
-Add support for uncompressed APRS data, providing support
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_16">F.16.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleBT v3.0 boards.</p>
+</li>
+<li>
+<p>Add support for uncompressed APRS data, providing support
 for older APRS receivers. Uncompressed APRS data is less
-precise, takes more bandwidth and doesn’t have integrated
-altitude data.
-</li></ul></div><p>AltOS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Make TeleDongle and TeleBT more tolerant of data rate
-variations from transmitting devices.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_8"></a>F.15.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add map to Monitor Idle display. It’s nice to be able to
+precise, takes more bandwidth and doesn&#8217;t have integrated
+altitude data.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Make TeleDongle and TeleBT more tolerant of data rate
+variations from transmitting devices.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_8">F.16.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add map to Monitor Idle display. It&#8217;s nice to be able to
 verify that maps are working, instead of needing to use
-Monitor Flight.
-</li></ul></div><p>AltosUI and TeleGPS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix frequency configuration to round values instead of
-truncate them, avoiding a common 1kHz error in the setting.
-</li><li class="listitem">
-Turn the Windows stub into a more useful program that can
+Monitor Flight.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix frequency configuration to round values instead of
+truncate them, avoiding a common 1kHz error in the setting.</p>
+</li>
+<li>
+<p>Turn the Windows stub into a more useful program that can
 launch the application with parameters so that file manager
-icons work more reliably.
-</li><li class="listitem">
-Force KML export to use a C locale so that numbers are
-formatted with <span class="emphasis"><em>.</em></span> instead of <span class="emphasis"><em>,</em></span> for a decimal separator in
-non-US locales.
-</li><li class="listitem">
-Preload map tiles based on distance rather than number of
+icons work more reliably.</p>
+</li>
+<li>
+<p>Force KML export to use a C locale so that numbers are
+formatted with '.' instead of ',' for a decimal separator in
+non-US locales.</p>
+</li>
+<li>
+<p>Preload map tiles based on distance rather than number of
 tiles; this means you get the same resolution covering the
 entire area, rather than having high resolution near the
-center and low resolution further away.
-</li><li class="listitem">
-Allow configuration of frequency and callsign in Monitor
-Idle mode.
-</li><li class="listitem">
-Fix layout weirdness when resizing windows on
-Windows. Windows shouldn’t have giant blank spaces around
-the useful content anymore.
-</li><li class="listitem">
-Fix layout weirdness when resizing windows on
-Windows. Windows shouldn’t have giant blank spaces around
-the useful content anymore.
-</li><li class="listitem">
-Use a longer filter for descent speed values. This should
+center and low resolution further away.</p>
+</li>
+<li>
+<p>Allow configuration of frequency and callsign in Monitor
+Idle mode.</p>
+</li>
+<li>
+<p>Fix layout weirdness when resizing windows on
+Windows. Windows shouldn&#8217;t have giant blank spaces around
+the useful content anymore.</p>
+</li>
+<li>
+<p>Fix layout weirdness when resizing windows on
+Windows. Windows shouldn&#8217;t have giant blank spaces around
+the useful content anymore.</p>
+</li>
+<li>
+<p>Use a longer filter for descent speed values. This should
 provide something more useful on the display, although it
-will take longer to respond to changes now.
-</li><li class="listitem">
-Make Replay Flight run in realtime again. It had been set to
-run at 10x speed by mistake.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosdroid_3"></a>F.15.3. AltosDroid</h3></div></div></div><p>AltosDroid New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add offline map support using mapping code from AltosUI.
-</li><li class="listitem">
-Support TeleDongle (and TeleBT via USB) on devices
-supporting USB On-The-Go.
-</li><li class="listitem">
-Display additional TeleMega pyro channel status in Pad tab.
-</li><li class="listitem">
-Switch between metric and imperial units.
-</li><li class="listitem">
-Monitor TeleBT battery voltage.
-</li><li class="listitem">
-Track multiple devices at the same time, selecting between
-them with a menu or using the map.
-</li><li class="listitem">
-Add hybrid, satellite and terrain map types.
-</li></ul></div><p>AltosDroid Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Use standard Android display conventions so that a menu
-button is available in the application title bar.
-</li><li class="listitem">
-Adjust layout to work on large and small screens; shrinking
+will take longer to respond to changes now.</p>
+</li>
+<li>
+<p>Make Replay Flight run in realtime again. It had been set to
+run at 10x speed by mistake.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosdroid_3">F.16.3. AltosDroid</h4>
+<div class="paragraph">
+<p>AltosDroid New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add offline map support using mapping code from AltosUI.</p>
+</li>
+<li>
+<p>Support TeleDongle (and TeleBT via USB) on devices
+supporting USB On-The-Go.</p>
+</li>
+<li>
+<p>Display additional TeleMega pyro channel status in Pad tab.</p>
+</li>
+<li>
+<p>Switch between metric and imperial units.</p>
+</li>
+<li>
+<p>Monitor TeleBT battery voltage.</p>
+</li>
+<li>
+<p>Track multiple devices at the same time, selecting between
+them with a menu or using the map.</p>
+</li>
+<li>
+<p>Add hybrid, satellite and terrain map types.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosDroid Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Use standard Android display conventions so that a menu
+button is available in the application title bar.</p>
+</li>
+<li>
+<p>Adjust layout to work on large and small screens; shrinking
 the go/no-go lights in smaller environments to try and make
-everything visible.
-</li><li class="listitem">
-Make voice announcements depend on current tab.
-</li><li class="listitem">
-Compute adjustment to current travel direction while in
-motion towards rocket.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6"></a>F.16. Release Notes for Version 1.6</h2></div></div></div><p>Version 1.6 includes support for our updated TeleDongle v3.0
+everything visible.</p>
+</li>
+<li>
+<p>Make voice announcements depend on current tab.</p>
+</li>
+<li>
+<p>Compute adjustment to current travel direction while in
+motion towards rocket.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6">F.17. Release Notes for Version 1.6</h3>
+<div class="paragraph">
+<p>Version 1.6 includes support for our updated TeleDongle v3.0
 product and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_16"></a>F.16.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleDongle v3.0 boards.
-</li></ul></div><p>AltOS Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Don’t beep out the continuity twice by accident in idle mode.
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_17">F.17.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleDongle v3.0 boards.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Don&#8217;t beep out the continuity twice by accident in idle mode.
 If the battery voltage report takes longer than the initialiation
-sequence, the igniter continuity would get reported twice.
-</li><li class="listitem">
-Record all 32 bits of gyro calibration data in TeleMega and
+sequence, the igniter continuity would get reported twice.</p>
+</li>
+<li>
+<p>Record all 32 bits of gyro calibration data in TeleMega and
 EasyMega log files. This fixes computation of the gyro rates
-in AltosUI.
-</li><li class="listitem">
-Change TeleDongle LED usage. Green LED flashes when valid
+in AltosUI.</p>
+</li>
+<li>
+<p>Change TeleDongle LED usage. Green LED flashes when valid
 packet is received. Red LED flashes when invalid packet is
-received.
-</li><li class="listitem">
-Replace LPC11U14 SPI driver with non-interrupt version. The
+received.</p>
+</li>
+<li>
+<p>Replace LPC11U14 SPI driver with non-interrupt version. The
 interrupt code would occasionally wedge on long transfers
 if interrupts were blocked for too long. This affects all
 released TeleGPS products; if you have a TeleGPS device,
-you’ll want to reflash the firmware.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_9"></a>F.16.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Compute tilt angle from TeleMega and EasyMega log
+you&#8217;ll want to reflash the firmware.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_9">F.17.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Compute tilt angle from TeleMega and EasyMega log
 files. This duplicates the quaternion-based angle tracking
 code from the flight firmware inside the ground station
 software so that post-flight analysis can include evaluation
-of the tilt angle.
-</li><li class="listitem">
-Shows the tool button window when starting with a data file
+of the tilt angle.</p>
+</li>
+<li>
+<p>Shows the tool button window when starting with a data file
 specified. This means that opening a data file from the file
 manager will now bring up the main window to let you operate
-the whole application.
-</li></ul></div><p>AltosUI Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Show the <span class="emphasis"><em>Connecting</em></span> dialog when using Monitor Idle. Lets
+the whole application.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Show the 'Connecting' dialog when using Monitor Idle. Lets
 you cancel the Monitor Idle startup when connecting over the
-radio link.
-</li><li class="listitem">
-Make <span class="emphasis"><em>Monitor Idle</em></span> work for TeleGPS devices when connected
-over USB. It’s nice for testing without needing to broadcast
-over the radio.
-</li><li class="listitem">
-Use different Windows API to discover USB devices. This
+radio link.</p>
+</li>
+<li>
+<p>Make 'Monitor Idle' work for TeleGPS devices when connected
+over USB. It&#8217;s nice for testing without needing to broadcast
+over the radio.</p>
+</li>
+<li>
+<p>Use different Windows API to discover USB devices. This
 works better on my Windows 7 box, and will be used if the
-older API fails to provide the necessary information.
-</li><li class="listitem">
-Look in more places in the registry to try and identify the
+older API fails to provide the necessary information.</p>
+</li>
+<li>
+<p>Look in more places in the registry to try and identify the
 installed Java version on Windows. If you install the
 default 32-bit version of Windows on a 64-bit OS, the Java
 registry information is hiding \SOFTWARE\Wow6432Node for
-some reason.
-</li><li class="listitem">
-Fix file association on Windows by searching for the
+some reason.</p>
+</li>
+<li>
+<p>Fix file association on Windows by searching for the
 javaw.exe program instead of assuming it is in
 %SYSTEMROOT%. This makes double-clicking on Altus Metrum
-data files in the file manager work correctly.
-</li><li class="listitem">
-When replaying a file, put <span class="emphasis"><em>done</em></span> in the Age field when we
-reach the end of the file, instead of continuing to count forever.
-</li><li class="listitem">
-In the Scan Channels code, wait for five seconds if we see
+data files in the file manager work correctly.</p>
+</li>
+<li>
+<p>When replaying a file, put 'done' in the Age field when we
+reach the end of the file, instead of continuing to count forever.</p>
+</li>
+<li>
+<p>In the Scan Channels code, wait for five seconds if we see
 any packet. This is needed because AltOS now sends the
 callsign, serial number and flight number only once every
-five seconds these days.
-</li><li class="listitem">
-In the Scan Channels code, reset pending flight state
+five seconds these days.</p>
+</li>
+<li>
+<p>In the Scan Channels code, reset pending flight state
 information each time we change channels. This avoids having
-flight computers appear on multiple frequencies by accident.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_5"></a>F.17. Release Notes for Version 1.5</h2></div></div></div><p>Version 1.5 is a major release. It includes support for our new
+flight computers appear on multiple frequencies by accident.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_5">F.18. Release Notes for Version 1.5</h3>
+<div class="paragraph">
+<p>Version 1.5 is a major release. It includes support for our new
 EasyMega product, new features and bug fixes in in the flight
-software for all our boards and the AltosUI ground station</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_17"></a>F.17.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for EasyMega boards.
-</li><li class="listitem">
-Make the APRS SSID be configurable. This lets you track
+software for all our boards and the AltosUI ground station</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_18">F.18.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for EasyMega boards.</p>
+</li>
+<li>
+<p>Make the APRS SSID be configurable. This lets you track
 different rockets on the same receiver without getting
-things mixed up.
-</li><li class="listitem">
-Report extra pyro channel continuity state on EasyMega and
+things mixed up.</p>
+</li>
+<li>
+<p>Report extra pyro channel continuity state on EasyMega and
 TeleMega via the beeper. This lets you easily verify flight
 readiness on these boards after powering up the electronics
-on the rail.
-</li><li class="listitem">
-Add lower telemetry data rates (2400 and 9600 bps) to
+on the rail.</p>
+</li>
+<li>
+<p>Add lower telemetry data rates (2400 and 9600 bps) to
 increase telemetry radio range. This reduces the amount of
 data received as well as increasing battery consumption in
-the transmitter.
-</li><li class="listitem">
-Change TeleGPS to have only a single log, and append new
+the transmitter.</p>
+</li>
+<li>
+<p>Change TeleGPS to have only a single log, and append new
 data to it rather than using seperate per-flight logs. This
 avoids accidentally filling up log storage by turning
-TeleGPS on/off several times.
-</li></ul></div><p>AltOS Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Increase the maximum range for altitude values from +/-32767m
+TeleGPS on/off several times.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Increase the maximum range for altitude values from +/-32767m
 to +/-2147483647m, allowing the flight computers to function
-correctly above the 32km level.
-</li><li class="listitem">
-Continuously test pyro firing conditions during delay stage,
+correctly above the 32km level.</p>
+</li>
+<li>
+<p>Continuously test pyro firing conditions during delay stage,
 inhibiting the pyro channel if the test fails. This prevents
 firing pyro charges where the conditions were good before
-the delay, but become bad before the delay expires.
-</li><li class="listitem">
-Allow negative numbers in pyro configuration values. This
+the delay, but become bad before the delay expires.</p>
+</li>
+<li>
+<p>Allow negative numbers in pyro configuration values. This
 lets you specify things like descending speed or
-deceleration.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_10"></a>F.17.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support telemetry baud rate selection. Adds menus to
+deceleration.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_10">F.18.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Support telemetry baud rate selection. Adds menus to
 the flight monitoring and configuration for baud rate
-selection.
-</li><li class="listitem">
-Support APRS SSID configuration.
-</li><li class="listitem">
-Integrate with file managers. This provides icons for all of
+selection.</p>
+</li>
+<li>
+<p>Support APRS SSID configuration.</p>
+</li>
+<li>
+<p>Integrate with file managers. This provides icons for all of
 our file types and associates our application with the files
 so that using a file manager to open a AltOS data file
-results in launching our application.
-</li></ul></div><p>AltosUI Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Make the <span class="emphasis"><em>Graph</em></span> button on the landed tab work again.
-</li><li class="listitem">
-Make tests for Java on Windows a bit smarter, and also
+results in launching our application.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Make the 'Graph' button on the landed tab work again.</p>
+</li>
+<li>
+<p>Make tests for Java on Windows a bit smarter, and also
 provide the user with the option to skip installing Java for
-cases where we just can’t figure out what version is installed.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_4_2"></a>F.18. Release Notes for Version 1.4.2</h2></div></div></div><p>Version 1.4.2 is a minor release. It fixes Java-related install issues on
-Windows</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_11"></a>F.18.1. AltosUI and TeleGPS Applications</h3></div></div></div><p>Windows Install Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Checks for Java installation data in more registry locations.
-</li><li class="listitem">
-Allows user to bypass Java installation in case the
-detection fails.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_4_1"></a>F.19. Release Notes for Version 1.4.1</h2></div></div></div><p>Version 1.4.1 is a minor release. It fixes install issues on
+cases where we just can&#8217;t figure out what version is installed.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_4_2">F.19. Release Notes for Version 1.4.2</h3>
+<div class="paragraph">
+<p>Version 1.4.2 is a minor release. It fixes Java-related install issues on
+Windows</p>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_11">F.19.1. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>Windows Install Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Checks for Java installation data in more registry locations.</p>
+</li>
+<li>
+<p>Allows user to bypass Java installation in case the
+detection fails.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_4_1">F.20. Release Notes for Version 1.4.1</h3>
+<div class="paragraph">
+<p>Version 1.4.1 is a minor release. It fixes install issues on
 Windows and provides the missing TeleMetrum V2.0 firmware. There
-arent any changes to the firmware or host applications at
+aren&#8217;t any changes to the firmware or host applications at
 all. All Windows users will want to upgrade to get the signed
 driver, but Mac and Linux users who do not need the TeleMetrum
-V2.0 firmware image will not need to upgrade.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_12"></a>F.19.1. AltosUI and TeleGPS Applications:</h3></div></div></div><p>Windows Install Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Provide signed Windows driver files. This should avoid any need to
-disable driver signature checking on Windows 7 or 8.
-</li><li class="listitem">
-Fix Java version detection and download. Previously, the
+V2.0 firmware image will not need to upgrade.</p>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_12">F.20.1. AltosUI and TeleGPS Applications:</h4>
+<div class="paragraph">
+<p>Windows Install Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Provide signed Windows driver files. This should avoid any need to
+disable driver signature checking on Windows 7 or 8.</p>
+</li>
+<li>
+<p>Fix Java version detection and download. Previously, the
 installer would only look for Java 6 or 7 and insist on
 downloading its own Java bits if there was something else
-installed. Furthermore, the 64-bit Java link provided didnt
+installed. Furthermore, the 64-bit Java link provided didn&#8217;t
 work for anyone other than Keith, making it impossible to
-install AltOS on any machine with Java SE 8 installed.
-</li></ul></div><p>Other Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Include 1.4 firmware for TeleMetrum V2.0. None of the
-installers shipped this file. Now it’s included in the AltOS
-packages for Linux, Mac and Windows.
-</li><li class="listitem">
-Include Google Application Key for map downloading. The 1.4
-release didn’t have this key in the released version of the
-software, making map downloading fail for most people.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_4"></a>F.20. Release Notes for Version 1.4</h2></div></div></div><p>Version 1.4 is a major release. It includes support for our new
+install AltOS on any machine with Java SE 8 installed.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Other Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Include 1.4 firmware for TeleMetrum V2.0. None of the
+installers shipped this file. Now it&#8217;s included in the AltOS
+packages for Linux, Mac and Windows.</p>
+</li>
+<li>
+<p>Include Google Application Key for map downloading. The 1.4
+release didn&#8217;t have this key in the released version of the
+software, making map downloading fail for most people.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_4">F.21. Release Notes for Version 1.4</h3>
+<div class="paragraph">
+<p>Version 1.4 is a major release. It includes support for our new
 TeleGPS product, new features and bug fixes in in the flight
-software for all our boards and the AltosUI ground station</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_18"></a>F.20.1. AltOS</h3></div></div></div><p>AltOS new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleGPS boards.
-</li><li class="listitem">
-Make the beeper tone configurable, making it
+software for all our boards and the AltosUI ground station</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_19">F.21.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleGPS boards.</p>
+</li>
+<li>
+<p>Make the beeper tone configurable, making it
 possible to distinguish between two Altus Metrum
-products in the same ebay.
-</li><li class="listitem">
-Make the firing time for extra pyro channels
+products in the same ebay.</p>
+</li>
+<li>
+<p>Make the firing time for extra pyro channels
 configurable, allowing longer (or shorter) than the
 default 50ms.  Only relevant for TeleMega at this
-time.
-</li></ul></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Replace the <span class="emphasis"><em>dit dit dit</em></span> tones at startup with the
+time.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Replace the 'dit dit dit' tones at startup with the
 current battery voltage, measured in tenths of a
 volt. This lets you check the battery voltage
 without needing telemetry, which is especially
-useful on EasyMini.
-</li><li class="listitem">
-Change state beeping to "Farnsworth spacing", which
-means they’re quite a bit faster than before, and so
-they take less time to send.
-</li><li class="listitem">
-Fix bug preventing the selection of the <span class="emphasis"><em>Flight
-State After</em></span> mode in pyro configuration.
-</li><li class="listitem">
-Fix bug where erasing flights would reset the flight
-number to 2 on TeleMega and TeleMetrum v2.
-</li><li class="listitem">
-Fix u-Blox GPS driver to mark course and speed data
-as being present.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application"></a>F.20.2. AltosUI Application</h3></div></div></div><p>AltosUI new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add zooming and new content types (terrain and road
+useful on EasyMini.</p>
+</li>
+<li>
+<p>Change state beeping to "Farnsworth spacing", which
+means they&#8217;re quite a bit faster than before, and so
+they take less time to send.</p>
+</li>
+<li>
+<p>Fix bug preventing the selection of the 'Flight
+State After' mode in pyro configuration.</p>
+</li>
+<li>
+<p>Fix bug where erasing flights would reset the flight
+number to 2 on TeleMega and TeleMetrum v2.</p>
+</li>
+<li>
+<p>Fix u-Blox GPS driver to mark course and speed data
+as being present.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application">F.21.2. AltosUI Application</h4>
+<div class="paragraph">
+<p>AltosUI new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add zooming and new content types (terrain and road
 maps) to map view. Change map storage format from
 PNG to Jpeg, which saves a huge amount of disk
 space. You will need to re-download all of your
-pre-loaded map images.
-</li><li class="listitem">
-Add a distance measuring device to the maps
+pre-loaded map images.</p>
+</li>
+<li>
+<p>Add a distance measuring device to the maps
 view. Select this by using any button other than the
 left one, or by pressing shift or control on the
-keyboard while using the left button.
-</li><li class="listitem">
-Add new <span class="emphasis"><em>Ignitor</em></span> tab to the flight monitor display
-for TeleMega’s extra ignitors.
-</li><li class="listitem">
-Add additional ignitor firing marks and voltages to
+keyboard while using the left button.</p>
+</li>
+<li>
+<p>Add new 'Ignitor' tab to the flight monitor display
+for TeleMega&#8217;s extra ignitors.</p>
+</li>
+<li>
+<p>Add additional ignitor firing marks and voltages to
 the graph so you can see when the ignitors fired,
-along with the ignitor voltages.
-</li><li class="listitem">
-Add GPS course, ground speed and climb rate as
-optional graph elements.
-</li></ul></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-When flashing new firmware, re-try opening the
+along with the ignitor voltages.</p>
+</li>
+<li>
+<p>Add GPS course, ground speed and climb rate as
+optional graph elements.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>When flashing new firmware, re-try opening the
 device as sometimes it takes a while for the
 underlying operating system to recognize that the
 device has rebooted in preparation for the flashing
-operation.
-</li><li class="listitem">
-Hide Tilt Angle in ascent tab for devices that don’t
-have a gyro.
-</li><li class="listitem">
-Increase the width of data lines in the graphs to
-make them easier to read.
-</li><li class="listitem">
-Filter out speed and acceleration spikes caused by
+operation.</p>
+</li>
+<li>
+<p>Hide Tilt Angle in ascent tab for devices that don&#8217;t
+have a gyro.</p>
+</li>
+<li>
+<p>Increase the width of data lines in the graphs to
+make them easier to read.</p>
+</li>
+<li>
+<p>Filter out speed and acceleration spikes caused by
 ejection charge firing when computing the maximum
 values. This provides a more accurate reading of
-those maximums.
-</li><li class="listitem">
-Fix EasyMini voltage displays. Early EasyMini
+those maximums.</p>
+</li>
+<li>
+<p>Fix EasyMini voltage displays. Early EasyMini
 prototypes used a 3.0V regulator, and AltosUI still
 used that value as the basis of the
 computation. Production EasyMini boards have always
@@ -3036,63 +6948,144 @@ shipped with a 3.3V regulator. Also, purple EasyMini
 boards sensed the battery voltage past the blocking
 diode, resulting in a drop of about 150mV from the
 true battery voltage. Compensate for that when
-displaying the value.
-</li><li class="listitem">
-Display error message when trying to configure
+displaying the value.</p>
+</li>
+<li>
+<p>Display error message when trying to configure
 maximum flight log size while the flight computer
-still has flight data stored.
-</li><li class="listitem">
-Handle TeleMetrum and TeleMini eeprom files
+still has flight data stored.</p>
+</li>
+<li>
+<p>Handle TeleMetrum and TeleMini eeprom files
 generated with pre-1.0 firmware. Those ancient
-versions didn’t report the log format, so just use
-the product name instead.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telegps_application"></a>F.20.3. TeleGPS Application</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-New application designed for use with TeleGPS boards.
-</li><li class="listitem">
-Shares code with AltosUI, mostly just trimmed down
-to focus on TeleGPS-related functions.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation_4"></a>F.20.4. Documentation</h3></div></div></div><p>Documentation changes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Re-create the drill template images; they should
+versions didn&#8217;t report the log format, so just use
+the product name instead.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_telegps_application">F.21.3. TeleGPS Application</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>New application designed for use with TeleGPS boards.</p>
+</li>
+<li>
+<p>Shares code with AltosUI, mostly just trimmed down
+to focus on TeleGPS-related functions.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation_4">F.21.4. Documentation</h4>
+<div class="paragraph">
+<p>Documentation changes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Re-create the drill template images; they should
 print correctly from Firefox at least. Ship these as
-individual PDF files so they’re easy to print.
-</li><li class="listitem">
-Add a description of the <span class="emphasis"><em>Apogee Lockout</em></span> setting,
+individual PDF files so they&#8217;re easy to print.</p>
+</li>
+<li>
+<p>Add a description of the 'Apogee Lockout' setting,
 which prevents the apogee charge from firing for a
-configurable amount of time after boost.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_3_2"></a>F.21. Release Notes for Version 1.3.2</h2></div></div></div><p>Version 1.3.2 is a minor release. It includes small bug fixes for
-the TeleMega flight software and AltosUI ground station</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_19"></a>F.21.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-On TeleMega, limit number of logged GPS status
-information to 12 satellites. That’s all there is
-room for in the log structure.
-</li><li class="listitem">
-Improve APRS behavior. Remembers last known GPS
+configurable amount of time after boost.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_3_2">F.22. Release Notes for Version 1.3.2</h3>
+<div class="paragraph">
+<p>Version 1.3.2 is a minor release. It includes small bug fixes for
+the TeleMega flight software and AltosUI ground station</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_20">F.22.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>On TeleMega, limit number of logged GPS status
+information to 12 satellites. That&#8217;s all there is
+room for in the log structure.</p>
+</li>
+<li>
+<p>Improve APRS behavior. Remembers last known GPS
 position and keeps sending that if we lose GPS
 lock. Marks locked/unlocked by sending L/U in the
 APRS comment field along with the number of sats in
-view and voltages.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application_2"></a>F.21.2. AltosUI Application</h3></div></div></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-If the TeleMega flight firmware reports that it has
+view and voltages.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application_2">F.22.2. AltosUI Application</h4>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>If the TeleMega flight firmware reports that it has
 logged information about more than 12 satellites,
-don’t believe it as the log only holds 12 satellite
-records.
-</li><li class="listitem">
-Track the maximum height as computed from GPS
+don&#8217;t believe it as the log only holds 12 satellite
+records.</p>
+</li>
+<li>
+<p>Track the maximum height as computed from GPS
 altitude data and report that in the flight summary
-data.
-</li><li class="listitem">
-Use letters (A, B, C, D) for alternate pyro channel
+data.</p>
+</li>
+<li>
+<p>Use letters (A, B, C, D) for alternate pyro channel
 names instead of numbers (0, 1, 2, 3) in the Fire
-Igniter dialog.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_3_1"></a>F.22. Release Notes for Version 1.3.1</h2></div></div></div><p>Version 1.3.1 is a minor release. It improves support for
-TeleMega, TeleMetrum v2.0, TeleMini v2.0 and EasyMini.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_20"></a>F.22.1. AltOS</h3></div></div></div><p>AltOS new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Improved APRS mode. Now uses compressed position
+Igniter dialog.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_3_1">F.23. Release Notes for Version 1.3.1</h3>
+<div class="paragraph">
+<p>Version 1.3.1 is a minor release. It improves support for
+TeleMega, TeleMetrum v2.0, TeleMini v2.0 and EasyMini.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_21">F.23.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Improved APRS mode. Now uses compressed position
 format for smaller data size, improved precision and
 to include altitude data as well as latitude and
 longitude. Also added battery and pyro voltage
 reports in the APRS comment field so you can confirm
-that the unit is ready for launch.
-</li></ul></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Improve sensor boot code. If sensors fail to
+that the unit is ready for launch.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Improve sensor boot code. If sensors fail to
 self-test, the device will still boot up and check
 for pad/idle modes. If in idle mode, the device will
 warn the user with a distinct beep, if in Pad mode,
@@ -3100,445 +7093,859 @@ the unit will operate as best it can. Also, the
 Z-axis accelerometer now uses the factory
 calibration values instead of re-calibrating on the
 pad each time. This avoids accidental boost detect
-when moving the device around while in Pad mode.
-</li><li class="listitem">
-Fix antenna-down mode accelerometer
-configuration. Antenna down mode wasn’t working
+when moving the device around while in Pad mode.</p>
+</li>
+<li>
+<p>Fix antenna-down mode accelerometer
+configuration. Antenna down mode wasn&#8217;t working
 because the accelerometer calibration values were
-getting re-computed incorrectly in inverted mode.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application_3"></a>F.22.2. AltosUI Application</h3></div></div></div><p>AltosUI new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Display additional TeleMega sensor values in real
+getting re-computed incorrectly in inverted mode.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application_3">F.23.2. AltosUI Application</h4>
+<div class="paragraph">
+<p>AltosUI new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Display additional TeleMega sensor values in real
 units. Make all of these values available for
 plotting. Display TeleMega orientation value in the
-Ascent and Table tabs.
-</li><li class="listitem">
-Support additional TeleMega pyro channels in the
+Ascent and Table tabs.</p>
+</li>
+<li>
+<p>Support additional TeleMega pyro channels in the
 Fire Igniter dialog. This lets you do remote testing
 of all of the channels, rather than just Apogee and
-Main.
-</li></ul></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Limit data rate when downloading satellite images
+Main.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Limit data rate when downloading satellite images
 from Google to make sure we stay within their limits
-so that all of the map tiles download successfully.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_3"></a>F.23. Release Notes for Version 1.3</h2></div></div></div><p>Version 1.3 is a major release. It adds support for TeleMega,
-TeleMetrum v2.0, TeleMini v2.0 and EasyMini.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_21"></a>F.23.1. AltOS</h3></div></div></div><p>AltOS new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add STM32L processor support. This includes
+so that all of the map tiles download successfully.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_3">F.24. Release Notes for Version 1.3</h3>
+<div class="paragraph">
+<p>Version 1.3 is a major release. It adds support for TeleMega,
+TeleMetrum v2.0, TeleMini v2.0 and EasyMini.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_22">F.24.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add STM32L processor support. This includes
 enhancements to the scheduler to support products
-with many threads.
-</li><li class="listitem">
-Add NXP LPC11U14 processor support.
-</li><li class="listitem">
-Support additional pyro channels. These are
+with many threads.</p>
+</li>
+<li>
+<p>Add NXP LPC11U14 processor support.</p>
+</li>
+<li>
+<p>Support additional pyro channels. These are
 configurable through the UI to handle air starts,
 staging, additional recovery events and external
-devices such as cameras.
-</li><li class="listitem">
-Add 3-axis gyro support for orientation
+devices such as cameras.</p>
+</li>
+<li>
+<p>Add 3-axis gyro support for orientation
 tracking. This integrates the gyros to compute the
 angle from vertical during flight, allowing the
 additional pyro events to be controlled by this
-value.
-</li><li class="listitem">
-Many more device drivers, including u-Blox Max 7Q
+value.</p>
+</li>
+<li>
+<p>Many more device drivers, including u-Blox Max 7Q
 GPS, Freescale MMA6555 digital single-axis
 accelerometer, Invensense MPU6000 3-axis
 accelerometer + 3 axis gyro, Honeywell HMC5883
 3-axis magnetic sensor and the TI CC1120 and CC115L
-digital FM transceivers
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application_4"></a>F.23.2. AltosUI Application</h3></div></div></div><p>AltosUI new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support TeleMega, TeleMetrum v2.0, TeleMini v2.0 and
-EasyMini telemetry and log formats.
-</li></ul></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Use preferred units for main deployment height
+digital FM transceivers</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application_4">F.24.2. AltosUI Application</h4>
+<div class="paragraph">
+<p>AltosUI new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Support TeleMega, TeleMetrum v2.0, TeleMini v2.0 and
+EasyMini telemetry and log formats.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Use preferred units for main deployment height
 configuration, instead of always doing configuration in
 meters.
-== MicroPeak Application
-</li><li class="listitem">
-Add <span class="emphasis"><em>Download</em></span> button to menu bar.
-</li><li class="listitem">
-Save the last log directory and offer that as the
-default for new downloads
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_2_1"></a>F.24. Release Notes for Version 1.2.1</h2></div></div></div><p>Version 1.2.1 is a minor release. It adds support for TeleBT and
+== MicroPeak Application</p>
+</li>
+<li>
+<p>Add 'Download' button to menu bar.</p>
+</li>
+<li>
+<p>Save the last log directory and offer that as the
+default for new downloads</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_2_1">F.25. Release Notes for Version 1.2.1</h3>
+<div class="paragraph">
+<p>Version 1.2.1 is a minor release. It adds support for TeleBT and
 the AltosDroid application, provides several new features in
-AltosUI and fixes some bugs in the AltOS firmware.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_22"></a>F.24.1. AltOS</h3></div></div></div><p>AltOS new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleBT
-</li></ul></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-In TeleMini recovery mode (when booted with the
+AltosUI and fixes some bugs in the AltOS firmware.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_23">F.25.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleBT</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>In TeleMini recovery mode (when booted with the
 outer two debug pins connected together), the radio
 parameters are also set back to defaults
-(434.550MHz, N0CALL, factory radio cal).
-</li><li class="listitem">
-Correct Kalman filter model error covariance
+(434.550MHz, N0CALL, factory radio cal).</p>
+</li>
+<li>
+<p>Correct Kalman filter model error covariance
 matrix. The values used previously assumed
 continuous measurements instead of discrete
-measurements.
-</li><li class="listitem">
-Fix some bugs in the USB driver for TeleMetrum and
-TeleDongle that affected Windows users.
-</li><li class="listitem">
-Adjusted the automatic gain control parameters that
+measurements.</p>
+</li>
+<li>
+<p>Fix some bugs in the USB driver for TeleMetrum and
+TeleDongle that affected Windows users.</p>
+</li>
+<li>
+<p>Adjusted the automatic gain control parameters that
 affect receive performance for TeleDongle. Field
 tests indicate that this may improve receive
-performance somewhat.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application_5"></a>F.24.2. AltosUI Application</h3></div></div></div><p>AltosUI application new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Make the initial position of the AltosUI top level
+performance somewhat.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application_5">F.25.2. AltosUI Application</h4>
+<div class="paragraph">
+<p>AltosUI application new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Make the initial position of the AltosUI top level
 window configurable. Along with this change, the
-other windows will pop up at <span class="emphasis"><em>sensible</em></span> places now,
-instead of on top of one another.
-</li><li class="listitem">
-Add GPS data and a map to the graph window. This
+other windows will pop up at 'sensible' places now,
+instead of on top of one another.</p>
+</li>
+<li>
+<p>Add GPS data and a map to the graph window. This
 lets you see a complete summary of the flight
-without needing to <span class="emphasis"><em>replay</em></span> the whole thing.
-</li></ul></div><p>AltosUI application fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Handle missing GPS lock in <span class="emphasis"><em>Descent</em></span>
+without needing to 'replay' the whole thing.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI application fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Handle missing GPS lock in 'Descent'
 tab. Previously, if the GPS position of the pad was
 unknown, an exception would be raised, breaking the
-Descent tab contents.
-</li><li class="listitem">
-Improve the graph, adding tool-tips to show values
+Descent tab contents.</p>
+</li>
+<li>
+<p>Improve the graph, adding tool-tips to show values
 near the cursor and making the displayed set of
 values configurable, adding all of the flight data
 as options while leaving the default settings alone
 so that the graph starts by showing height, speed
-and acceleration.
-</li><li class="listitem">
-Add callsign to Monitor idle window and connecting
+and acceleration.</p>
+</li>
+<li>
+<p>Add callsign to Monitor idle window and connecting
 dialogs. This makes it clear which callsign is being
 used so that the operator will be aware that it must
 match the flight computer value or no communication
-will work.
-</li><li class="listitem">
-When downloading flight data, display the block
+will work.</p>
+</li>
+<li>
+<p>When downloading flight data, display the block
 number so that the user has some sense of
-progress. Unfortunately, we dont know how many
+progress. Unfortunately, we don&#8217;t know how many
 blocks will need to be downloaded, but at least it
-isn’t just sitting there doing nothing for a long
-time.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosdroid_4"></a>F.24.3. AltosDroid</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-First version of this application
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_2"></a>F.25. Release Notes for Version 1.2</h2></div></div></div><p>Version 1.2 is a major release. It adds support for MicroPeak
-and the MicroPeak USB adapter.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_23"></a>F.25.1. AltOS</h3></div></div></div><p>AltOS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add MicroPeak support. This includes support for the
+isn&#8217;t just sitting there doing nothing for a long
+time.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosdroid_4">F.25.3. AltosDroid</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>First version of this application</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_2">F.26. Release Notes for Version 1.2</h3>
+<div class="paragraph">
+<p>Version 1.2 is a major release. It adds support for MicroPeak
+and the MicroPeak USB adapter.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_24">F.26.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add MicroPeak support. This includes support for the
 ATtiny85 processor and adaptations to the core code
 to allow for devices too small to run the
-multi-tasking scheduler.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_micropeak_application"></a>F.25.2. AltosUI and MicroPeak Application</h3></div></div></div><p>New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Added MicroPeak application
-</li></ul></div><p>AltosUI and MicroPeak fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Distribute Mac OS X packages in disk image (<span class="emphasis"><em>.dmg</em></span>)
-format to greatly simplify installation.
-</li><li class="listitem">
-Provide version numbers for the shared Java
+multi-tasking scheduler.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_micropeak_application">F.26.2. AltosUI and MicroPeak Application</h4>
+<div class="paragraph">
+<p>New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Added MicroPeak application</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI and MicroPeak fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Distribute Mac OS X packages in disk image ('.dmg')
+format to greatly simplify installation.</p>
+</li>
+<li>
+<p>Provide version numbers for the shared Java
 libraries to ensure that upgrades work properly, and
 to allow for multiple Altus Metrum software packages
 to be installed in the same directory at the same
-time.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_1"></a>F.26. Release Notes for Version 1.1</h2></div></div></div><p>Version 1.1.1 is a bug-fix release. It fixes a couple of bugs
+time.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_1">F.27. Release Notes for Version 1.1</h3>
+<div class="paragraph">
+<p>Version 1.1.1 is a bug-fix release. It fixes a couple of bugs
 in AltosUI and one firmware bug that affects TeleMetrum
 version 1.0 boards. Thanks to Bob Brown for help diagnosing
 the Google Earth file export issue, and for suggesting the
-addition of the Ground Distance value in the Descent tab.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_24"></a>F.26.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-TeleMetrum v1.0 boards use the AT45DB081D flash
+addition of the Ground Distance value in the Descent tab.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_25">F.27.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>TeleMetrum v1.0 boards use the AT45DB081D flash
 memory part to store flight data, which is different
 from later TeleMetrum boards. The AltOS v1.1 driver
-for this chip couldnt erase memory, leaving it
+for this chip couldn&#8217;t erase memory, leaving it
 impossible to delete flight data or update
-configuration values. This bug doesn’t affect newer
-TeleMetrum boards, and it doesn’t affect the safety
-of rockets flying version 1.1 firmware.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_2"></a>F.26.2. AltosUI</h3></div></div></div><p>AltosUI new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-The “Descent” tab displays the range to the rocket,
+configuration values. This bug doesn&#8217;t affect newer
+TeleMetrum boards, and it doesn&#8217;t affect the safety
+of rockets flying version 1.1 firmware.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_2">F.27.2. AltosUI</h4>
+<div class="paragraph">
+<p>AltosUI new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The “Descent” tab displays the range to the rocket,
 which is a combination of the over-the-ground
 distance to the rockets current latitude/longitude
-and the height of the rocket. As such, its useful
+and the height of the rocket. As such, it&#8217;s useful
 for knowing how far away the rocket is, but
 difficult to use when estimating where the rocket
 might eventually land. A new “Ground Distance” field
 has been added which displays the distance to a spot
-right underneath the rocket.
-</li></ul></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Creating a Google Earth file (KML) from on-board
+right underneath the rocket.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Creating a Google Earth file (KML) from on-board
 flight data (EEPROM) would generate an empty
 file. The code responsible for reading the EEPROM
-file wasnt ever setting the GPS valid bits, and so
+file wasn&#8217;t ever setting the GPS valid bits, and so
 the KML export code thought there was no GPS data in
-the file.
-</li><li class="listitem">
-The “Landed” tab was displaying all values in metric
+the file.</p>
+</li>
+<li>
+<p>The “Landed” tab was displaying all values in metric
 units, even when AltosUI was configured to display
 imperial units. Somehow I just missed this tab when
-doing the units stuff.
-</li><li class="listitem">
-Sensor data wasn’t being displayed for TeleMini
+doing the units stuff.</p>
+</li>
+<li>
+<p>Sensor data wasn&#8217;t being displayed for TeleMini
 flight computers in Monitor Idle mode, including
 things like battery voltage. The code that picked
 which kinds of data to fetch from the flight
 computer was missing a check for TeleMini when
-deciding whether to fetch the analog sensor data.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_1_2"></a>F.27. Release Notes for Version 1.1</h2></div></div></div><p>Version 1.1 is a minor release. It provides a few new features
-in AltosUI and the AltOS firmware and fixes bugs.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_25"></a>F.27.1. AltOS</h3></div></div></div><p>AltOS Firmware New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add apogee-lockout value. Overrides the apogee
+deciding whether to fetch the analog sensor data.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_1_2">F.28. Release Notes for Version 1.1</h3>
+<div class="paragraph">
+<p>Version 1.1 is a minor release. It provides a few new features
+in AltosUI and the AltOS firmware and fixes bugs.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_26">F.28.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS Firmware New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add apogee-lockout value. Overrides the apogee
 detection logic to prevent incorrect apogee charge
-firing.
-</li><li class="listitem">
-Force the radio frequency to 434.550MHz when the
+firing.</p>
+</li>
+<li>
+<p>Force the radio frequency to 434.550MHz when the
 debug clock pin is connected to ground at boot
 time. This provides a way to talk to a TeleMini
-which is configured to some unknown frequency.
-</li><li class="listitem">
-Provide RSSI values for Monitor Idle mode. This
+which is configured to some unknown frequency.</p>
+</li>
+<li>
+<p>Provide RSSI values for Monitor Idle mode. This
 makes it easy to check radio range without needing
-to go to flight mode.
-</li></ul></div><p>AltOS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix a bug where the data reported in telemetry
-packets was from 320ms ago.
-</li><li class="listitem">
-Fix a bug which caused the old received telemetry
+to go to flight mode.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix a bug where the data reported in telemetry
+packets was from 320ms ago.</p>
+</li>
+<li>
+<p>Fix a bug which caused the old received telemetry
 packets to be retransmitted over the USB link when
-the radio was turned off and back on.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_3"></a>F.27.2. AltosUI</h3></div></div></div><p>AltosUI New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Make the look-n-feel configurable, providing a choice from
-the available options.
-</li><li class="listitem">
-Add an <span class="emphasis"><em>Age</em></span> element to mark how long since a
+the radio was turned off and back on.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_3">F.28.2. AltosUI</h4>
+<div class="paragraph">
+<p>AltosUI New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Make the look-n-feel configurable, providing a choice from
+the available options.</p>
+</li>
+<li>
+<p>Add an 'Age' element to mark how long since a
 telemetry packet has been received. Useful to
 quickly gauge whether communications with the rocket
-are still active.
-</li><li class="listitem">
-Add <span class="emphasis"><em>Configure Ground Station</em></span> dialog to set the
+are still active.</p>
+</li>
+<li>
+<p>Add 'Configure Ground Station' dialog to set the
 radio frequency used by a particular TeleDongle
-without having to go through the flight monitor UI.
-</li><li class="listitem">
-Add configuration for the new apogee-lockout
+without having to go through the flight monitor UI.</p>
+</li>
+<li>
+<p>Add configuration for the new apogee-lockout
 value. A menu provides a list of reasonable values,
-or the value can be set by hand.
-</li><li class="listitem">
-Add Imperial units mode to present data in feet
-instead of meters.
-</li></ul></div><p>AltosUI Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix a bug that caused GPS ready to happen too
+or the value can be set by hand.</p>
+</li>
+<li>
+<p>Add Imperial units mode to present data in feet
+instead of meters.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix a bug that caused GPS ready to happen too
 quickly. The software was using every telemetry
 packet to signal new GPS data, which caused GPS
 ready to be signalled after 10 packets instead of 10
-GPS updates.
-</li><li class="listitem">
-Fix Google Earth data export to work with recent
+GPS updates.</p>
+</li>
+<li>
+<p>Fix Google Earth data export to work with recent
 versions. The google earth file loading code got a
 lot pickier, requiring some minor white space
-changes in the export code.
-</li><li class="listitem">
-Changed how flight data are downloaded. Now there’s
+changes in the export code.</p>
+</li>
+<li>
+<p>Changed how flight data are downloaded. Now there&#8217;s
 an initial dialog asking which flights to download,
 and after that finishes, a second dialog comes up
-asking which flights to delete.
-</li><li class="listitem">
-Re-compute time spent in each state for the flight
+asking which flights to delete.</p>
+</li>
+<li>
+<p>Re-compute time spent in each state for the flight
 graph; this figures out the actual boost and landing
 times instead of using the conservative values
 provide by the flight electronics. This improves the
 accuracy of the boost acceleration and main descent
-rate computations.
-</li><li class="listitem">
-Make AltosUI run on Mac OS Lion. The default Java
+rate computations.</p>
+</li>
+<li>
+<p>Make AltosUI run on Mac OS Lion. The default Java
 heap space was dramatically reduced for this release
 causing much of the UI to fail randomly. This most
 often affected the satellite mapping download and
-displays.
-</li><li class="listitem">
-Change how data are displayed in the <span class="emphasis"><em>table</em></span> tab of
+displays.</p>
+</li>
+<li>
+<p>Change how data are displayed in the 'table' tab of
 the flight monitoring window. This eliminates
 entries duplicated from the header and adds both
 current altitude and pad altitude, which are useful
-in <span class="emphasis"><em>Monitor Idle</em></span> mode.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_0_1"></a>F.28. Release Notes for Version 1.0.1</h2></div></div></div><p>Version 1.0.1 is a major release, adding support for the
-TeleMini device and lots of new AltosUI features</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_26"></a>F.28.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add TeleMini v1.0 support.
-</li><li class="listitem">
-Support operation of TeleMetrum with the antenna pointing
+in 'Monitor Idle' mode.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_0_1">F.29. Release Notes for Version 1.0.1</h3>
+<div class="paragraph">
+<p>Version 1.0.1 is a major release, adding support for the
+TeleMini device and lots of new AltosUI features</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_27">F.29.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add TeleMini v1.0 support.</p>
+</li>
+<li>
+<p>Support operation of TeleMetrum with the antenna pointing
 aft. Previous firmware versions required the antenna to be
 pointing upwards, now there is a configuration option
 allowing the antenna to point aft, to aid installation in
-some airframes.
-</li><li class="listitem">
-Ability to disable telemetry. For airframes where an antenna
-just isn’t possible, or where radio transmissions might
-cause trouble with other electronics, there’s a
+some airframes.</p>
+</li>
+<li>
+<p>Ability to disable telemetry. For airframes where an antenna
+just isn&#8217;t possible, or where radio transmissions might
+cause trouble with other electronics, there&#8217;s a
 configuration option to disable all telemetry. Note that the
-board will still enable the radio link in idle mode.
-</li><li class="listitem">
-Arbitrary frequency selection. The radios in Altus Metrum
+board will still enable the radio link in idle mode.</p>
+</li>
+<li>
+<p>Arbitrary frequency selection. The radios in Altus Metrum
 devices can be programmed to a wide range of frequencies, so
-instead of limiting devices to 10 pre-selected <span class="emphasis"><em>channels</em></span>,
+instead of limiting devices to 10 pre-selected 'channels',
 the new firmware allows the user to choose any frequency in
 the 70cm band. Note that the RF matching circuit on the
 boards is tuned for around 435MHz, so frequencies far from
-that may reduce the available range.
-</li></ul></div><p>AltOS Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Change telemetry to be encoded in multiple 32-byte
+that may reduce the available range.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Change telemetry to be encoded in multiple 32-byte
 packets. This enables support for TeleMini and other devices
 without requiring further updates to the TeleDongle
-firmware.
-</li><li class="listitem">
-Kalman-filter based flight-tracking. The model based sensor
+firmware.</p>
+</li>
+<li>
+<p>Kalman-filter based flight-tracking. The model based sensor
 fusion approach of a Kalman filter means that AltOS now
 computes apogee much more accurately than before, generally
 within a fraction of a second. In addition, this approach
 allows the baro-only TeleMini device to correctly identify
 Mach transitions, avoiding the error-prone selection of a
-Mach delay.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application_6"></a>F.28.2. AltosUI Application</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add main/apogee voltage graphs to the data
+Mach delay.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application_6">F.29.2. AltosUI Application</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add main/apogee voltage graphs to the data
 plot. This provides a visual indication if the
-igniters fail before being fired.
-</li><li class="listitem">
-Scan for altimeter devices by watching the defined
+igniters fail before being fired.</p>
+</li>
+<li>
+<p>Scan for altimeter devices by watching the defined
 telemetry frequencies. This avoids the problem of
 remembering what frequency a device was configured
 to use, which is especially important with TeleMini
-which does not include a USB connection.
-</li><li class="listitem">
-Monitor altimeter state in "Idle" mode. This
+which does not include a USB connection.</p>
+</li>
+<li>
+<p>Monitor altimeter state in "Idle" mode. This
 provides much of the information presented in the
 "Pad" dialog from the Monitor Flight command,
 monitoring the igniters, battery and GPS status
 withing requiring the flight computer to be armed
-and ready for flight.
-</li><li class="listitem">
-Pre-load map images from home. For those launch
-sites which don’t provide free Wi-Fi, this allows
+and ready for flight.</p>
+</li>
+<li>
+<p>Pre-load map images from home. For those launch
+sites which don&#8217;t provide free Wi-Fi, this allows
 you to download the necessary satellite images
 given the location of the launch site. A list of
 known launch sites is maintained at altusmetrum.org
 which AltosUI downloads to populate a menu; if
-youve got a launch site not on that list, please
+you&#8217;ve got a launch site not on that list, please
 send the name of it, latitude and longitude along
 with a link to the web site of the controlling club
-to the altusmetrum mailing list.
-</li><li class="listitem">
-Flight statistics are now displayed in the Graph
+to the altusmetrum mailing list.</p>
+</li>
+<li>
+<p>Flight statistics are now displayed in the Graph
 data window. These include max height/speed/accel,
 average descent rates and a few other bits of
 information. The Graph Data window can now be
-reached from the <span class="emphasis"><em>Landed</em></span> tab in the Monitor Flight
+reached from the 'Landed' tab in the Monitor Flight
 window so you can immediately see the results of a
-flight.
-</li></ul></div><p>AltosUI Changes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Wait for altimeter when using packet mode. Instead
+flight.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Changes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Wait for altimeter when using packet mode. Instead
 of quicly timing out when trying to initialize a
 packet mode configuration connection, AltosUI now
 waits indefinitely for the remote device to appear,
 providing a cancel button should the user get
 bored. This is necessary as the TeleMini can only be
-placed in "Idle" mode if AltosUI is polling it.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_0_9_2"></a>F.29. Release Notes for Version 0.9.2</h2></div></div></div><p>Version 0.9.2 is an AltosUI bug-fix release, with no firmware
-changes.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_4"></a>F.29.1. AltosUI</h3></div></div></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix plotting problems due to missing file in the Mac
-OS install image.
-</li><li class="listitem">
-Always read whole eeprom blocks, mark empty records
-invalid, display parsing errors to user.
-</li><li class="listitem">
-Add software version to Configure AltosUI dialog
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_0_9"></a>F.30. Release Notes for Version 0.9</h2></div></div></div><p>Version 0.9 adds a few new firmware features and accompanying
-AltosUI changes, along with new hardware support.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_27"></a>F.30.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleMetrum v1.1 hardware. Sources for the flash
+placed in "Idle" mode if AltosUI is polling it.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_0_9_2">F.30. Release Notes for Version 0.9.2</h3>
+<div class="paragraph">
+<p>Version 0.9.2 is an AltosUI bug-fix release, with no firmware
+changes.</p>
+</div>
+<div class="sect3">
+<h4 id="_altosui_4">F.30.1. AltosUI</h4>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix plotting problems due to missing file in the Mac
+OS install image.</p>
+</li>
+<li>
+<p>Always read whole eeprom blocks, mark empty records
+invalid, display parsing errors to user.</p>
+</li>
+<li>
+<p>Add software version to Configure AltosUI dialog</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_0_9">F.31. Release Notes for Version 0.9</h3>
+<div class="paragraph">
+<p>Version 0.9 adds a few new firmware features and accompanying
+AltosUI changes, along with new hardware support.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_28">F.31.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleMetrum v1.1 hardware. Sources for the flash
 memory part used in v1.0 dried up, so v1.1 uses a different
 part which required a new driver and support for explicit
-flight log erasing.
-</li><li class="listitem">
-Multiple flight log support. This stores more than one
+flight log erasing.</p>
+</li>
+<li>
+<p>Multiple flight log support. This stores more than one
 flight log in the on-board flash memory. It also requires
-the user to explicitly erase flights so that you wont lose
+the user to explicitly erase flights so that you won&#8217;t lose
 flight logs just because you fly the same board twice in one
-day.
-</li><li class="listitem">
-Telemetry support for devices with serial number &gt;= 256.
+day.</p>
+</li>
+<li>
+<p>Telemetry support for devices with serial number &gt;= 256.
 Previous versions used a telemetry packet format that
 provided only 8 bits for the device serial number. This
 change requires that both ends of the telemetry link be
-running the 0.9 firmware or they will not communicate.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application_7"></a>F.30.2. AltosUI Application</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for telemetry format changes.
-</li><li class="listitem">
-Support for multiple flight logs.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_0_8"></a>F.31. Release Notes for Version 0.8</h2></div></div></div><p>Version 0.8 offers a major upgrade in the AltosUI
-interface.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application_8"></a>F.31.1. AltosUI Application:</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Post-flight graphing tool. This lets you explore the
+running the 0.9 firmware or they will not communicate.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application_7">F.31.2. AltosUI Application</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for telemetry format changes.</p>
+</li>
+<li>
+<p>Support for multiple flight logs.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_0_8">F.32. Release Notes for Version 0.8</h3>
+<div class="paragraph">
+<p>Version 0.8 offers a major upgrade in the AltosUI
+interface.</p>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application_8">F.32.1. AltosUI Application:</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Post-flight graphing tool. This lets you explore the
 behaviour of your rocket after flight with a scroll-able and
 zoom-able chart showing the altitude, speed and acceleration
 of the airframe along with events recorded by the flight
 computer. You can export graphs to PNG files, or print them
-directly.
-</li><li class="listitem">
-Real-time moving map which overlays the in-progress flight
+directly.</p>
+</li>
+<li>
+<p>Real-time moving map which overlays the in-progress flight
 on satellite imagery fetched from Google Maps. This lets you
 see in pictures where your rocket has landed, allowing you
-to plan recovery activities more accurately.
-</li><li class="listitem">
-Wireless recovery system testing. Prep your rocket for
+to plan recovery activities more accurately.</p>
+</li>
+<li>
+<p>Wireless recovery system testing. Prep your rocket for
 flight and test fire the deployment charges to make sure
 things work as expected. All without threading wires through
-holes in your airframe.
-</li><li class="listitem">
-Optimized flight status displays. Each flight state now has
-it’s own custom <span class="emphasis"><em>tab</em></span> in the flight monitoring window so you
+holes in your airframe.</p>
+</li>
+<li>
+<p>Optimized flight status displays. Each flight state now has
+it&#8217;s own custom 'tab' in the flight monitoring window so you
 can focus on the most important details. Pre-flight, the
 system shows a set of red/green status indicators for
 battery voltage, apogee/main igniter continutity and GPS
-reception. Wait until theyre all green and your rocket is
+reception. Wait until they&#8217;re all green and your rocket is
 ready for flight. There are also tabs for ascent, descent
 and landing along with the original tabular view of the
-data.
-</li><li class="listitem">
-Monitor multiple flights simultaneously. If you have more
+data.</p>
+</li>
+<li>
+<p>Monitor multiple flights simultaneously. If you have more
 than one TeleDongle, you can monitor a flight with each one
-on the same computer.
-</li><li class="listitem">
-Automatic flight monitoring at startup. Plug TeleDongle into
+on the same computer.</p>
+</li>
+<li>
+<p>Automatic flight monitoring at startup. Plug TeleDongle into
 the machine before starting AltosUI and it will
-automatically connect to it and prepare to monitor a flight.
-</li><li class="listitem">
-Exports Google Earth flight tracks. Using the Keyhole Markup
+automatically connect to it and prepare to monitor a flight.</p>
+</li>
+<li>
+<p>Exports Google Earth flight tracks. Using the Keyhole Markup
 Language (.kml) file format, this provides a 3D view of your
-rocket flight through the Google Earth program.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_0_7_1"></a>F.32. Release Notes for Version 0.7.1</h2></div></div></div><p>Version 0.7.1 is the first release containing our new
-cross-platform Java-based user interface.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application_9"></a>F.32.1. AltosUI Application</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Receive and log telemetry from a connected TeleDongle
+rocket flight through the Google Earth program.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_0_7_1">F.33. Release Notes for Version 0.7.1</h3>
+<div class="paragraph">
+<p>Version 0.7.1 is the first release containing our new
+cross-platform Java-based user interface.</p>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application_9">F.33.1. AltosUI Application</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Receive and log telemetry from a connected TeleDongle
 device. All data received is saved to log files named with
 the current date and the connected rocket serial and flight
 numbers. There is no mode in which telemetry data will not
-be saved.
-</li><li class="listitem">
-Download logged data from TeleMetrum devices, either through
+be saved.</p>
+</li>
+<li>
+<p>Download logged data from TeleMetrum devices, either through
 a direct USB connection or over the air through a TeleDongle
-device.
-</li><li class="listitem">
-Configure a TeleMetrum device, setting the radio channel,
+device.</p>
+</li>
+<li>
+<p>Configure a TeleMetrum device, setting the radio channel,
 callsign, apogee delay and main deploy height. This can be
 done through either a USB connection or over a radio link
-via a TeleDongle device.
-</li><li class="listitem">
-Replay a flight in real-time. This takes a saved telemetry
+via a TeleDongle device.</p>
+</li>
+<li>
+<p>Replay a flight in real-time. This takes a saved telemetry
 log or eeprom download and replays it through the user
-interface so you can relive your favorite rocket flights.
-</li><li class="listitem">
-Reprogram Altus Metrum devices. Using an Altus Metrum device
+interface so you can relive your favorite rocket flights.</p>
+</li>
+<li>
+<p>Reprogram Altus Metrum devices. Using an Altus Metrum device
 connected via USB, another Altus Metrum device can be
 reprogrammed using the supplied programming cable between
-the two devices.
-</li><li class="listitem">
-Export Flight data to a comma-separated-values file. This
+the two devices.</p>
+</li>
+<li>
+<p>Export Flight data to a comma-separated-values file. This
 takes either telemetry or on-board flight data and generates
 data suitable for use in external applications. All data is
 exported using standard units so that no device-specific
-knowledge is needed to handle the data.
-</li><li class="listitem">
-Speak to you during the flight. Instead of spending the
+knowledge is needed to handle the data.</p>
+</li>
+<li>
+<p>Speak to you during the flight. Instead of spending the
 flight hunched over your laptop looking at the screen, enjoy
 the view while the computer tells you what’s going on up
 there. During ascent, you hear the current flight state and
 altitude information. During descent, you get azimuth,
 elevation and range information to try and help you find
 your rocket in the air. Once on the ground, the direction
-and distance are reported.
-</li></ul></div></div></div></div></div></body></html>
\ No newline at end of file
+and distance are reported.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Version v1.9<br>
+Last updated 2019-01-03 00:31:55 -0700
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
index e6efc57c91100317b277990c1439d8810270e2e2..676a387d3f2e23ad629191bc813f0fcd5108bd07 100644 (file)
Binary files a/AltOS/doc/altusmetrum.pdf and b/AltOS/doc/altusmetrum.pdf differ
diff --git a/AltOS/doc/am-notoc.css b/AltOS/doc/am-notoc.css
new file mode 100644 (file)
index 0000000..829e8b7
--- /dev/null
@@ -0,0 +1,344 @@
+/*
+  CSS stylesheet for XHTML produced by DocBook XSL stylesheets.
+*/
+
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Regular.ttf');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Italic.ttf');
+    font-weight: normal;
+    font-style: italic;
+}
+
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-Semibold.ttf');
+    font-weight: bold;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'Open Sans';
+    src: url('fonts/OpenSans-SemiboldItalic.ttf');
+    font-weight: bold;
+    font-style: italic;
+}
+
+@font-face {
+    font-family: 'DejaVu Sans Mono';
+    src: url('fonts/DejaVuSansMono.ttf');
+    font-weight: normal;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'DejaVu Sans Mono';
+    src: url('fonts/DejaVuSansMono-Oblique.ttf');
+    font-weight: normal;
+    font-style: oblique;
+}
+
+@font-face {
+    font-family: 'DejaVu Sans Mono';
+    src: url('fonts/DejaVuSansMono-Bold.ttf');
+    font-weight: bold;
+    font-style: normal;
+}
+
+@font-face {
+    font-family: 'DejaVu Sans Mono';
+    src: url('fonts/DejaVuSansMono-BoldOblique.ttf');
+    font-weight: bold;
+    font-style: oblique;
+}
+
+body {
+    font-family: "Open Sans",sans-serif;
+    font-size: 12pt;
+    margin: 2em 5em 2em 5em;
+}
+
+code, pre {
+  font-family: "DejaVu Sans Mono", monospace;
+}
+
+span.strong {
+  font-weight: bold;
+}
+
+body blockquote {
+  margin-top: .75em;
+  line-height: 1.5;
+  margin-bottom: .75em;
+}
+
+a:link {
+    color: #78079a;
+}
+
+a:visited {
+    color: #78079a;
+}
+
+h1, h2, h3, h4, h5, h6
+{
+  color: #78079a;
+  font-family: "Open Sans",sans-serif;
+}
+
+td.icon {
+    width: 4em;
+    height: 3em;
+}
+
+td.icon img {
+    height: 100%;
+    width: 100%
+}
+
+div.toc {
+    display:none;
+}
+    
+div.details {
+    padding-top: 1em;
+    padding-left: 3em;
+}
+
+span.author {
+    font-weight: bold;
+    color: #78079a;
+}
+
+span.email {
+    font-size: 10pt;
+}
+
+span#revnumber {
+    font-size: 8pt;
+}
+
+span#revdate {
+    font-size: 8pt;
+}
+
+span#revremark {
+    font-size: 8pt;
+}
+
+div#footer {
+    border-top: 2px solid #808080;
+}
+
+body h1 {
+  margin: .0em 0 0 -4%;
+  line-height: 1.3;
+  border-bottom: 2px solid #808080;
+}
+
+body h2 {
+  margin: 0.5em 0 0 -4%;
+  line-height: 1.3;
+  border-bottom: 2px solid #808080;
+}
+
+body h3 {
+  margin: .8em 0 0 -3%;
+  line-height: 1.3;
+}
+
+body h4 {
+  margin: .8em 0 0 -3%;
+  line-height: 1.3;
+}
+
+body h5 {
+  margin: .8em 0 0 -2%;
+  line-height: 1.3;
+}
+
+body h6 {
+  margin: .8em 0 0 -1%;
+  line-height: 1.3;
+}
+
+body hr {
+  border: none; /* Broken on IE6 */
+}
+
+body td {
+  line-height: 1.2
+}
+
+body th {
+  line-height: 1.2;
+}
+
+ol {
+  line-height: 1.2;
+}
+
+ul, body dir, body menu {
+  line-height: 1.2;
+}
+
+body h1, body h2, body h3, body h4, body h5, body h6 {
+  margin-left: 0
+} 
+
+body pre {
+  margin: 0.5em 10% 0.5em 1em;
+  line-height: 1.0;
+}
+
+tt.literal, code.literal {
+}
+
+.programlisting, .screen {
+  border: 1px solid #808080;
+  background: #f4f4f4;
+  margin: 0.5em 10% 0.5em 0;
+  padding: 0.5em 1em;
+}
+
+div.sidebar {
+  background: #ffffee;
+  margin: 1.0em 10% 0.5em 0;
+  padding: 0.5em 1em;
+  border: 1px solid #808080;
+}
+div.sidebar * { padding: 0; }
+div.sidebar div { margin: 0; }
+div.sidebar p.title {
+  margin-top: 0.5em;
+  margin-bottom: 0.2em;
+}
+
+div.bibliomixed {
+  margin: 0.5em 5% 0.5em 1em;
+}
+
+div.glossary dt {
+  font-weight: bold;
+}
+div.glossary dd p {
+  margin-top: 0.2em;
+}
+
+dl {
+  margin: .8em 0;
+  line-height: 1.2;
+}
+
+dt {
+  margin-top: 0.5em;
+}
+
+dt span.term {
+  font-weight: bold;
+}
+
+div.variablelist dd p {
+  margin-top: 0;
+}
+
+div.itemizedlist li, div.orderedlist li {
+  margin-left: -0.8em;
+  margin-top: 0.5em;
+}
+
+ul, ol {
+    list-style-position: outside;
+}
+
+div.sidebar ul, div.sidebar ol {
+    margin-left: 2.8em;
+}
+
+div.itemizedlist p.title,
+div.orderedlist p.title,
+div.variablelist p.title
+{
+  margin-bottom: -0.8em;
+}
+
+div.revhistory {
+    border-style: none;
+}
+
+div.revhistory table, div.revhistory th, div.revhistory td {
+    border-collapse: collapse;
+    border: 1px solid #808080;
+    padding: 0.25em;
+}
+
+div.revhistory th {
+    color: black;
+}
+
+/* Keep TOC and index lines close together. */
+div.toc dl, div.toc dt
+{
+  line-height: normal;
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+div.admonitionblock {
+    margin-top: 2em;
+    margin-bottom: 2em;
+    margin-left: 2em;
+    margin-right: 2em;
+}
+
+div.admonitionblock div {
+    margin-left: 0em;
+    margin-right: 1em;
+}    
+
+div.admonitionblock div.title {
+    color:  #c70909;
+    font-style: bold;
+    font-size: 24pt;
+}
+
+div#content table.tableblock {
+    border-style: solid;
+    border-width: 1px;
+    border-collapse: collapse;
+}
+
+div#content table.tableblock td,th {
+    border-right-style: solid;
+    border-right-width: 1px;
+}
+
+div#content table.tableblock tbody p {
+    margin-top: 0.25em;
+    margin-bottom: 0.25em;
+    margin-left: 0.25em;
+    margin-right: 0.25em;
+}
+
+div#content table.tableblock tbody tr:nth-child(odd) {
+    background: #cccccc;
+}
+    
+div.imageblock{
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+div.imageblock img {
+    margin-bottom: 0.5em;
+}
+
+@media print {
+  div.navheader, div.navfooter { display: none; }
+}
index 393ef81b5f961c93c28e458a5a679aa67ecb5824..ccb50ffede7ed92126c5fda6362f3db641af2831 100644 (file)
@@ -61,6 +61,7 @@
 body {
     font-family: "Open Sans",sans-serif;
     font-size: 12pt;
+    margin: 0;
 }
 
 code, pre {
@@ -77,15 +78,6 @@ body blockquote {
   margin-bottom: .75em;
 }
 
-html body {
-  margin: 1em 5% 1em 5%;
-  line-height: 1.2;
-}
-
-body div {
-  margin: 0;
-}
-
 a:link {
     color: #78079a;
 }
@@ -100,33 +92,11 @@ h1, h2, h3, h4, h5, h6
   font-family: "Open Sans",sans-serif;
 }
 
-div.revhistory table {
-    width: 50%;
-    border-width: 1px;
-}
-
-div titlepage {
-    margin-top: 100px;
-    border-top: 2px;
-}
-
-div.warning h1, div.warning h2, div.warning h3, div.warning h4, div.warning h5, div.warning h6 {
-    color: #ff2020;
-}
-
-div.warning p, div.note p, div.error p {
-    margin-left: 5%;
-    margin-left: 5%;
-}
-
-h3.corpauthor img {
-    position: fixed;
-    left: 0px;
-    top: 0px;
-    width: 410px;
-    height: 90px;
-    border-right: 2px solid #808080;
-    border-bottom: 2px solid #808080;
+div#content, div#header, div#footer {
+    margin-left: 440px;
+    margin-right: 2em;
+    margin-top: 2em;
+    margin-bottom: 2em;
 }
 
 div.toc {
@@ -145,17 +115,26 @@ div.toc {
     overflow: auto;
 }
 
-div.toc p,
-div.list-of-figures p,
-div.list-of-tables p,
-div.list-of-examples p,
-div.toc a
-{
-    color: black;
+div#logo img {
+    position: fixed;
+    left: 0px;
+    top: 0px;
+    width: 410px;
+    height: 92px;
+    margin-top: 0px;
+    margin-bottom: 0px;
+    border-right: 2px solid #808080;
+    border-bottom: 2px solid #808080;
 }
 
-div.toc p {
-    color: black;
+td.icon {
+    width: 4em;
+    height: 3em;
+}
+
+td.icon img {
+    height: 100%;
+    width: 100%
 }
 
 div.toc a:link {
@@ -174,42 +153,34 @@ div.toc a:active {
     text-decoration: underline;
 }
 
-div.book {
-    margin-left: 25em;
+div.details {
+    padding-top: 1em;
+    padding-left: 3em;
 }
 
-div.list-of-figures {
-    display: none;
+span.author {
+    font-weight: bold;
+    color: #78079a;
 }
 
-div.list-of-tables {
-    display: none;
+span.email {
+    font-size: 10pt;
 }
 
-div.figure p {
-    text-align: center;
-}
-div.figure img {
-    display: block;
-    margin: auto;
+span#revnumber {
+    font-size: 8pt;
 }
 
-div.table p.title {
-    text-align: center;
+span#revdate {
+    font-size: 8pt;
 }
 
-div.table-contents table {
-    margin-left: auto;
-    margin-right: auto;
+span#revremark {
+    font-size: 8pt;
 }
 
-div.example p.title,
-div.sidebar p.title
-{
-  font-weight: normal;
-  color: #78079a;
-  font-family: "Open Sans",sans-serif;
-  margin-bottom: 0.2em;
+div#footer {
+    border-top: 2px solid #808080;
 }
 
 body h1 {
@@ -232,7 +203,6 @@ body h3 {
 body h4 {
   margin: .8em 0 0 -3%;
   line-height: 1.3;
-  border-top: 2px solid #808080;
 }
 
 body h5 {
@@ -248,25 +218,6 @@ body h6 {
 body hr {
   border: none; /* Broken on IE6 */
 }
-div.footnotes hr {
-  border: 1px solid #808080;
-}
-
-div.navheader th, div.navheader td, div.navfooter td {
-    font-family: "Open Sans",sans-serif;
-    font-size: 12pt;
-    font-weight: normal;
-    color: #78079a;
-}
-div.navheader img, div.navfooter img {
-  border-style: none;
-}
-div.navheader a, div.navfooter a {
-  font-weight: normal;
-}
-div.navfooter hr {
-  border: 1px solid #808080;
-}
 
 body td {
   line-height: 1.2
@@ -284,11 +235,6 @@ ul, body dir, body menu {
   line-height: 1.2;
 }
 
-html {
-  margin: 0; 
-  padding: 0;
-}
-
 body h1, body h2, body h3, body h4, body h5, body h6 {
   margin-left: 0
 } 
@@ -384,93 +330,62 @@ div.revhistory th {
 }
 
 /* Keep TOC and index lines close together. */
-div.toc dl, div.toc dt,
-div.list-of-figures dl, div.list-of-figures dt,
-div.list-of-tables dl, div.list-of-tables dt,
-div.indexdiv dl, div.indexdiv dt
+div.toc dl, div.toc dt
 {
   line-height: normal;
   margin-top: 0;
   margin-bottom: 0;
 }
 
-/*
-  Table styling does not work because of overriding attributes in
-  generated HTML.
-*/
-div.table-contents p,
-div.informaltable p
-{
-    margin: 0px;
+div.admonitionblock {
+    margin-top: 2em;
+    margin-bottom: 2em;
+    margin-left: 2em;
+    margin-right: 2em;
 }
 
-div.table thead, div.table tfoot,
-div.informaltable thead, div.informaltable tfoot
-{
-    font-weight: bold;
+div.admonitionblock div {
+    margin-left: 0em;
+    margin-right: 1em;
+}    
+
+div.admonitionblock div.title {
+    color:  #c70909;
+    font-style: bold;
+    font-size: 24pt;
+}
+
+div#content table.tableblock {
+    border-style: solid;
+    border-width: 1px;
+    border-collapse: collapse;
 }
 
-div.mediaobject img {
-    margin-bottom: 0.8em;
+div#content table.tableblock td,th {
+    border-right-style: solid;
+    border-right-width: 1px;
 }
-div.figure p.title,
-div.table p.title
-{
-  margin-top: 1em;
-  margin-bottom: 0.4em;
+
+div#content table.tableblock tbody p {
+    margin-top: 0.25em;
+    margin-bottom: 0.25em;
+    margin-left: 0.25em;
+    margin-right: 0.25em;
 }
 
-div.calloutlist p
-{
-  margin-top: 0em;
-  margin-bottom: 0.4em;
+div#content table.tableblock tbody tr:nth-child(odd) {
+    background: #cccccc;
+}
+    
+div.imageblock{
+    margin-top: 1em;
+    margin-bottom: 1em;
 }
 
-a img {
-  border-style: none;
+div.imageblock img {
+    margin-bottom: 0.5em;
 }
 
 @media print {
   div.navheader, div.navfooter { display: none; }
 }
-
-span.aqua { color: aqua; }
-span.black { color: black; }
-span.blue { color: blue; }
-span.fuchsia { color: fuchsia; }
-span.gray { color: gray; }
-span.green { color: green; }
-span.lime { color: lime; }
-span.maroon { color: maroon; }
-span.navy { color: navy; }
-span.olive { color: olive; }
-span.purple { color: purple; }
-span.red { color: red; }
-span.silver { color: silver; }
-span.teal { color: teal; }
-span.white { color: white; }
-span.yellow { color: yellow; }
-
-span.aqua-background { background: aqua; }
-span.black-background { background: black; }
-span.blue-background { background: blue; }
-span.fuchsia-background { background: fuchsia; }
-span.gray-background { background: gray; }
-span.green-background { background: green; }
-span.lime-background { background: lime; }
-span.maroon-background { background: maroon; }
-span.navy-background { background: navy; }
-span.olive-background { background: olive; }
-span.purple-background { background: purple; }
-span.red-background { background: red; }
-span.silver-background { background: silver; }
-span.teal-background { background: teal; }
-span.white-background { background: white; }
-span.yellow-background { background: yellow; }
-
-span.big { font-size: 2em; }
-span.small { font-size: 0.6em; }
-
-span.underline { text-decoration: underline; }
-span.overline { text-decoration: overline; }
-span.line-through { text-decoration: line-through; }
index b9a684b611ab67ce7223b1448ce76b53354c5217..44c2fe4b8ee70a2d37c2a55c94c7ba3be9b664f7 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AltOS Companion Port</title><link rel="stylesheet" type="text/css" href="am.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /></head><body><div xml:lang="en" class="article" lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="idm1"></a>AltOS Companion Port</h2></div><div><h3 class="subtitle"><em>Protocol Definitions</em></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3><code class="email">&lt;<a class="email" href="mailto:keithp@keithp.com">keithp@keithp.com</a>&gt;</code></div></div><div><p class="copyright">Copyright © 2012 Keith Packard</p></div><div><div class="legalnotice"><a id="idm13"></a><p>
-    This document is released under the terms of the
-    <a class="ulink" href="http://creativecommons.org/licenses/by-sa/3.0/" target="_top">
-      Creative Commons ShareAlike 3.0
-    </a>
-    license.
-  </p></div></div><div><a href="companion-revhistory.html">Revision History</a></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="#_companion_port">1. Companion Port</a></span></dt><dt><span class="section"><a href="#_companion_spi_protocol">2. Companion SPI Protocol</a></span></dt><dt><span class="section"><a href="#_spi_message_formats">3. SPI Message Formats</a></span></dt><dd><dl><dt><span class="section"><a href="#_setup_reply_message">3.1. SETUP reply message</a></span></dt><dt><span class="section"><a href="#_fetch_reply_message">3.2. FETCH reply message</a></span></dt></dl></dd><dt><span class="section"><a href="#_history_and_motivation">4. History and Motivation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_companion_port"></a>1. Companion Port</h2></div></div></div><p>Many Altus Metrum products come with an eight pin Micro MaTch
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<meta name="author" content="Keith Packard, Bdale Garbee">
+<meta name="copyright" content="Bdale Garbee and Keith Packard 2018">
+<title>AltOS Companion Port</title>
+<link rel="stylesheet" href="./am.css">
+</head>
+<body class="article">
+<div id="header">
+<h1>AltOS Companion Port</h1>
+<div class="details">
+<span id="author" class="author">Keith Packard</span><br>
+<span id="email" class="email"><a href="mailto:keithp@keithp.com">keithp@keithp.com</a></span><br>
+<span id="author2" class="author">Bdale Garbee</span><br>
+<span id="email2" class="email"><a href="mailto:bdale@gag.com">bdale@gag.com</a></span><br>
+</div>
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_license">License</a></li>
+<li><a href="#_companion_port">Companion Port</a></li>
+<li><a href="#_companion_spi_protocol">Companion SPI Protocol</a></li>
+<li><a href="#_spi_message_formats">SPI Message Formats</a>
+<ul class="sectlevel2">
+<li><a href="#_setup_reply_message">SETUP reply message</a></li>
+<li><a href="#_fetch_reply_message">FETCH reply message</a></li>
+</ul>
+</li>
+<li><a href="#_history_and_motivation">History and Motivation</a></li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div id="logo" class="imageblock">
+<div class="content">
+<a class="image" href="https://altusmetrum.org"><img src="altusmetrum-oneline.svg" alt="Altus Metrum"></a>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_license">License</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright © 2018 Bdale Garbee and Keith Packard</p>
+</div>
+<div class="paragraph">
+<p>This document is released under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons ShareAlike 3.0 License</a></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_companion_port">Companion Port</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Many Altus Metrum products come with an eight pin Micro MaTch
 connector, called the Companion Port. This is often used to
 program devices using a programming cable. However, it can
 also be used to connect TeleMetrum to external companion
-boards (hence the name).</p><p>The Companion Port provides two different functions:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Power. Both battery-level and 3.3V regulated power are
+boards (hence the name).</p>
+</div>
+<div class="paragraph">
+<p>The Companion Port provides two different functions:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Power. Both battery-level and 3.3V regulated power are
 available. Note that the amount of regulated power is not
 huge; TeleMetrum contains a 150mA regulator and uses, at
 peak, about 120mA or so. For applications needing more than
 a few dozen mA, placing a separate regulator on them and
-using the battery for power is probably a good idea.
-</li><li class="listitem">
-SPI. The flight computer operates as a SPI master, using
+using the battery for power is probably a good idea.</p>
+</li>
+<li>
+<p>SPI. The flight computer operates as a SPI master, using
 a protocol defined in this document. Companion boards
 provide a matching SPI slave implementation which supplies
-telemetry information for the radio downlink during flight
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_companion_spi_protocol"></a>2. Companion SPI Protocol</h2></div></div></div><p>The flight computer implements a SPI master communications
+telemetry information for the radio downlink during flight</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_companion_spi_protocol">Companion SPI Protocol</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The flight computer implements a SPI master communications
 channel over the companion port, and uses this to get
 information about a connected companion board and then to get
-telemetry data for transmission during flight.</p><p>At startup time, the flight computer sends a setup request
+telemetry data for transmission during flight.</p>
+</div>
+<div class="paragraph">
+<p>At startup time, the flight computer sends a setup request
 packet, and the companion board returns a board identifier,
 the desired telemetry update period and the number of data
-channels provided. The flight computer doesnt interpret the
+channels provided. The flight computer doesn&#8217;t interpret the
 telemetry data at all, simply packing it up and sending it
 over the link.  Telemetry packets are 32 bytes long, and
 companion packets use 8 bytes as a header leaving room for a
-maximum of 12 16-bit data values.</p><p>Because of the limits of the AVR processors used in the first
-two companion boards, the SPI data rate is set to 187.5kbaud.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_spi_message_formats"></a>3. SPI Message Formats</h2></div></div></div><p>This section first defines the command message format sent from
+maximum of 12 16-bit data values.</p>
+</div>
+<div class="paragraph">
+<p>Because of the limits of the AVR processors used in the first
+two companion boards, the SPI data rate is set to 187.5kbaud.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_spi_message_formats">SPI Message Formats</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This section first defines the command message format sent from
 the flight computer to the companion board, and then the various
-reply message formats for each type of command message.</p><div class="table"><a id="idm38"></a><p class="title"><strong>Table 1. Companion Command Message</strong></p><div class="table-contents"><table class="table" summary="Companion Command Message" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>command</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Command identifier</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>flight_state</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Current flight computer state</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>tick</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Flight computer clock (100 ticks/second)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>serial</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Flight computer serial number</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>flight</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Flight number</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p></p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p></p></td><td style="" align="left" valign="top"><p></p></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idm109"></a><p class="title"><strong>Table 2. Companion Command Identifiers</strong></p><div class="table-contents"><table class="table" summary="Companion Command Identifiers" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Value</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>SETUP</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Supply the flight computer with companion
-information</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>FETCH</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Return telemetry information</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>3</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>NOTIFY</p></td><td style="" align="left" valign="top"><p>Tell companion board when flight state changes</p></td></tr></tbody></table></div></div><br class="table-break" /><p>The flight computer will send a SETUP message shortly after
+reply message formats for each type of command message.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 1. Companion Command Message</caption>
+<colgroup>
+<col style="width: 6.25%;">
+<col style="width: 18.75%;">
+<col style="width: 18.75%;">
+<col style="width: 56.25%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">command</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Command identifier</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">flight_state</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Current flight computer state</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tick</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flight computer clock (100 ticks/second)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">serial</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flight computer serial number</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">flight</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flight number</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+</tbody>
+</table>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 2. Companion Command Identifiers</caption>
+<colgroup>
+<col style="width: 7.6923%;">
+<col style="width: 23.0769%;">
+<col style="width: 69.2308%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Value</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">SETUP</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Supply the flight computer with companion
+information</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">FETCH</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Return telemetry information</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">NOTIFY</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Tell companion board when flight state changes</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The flight computer will send a SETUP message shortly after
 power-up and will then send FETCH messages no more often than
 the rate specified in the SETUP reply. NOTIFY messages will be
-sent whenever the flight state changes.</p><p><span class="emphasis"><em>flight_state</em></span> records the current state of the flight,
+sent whenever the flight state changes.</p>
+</div>
+<div class="paragraph">
+<p>'flight_state' records the current state of the flight,
 whether on the pad, under power, coasting to apogee or
-descending on the drogue or main chute.</p><p><span class="emphasis"><em>tick</em></span> provides the current flight computer clock, which
+descending on the drogue or main chute.</p>
+</div>
+<div class="paragraph">
+<p>'tick' provides the current flight computer clock, which
 be used to synchronize data recorded on the flight computer
-with that recorded on the companion board in post-flight analysis.</p><p><span class="emphasis"><em>serial</em></span> is the product serial number of the flight computer,
-<span class="emphasis"><em>flight</em></span> is the flight sequence number. Together, these two
+with that recorded on the companion board in post-flight analysis.</p>
+</div>
+<div class="paragraph">
+<p>'serial' is the product serial number of the flight computer,
+'flight' is the flight sequence number. Together, these two
 uniquely identify the flight and can be recorded with any
 companion board data logging to associate the companion data
-with the proper flight.</p><p>NOTIFY commands require no reply at all, they are used solely
+with the proper flight.</p>
+</div>
+<div class="paragraph">
+<p>NOTIFY commands require no reply at all, they are used solely
 to inform the companion board when the state of the flight, as
 computed by the flight computer, changes. Companion boards can
 use this to change data collection parameters, disabling data
 logging until the flight starts and terminating it when the
-flight ends.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_setup_reply_message"></a>3.1. SETUP reply message</h3></div></div></div><div class="table"><a id="idm155"></a><p class="title"><strong>Table 3. SETUP reply contents</strong></p><div class="table-contents"><table class="table" summary="SETUP reply contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>board_id</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Board identifier</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>board_id_inverse</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>~board_id—used to tell if a board is present</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>update_period</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Minimum time (in 100Hz ticks) between FETCH commands</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>channels</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Number of data channels to retrieve in FETCH command</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p></p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p></p></td><td style="" align="left" valign="top"><p></p></td></tr></tbody></table></div></div><br class="table-break" /><p>The SETUP reply contains enough information to uniquely
+flight ends.</p>
+</div>
+<div class="sect2">
+<h3 id="_setup_reply_message">SETUP reply message</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 3. SETUP reply contents</caption>
+<colgroup>
+<col style="width: 6.25%;">
+<col style="width: 18.75%;">
+<col style="width: 18.75%;">
+<col style="width: 56.25%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">board_id</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Board identifier</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">board_id_inverse</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">~board_id—used to tell if a board is present</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">update_period</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Minimum time (in 100Hz ticks) between FETCH commands</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">channels</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Number of data channels to retrieve in FETCH command</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The SETUP reply contains enough information to uniquely
 identify the companion board to the end user as well as for
 the flight computer to know how many data values to expect in
-reply to a FETCH command, and how often to fetch that data.</p><p>To detect the presence of a companion board, the flight
+reply to a FETCH command, and how often to fetch that data.</p>
+</div>
+<div class="paragraph">
+<p>To detect the presence of a companion board, the flight
 computer checks to make sure that board_id_inverse is the
 bit-wise inverse of board_id. Current companion boards use
 USB product ID as the board_id, but the flight computer does
-not interpret this data and so it can be any value.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_fetch_reply_message"></a>3.2. FETCH reply message</h3></div></div></div><div class="table"><a id="idm221"></a><p class="title"><strong>Table 4. FETCH reply contents</strong></p><div class="table-contents"><table class="table" summary="FETCH reply contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>data0</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0th data item</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>data1</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1st data item</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>…</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p></p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p></p></td><td style="" align="left" valign="top"><p></p></td></tr></tbody></table></div></div><br class="table-break" /><p>The FETCH reply contains arbitrary data to be reported
+not interpret this data and so it can be any value.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_fetch_reply_message">FETCH reply message</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 4. FETCH reply contents</caption>
+<colgroup>
+<col style="width: 6.25%;">
+<col style="width: 18.75%;">
+<col style="width: 18.75%;">
+<col style="width: 56.25%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">data0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0th data item</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">data1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1st data item</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">&#8230;&#8203;</p></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The FETCH reply contains arbitrary data to be reported
 over the flight computer telemetry link. The number of
-16-bit data items must match the <span class="emphasis"><em>channels</em></span> value
-provided in the SETUP reply message.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_history_and_motivation"></a>4. History and Motivation</h2></div></div></div><p>To allow cross-programming, the original TeleMetrum and
+16-bit data items must match the 'channels' value
+provided in the SETUP reply message.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_history_and_motivation">History and Motivation</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>To allow cross-programming, the original TeleMetrum and
 TeleDongle designs needed to include some kind of
 connector. With that in place, adding the ability to connect
 external cards to TeleMetrum was fairly simple. We set the
 software piece of this puzzle aside until we had a companion
-board to use.</p><p>The first companion board was TeleScience. Designed to collect
+board to use.</p>
+</div>
+<div class="paragraph">
+<p>The first companion board was TeleScience. Designed to collect
 temperature data from the nose and fin of the airframe, the main
 requirement for the companion port was that it be able to report
 telemetry data during flight as a back-up in case the
-TeleScience on-board data was lost.</p><p>The second companion board, TelePyro, provides 8 additional
+TeleScience on-board data was lost.</p>
+</div>
+<div class="paragraph">
+<p>The second companion board, TelePyro, provides 8 additional
 channels for deployment, staging or other activities. To avoid
 re-programming the TeleMetrum to use TelePyro, we decided to
 provide enough information over the companion link for it to
-independently control those channels.</p><p>Providing a standard, constant interface between the flight
+independently control those channels.</p>
+</div>
+<div class="paragraph">
+<p>Providing a standard, constant interface between the flight
 computer and companion boards allows for the base flight
-computer firmware to include support for companion boards.</p></div></div></body></html>
\ No newline at end of file
+computer firmware to include support for companion boards.</p>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2019-01-03 00:31:56 -0700
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
index 6f80f7340ae8692a7b2e6e4abaf6263a8e5c529f..c25c97197a603ba0a1396e86292cbb7566ae35e8 100644 (file)
Binary files a/AltOS/doc/companion.pdf and b/AltOS/doc/companion.pdf differ
index e93602ad935a25ab3fa26e8e1c864889c50fb4a1..00786e50c2246c8c05f0054b1f3596e3d3395f51 100644 (file)
Binary files a/AltOS/doc/easymega-outline.pdf and b/AltOS/doc/easymega-outline.pdf differ
index f08de2b2688aa4ba44706b8c7d96a7bdde7b5769..6657b640b2a4369f560a61a2e343297da0ebd644 100644 (file)
Binary files a/AltOS/doc/easymini-outline.pdf and b/AltOS/doc/easymini-outline.pdf differ
index a3db6f40eaa70d0aba8969ee0250661a65890023..2d5b4fd825c1329b9ed335a014a79c82b1595014 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>EasyMini Owner’s Manual</title><link rel="stylesheet" type="text/css" href="am.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /></head><body><div xml:lang="en" class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="idm1"></a>EasyMini Owner’s Manual</h1></div><div><h2 class="subtitle">A Dual-Deploy Rocketry Flight Computer</h2></div><div><h3 class="corpauthor">
-  <span class="inlinemediaobject"><img src="altusmetrum-oneline.svg" width="270" /></span>
-</h3></div><div><div class="author"><h3 class="author"><span class="firstname">Bdale</span> <span class="surname">Garbee</span></h3><code class="email">&lt;<a class="email" href="mailto:bdale@gag.com">bdale@gag.com</a>&gt;</code></div></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3><code class="email">&lt;<a class="email" href="mailto:keithp@keithp.com">keithp@keithp.com</a>&gt;</code></div></div><div><p class="copyright">Copyright © 2016 Bdale Garbee and Keith Packard</p></div><div><div class="legalnotice"><a id="idm23"></a><p>
-    This document is released under the terms of the
-    <a class="ulink" href="http://creativecommons.org/licenses/by-sa/3.0/" target="_top">
-      Creative Commons ShareAlike 3.0
-    </a>
-    license.
-  </p></div></div><div><a href="easymini-revhistory.html">Revision History</a></div></div><hr /></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a id="_acknowledgments"></a>Acknowledgments</h1></div></div></div><p>Thanks to Bob Finch, W9YA, NAR 12965, TRA 12350 for writing “The
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<meta name="author" content="Keith Packard, Bdale Garbee">
+<meta name="copyright" content="Bdale Garbee and Keith Packard 2018">
+<title>EasyMini Owner&#8217;s Manual</title>
+<link rel="stylesheet" href="./am.css">
+</head>
+<body class="article">
+<div id="header">
+<h1>EasyMini Owner&#8217;s Manual</h1>
+<div class="details">
+<span id="author" class="author">Keith Packard</span><br>
+<span id="email" class="email"><a href="mailto:keithp@keithp.com">keithp@keithp.com</a></span><br>
+<span id="author2" class="author">Bdale Garbee</span><br>
+<span id="email2" class="email"><a href="mailto:bdale@gag.com">bdale@gag.com</a></span><br>
+<span id="revnumber">version v1.8.7,</span>
+<span id="revdate">8 Oct 2018</span>
+</div>
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_license">License</a></li>
+<li><a href="#_acknowledgments">Acknowledgments</a></li>
+<li><a href="#_introduction_and_overview">1. Introduction and Overview</a></li>
+<li><a href="#_getting_started">2. Getting Started</a>
+<ul class="sectlevel2">
+<li><a href="#_batteries">2.1. Batteries</a></li>
+<li><a href="#_linuxmacwindows_ground_station_software">2.2. Linux/Mac/Windows Ground Station Software</a></li>
+</ul>
+</li>
+<li><a href="#_using_altus_metrum_hardware">3. Using Altus Metrum Hardware</a>
+<ul class="sectlevel2">
+<li><a href="#_wiring_and_electrical_interference">3.1. Wiring and Electrical Interference</a></li>
+<li><a href="#_hooking_up_lithium_polymer_batteries">3.2. Hooking Up Lithium Polymer Batteries</a></li>
+<li><a href="#_hooking_up_pyro_charges">3.3. Hooking Up Pyro Charges</a></li>
+<li><a href="#_hooking_up_a_power_switch">3.4. Hooking Up a Power Switch</a></li>
+<li><a href="#_understanding_beeps">3.5. Understanding Beeps</a></li>
+<li><a href="#_turning_on_the_power">3.6. Turning On the Power</a></li>
+<li><a href="#_using_an_external_active_switch_circuit">3.7. Using an External Active Switch Circuit</a></li>
+<li><a href="#_using_a_separate_pyro_battery">3.8. Using a Separate Pyro Battery</a></li>
+<li><a href="#_using_a_different_kind_of_battery">3.9. Using a Different Kind of Battery</a></li>
+<li><a href="#_using_packet_link_mode">3.10. Using Packet Link Mode</a></li>
+</ul>
+</li>
+<li><a href="#_easymini">4. EasyMini</a>
+<ul class="sectlevel2">
+<li><a href="#_easymini_screw_terminals">4.1. EasyMini Screw Terminals</a></li>
+<li><a href="#_connecting_a_battery_to_easymini">4.2. Connecting A Battery To EasyMini</a></li>
+<li><a href="#_charging_lithium_batteries">4.3. Charging Lithium Batteries</a></li>
+<li><a href="#_using_a_separate_pyro_battery_with_easymini">4.4. Using a Separate Pyro Battery with EasyMini</a></li>
+<li><a href="#_using_an_active_switch_with_easymini">4.5. Using an Active Switch with EasyMini</a></li>
+</ul>
+</li>
+<li><a href="#_installation">5. Installation</a></li>
+<li><a href="#_using_altus_metrum_products">6. Using Altus Metrum Products</a>
+<ul class="sectlevel2">
+<li><a href="#_in_the_rocket">6.1. In the Rocket</a></li>
+<li><a href="#_on_the_ground">6.2. On the Ground</a></li>
+<li><a href="#_data_analysis">6.3. Data Analysis</a></li>
+<li><a href="#_future_plans">6.4. Future Plans</a></li>
+</ul>
+</li>
+<li><a href="#_altosui">7. AltosUI</a>
+<ul class="sectlevel2">
+<li><a href="#_save_flight_data">7.1. Save Flight Data</a></li>
+<li><a href="#_replay_flight">7.2. Replay Flight</a></li>
+<li><a href="#_graph_data">7.3. Graph Data</a></li>
+<li><a href="#_export_data">7.4. Export Data</a></li>
+<li><a href="#_configure_altimeter">7.5. Configure Altimeter</a></li>
+<li><a href="#_configure_altosui">7.6. Configure AltosUI</a></li>
+<li><a href="#_flash_image">7.7. Flash Image</a></li>
+<li><a href="#_fire_igniter">7.8. Fire Igniter</a></li>
+</ul>
+</li>
+<li><a href="#_system_operation">Appendix A: System Operation</a>
+<ul class="sectlevel2">
+<li><a href="#_firmware_modes">A.1. Firmware Modes</a></li>
+<li><a href="#_ground_testing">A.2. Ground Testing</a></li>
+<li><a href="#_configurable_parameters">A.3. Configurable Parameters</a></li>
+</ul>
+</li>
+<li><a href="#_handling_precautions">Appendix B: Handling Precautions</a></li>
+<li><a href="#_updating_device_firmware">Appendix C: Updating Device Firmware</a>
+<ul class="sectlevel2">
+<li><a href="#_updating_easymini_firmware">C.1. Updating EasyMini Firmware</a></li>
+</ul>
+</li>
+<li><a href="#_flight_data_recording">Appendix D: Flight Data Recording</a></li>
+<li><a href="#_altus_metrum_hardware_specifications">Appendix E: Altus Metrum Hardware Specifications</a></li>
+<li><a href="#_release_notes">Appendix F: Release Notes</a>
+<ul class="sectlevel2">
+<li><a href="#_release_notes_for_version_1_8_6">F.1. Release Notes for Version 1.8.6</a></li>
+<li><a href="#_release_notes_for_version_1_8_5">F.2. Release Notes for Version 1.8.5</a></li>
+<li><a href="#_release_notes_for_version_1_8_4">F.3. Release Notes for Version 1.8.4</a></li>
+<li><a href="#_release_notes_for_version_1_8_3">F.4. Release Notes for Version 1.8.3</a></li>
+<li><a href="#_release_notes_for_version_1_8_2">F.5. Release Notes for Version 1.8.2</a></li>
+<li><a href="#_release_notes_for_version_1_8_1">F.6. Release Notes for Version 1.8.1</a></li>
+<li><a href="#_release_notes_for_version_1_8">F.7. Release Notes for Version 1.8</a></li>
+<li><a href="#_release_notes_for_version_1_7">F.8. Release Notes for Version 1.7</a></li>
+<li><a href="#_release_notes_for_version_1_6_8">F.9. Release Notes for Version 1.6.8</a></li>
+<li><a href="#_release_notes_for_version_1_6_5">F.10. Release Notes for Version 1.6.5</a></li>
+<li><a href="#_release_notes_for_version_1_6_4">F.11. Release Notes for Version 1.6.4</a></li>
+<li><a href="#_release_notes_for_version_1_6_3">F.12. Release Notes for Version 1.6.3</a></li>
+<li><a href="#_release_notes_for_version_1_6_2">F.13. Release Notes for Version 1.6.2</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div id="logo" class="imageblock">
+<div class="content">
+<a class="image" href="https://altusmetrum.org"><img src="altusmetrum-oneline.svg" alt="Altus Metrum"></a>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_license">License</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright © 2018 Bdale Garbee and Keith Packard</p>
+</div>
+<div class="paragraph">
+<p>This document is released under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons ShareAlike 3.0 License</a></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_acknowledgments">Acknowledgments</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Thanks to Bob Finch, W9YA, NAR 12965, TRA 12350 for writing “The
 Mere-Mortals Quick Start/Usage Guide to the Altus Metrum Starter
 Kit” which formed the basis of the original Getting Started chapter
 in this manual.  Bob was one of our first customers for a production
 TeleMetrum, and his continued enthusiasm and contributions
-are immensely gratifying and highly appreciated!</p><p>And thanks to Anthony (AJ) Towns for major contributions including
+are immensely gratifying and highly appreciated!</p>
+</div>
+<div class="paragraph">
+<p>And thanks to Anthony (AJ) Towns for major contributions including
 the AltosUI graphing and site map code and associated documentation.
 Free software means that our customers and friends can become our
 collaborators, and we certainly appreciate this level of
-contribution!</p><p>Have fun using these products, and we hope to meet all of you
-out on the rocket flight line somewhere.</p><div class="blockquote"><blockquote class="blockquote"><div class="literallayout"><p>Bdale Garbee, KB0G<br />
-NAR #87103, TRA #12201</p></div></blockquote></div><div class="blockquote"><blockquote class="blockquote"><div class="literallayout"><p>Keith Packard, KD7SQG<br />
-NAR #88757, TRA #12200</p></div></blockquote></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="#_introduction_and_overview">1. Introduction and Overview</a></span></dt><dt><span class="chapter"><a href="#_getting_started">2. Getting Started</a></span></dt><dd><dl><dt><span class="section"><a href="#_batteries">2.1. Batteries</a></span></dt><dt><span class="section"><a href="#_linux_mac_windows_ground_station_software">2.2. Linux/Mac/Windows Ground Station Software</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_using_altus_metrum_hardware">3. Using Altus Metrum Hardware</a></span></dt><dd><dl><dt><span class="section"><a href="#_wiring_and_electrical_interference">3.1. Wiring and Electrical Interference</a></span></dt><dt><span class="section"><a href="#_hooking_up_lithium_polymer_batteries">3.2. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#_hooking_up_pyro_charges">3.3. Hooking Up Pyro Charges</a></span></dt><dt><span class="section"><a href="#_hooking_up_a_power_switch">3.4. Hooking Up a Power Switch</a></span></dt><dt><span class="section"><a href="#_understanding_beeps">3.5. Understanding Beeps</a></span></dt><dt><span class="section"><a href="#_turning_on_the_power">3.6. Turning On the Power</a></span></dt><dt><span class="section"><a href="#_using_an_external_active_switch_circuit">3.7. Using an External Active Switch Circuit</a></span></dt><dt><span class="section"><a href="#_using_a_separate_pyro_battery">3.8. Using a Separate Pyro Battery</a></span></dt><dt><span class="section"><a href="#_using_a_different_kind_of_battery">3.9. Using a Different Kind of Battery</a></span></dt><dt><span class="section"><a href="#_using_packet_link_mode">3.10. Using Packet Link Mode</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_easymini">4. EasyMini</a></span></dt><dd><dl><dt><span class="section"><a href="#_easymini_screw_terminals">4.1. EasyMini Screw Terminals</a></span></dt><dt><span class="section"><a href="#_connecting_a_battery_to_easymini">4.2. Connecting A Battery To EasyMini</a></span></dt><dt><span class="section"><a href="#_charging_lithium_batteries">4.3. Charging Lithium Batteries</a></span></dt><dt><span class="section"><a href="#_using_a_separate_pyro_battery_with_easymini">4.4. Using a Separate Pyro Battery with EasyMini</a></span></dt><dt><span class="section"><a href="#_using_an_active_switch_with_easymini">4.5. Using an Active Switch with EasyMini</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_installation">5. Installation</a></span></dt><dt><span class="chapter"><a href="#_using_altus_metrum_products">6. Using Altus Metrum Products</a></span></dt><dd><dl><dt><span class="section"><a href="#_in_the_rocket">6.1. In the Rocket</a></span></dt><dt><span class="section"><a href="#_on_the_ground">6.2. On the Ground</a></span></dt><dt><span class="section"><a href="#_data_analysis">6.3. Data Analysis</a></span></dt><dt><span class="section"><a href="#_future_plans">6.4. Future Plans</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_altosui">7. AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#_save_flight_data">7.1. Save Flight Data</a></span></dt><dt><span class="section"><a href="#_replay_flight">7.2. Replay Flight</a></span></dt><dt><span class="section"><a href="#_graph_data">7.3. Graph Data</a></span></dt><dd><dl><dt><span class="section"><a href="#_flight_graph">7.3.1. Flight Graph</a></span></dt><dt><span class="section"><a href="#_configure_graph">7.3.2. Configure Graph</a></span></dt><dt><span class="section"><a href="#_flight_statistics">7.3.3. Flight Statistics</a></span></dt></dl></dd><dt><span class="section"><a href="#_export_data">7.4. Export Data</a></span></dt><dd><dl><dt><span class="section"><a href="#_comma_separated_value_format">7.4.1. Comma Separated Value Format</a></span></dt></dl></dd><dt><span class="section"><a href="#_configure_altimeter">7.5. Configure Altimeter</a></span></dt><dd><dl><dt><span class="section"><a href="#_main_deploy_altitude">7.5.1. Main Deploy Altitude</a></span></dt><dt><span class="section"><a href="#_apogee_delay">7.5.2. Apogee Delay</a></span></dt><dt><span class="section"><a href="#_apogee_lockout">7.5.3. Apogee Lockout</a></span></dt><dt><span class="section"><a href="#_maximum_flight_log_size">7.5.4. Maximum Flight Log Size</a></span></dt><dt><span class="section"><a href="#_ignitor_firing_mode">7.5.5. Ignitor Firing Mode</a></span></dt><dt><span class="section"><a href="#_beeper_frequency">7.5.6. Beeper Frequency</a></span></dt></dl></dd><dt><span class="section"><a href="#_configure_altosui">7.6. Configure AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#_log_directory">7.6.1. Log Directory</a></span></dt><dt><span class="section"><a href="#_imperial_units">7.6.2. Imperial Units</a></span></dt><dt><span class="section"><a href="#_serial_debug">7.6.3. Serial Debug</a></span></dt><dt><span class="section"><a href="#_font_size">7.6.4. Font size</a></span></dt><dt><span class="section"><a href="#_look_amp_feel">7.6.5. Look &amp; feel</a></span></dt><dt><span class="section"><a href="#_menu_position">7.6.6. Menu position</a></span></dt></dl></dd><dt><span class="section"><a href="#_flash_image">7.7. Flash Image</a></span></dt><dt><span class="section"><a href="#_fire_igniter">7.8. Fire Igniter</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_system_operation">A. System Operation</a></span></dt><dd><dl><dt><span class="section"><a href="#_firmware_modes">A.1. Firmware Modes</a></span></dt><dt><span class="section"><a href="#_ground_testing">A.2. Ground Testing</a></span></dt><dt><span class="section"><a href="#_configurable_parameters">A.3. Configurable Parameters</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_handling_precautions">B. Handling Precautions</a></span></dt><dt><span class="appendix"><a href="#_updating_device_firmware">C. Updating Device Firmware</a></span></dt><dd><dl><dt><span class="section"><a href="#_updating_easymini_firmware">C.1. Updating EasyMini Firmware</a></span></dt><dd><dl><dt><span class="section"><a href="#_recovering_from_self_flashing_failure">C.1.1. Recovering From Self-Flashing Failure</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="#_flight_data_recording">D. Flight Data Recording</a></span></dt><dt><span class="appendix"><a href="#_altus_metrum_hardware_specifications">E. Altus Metrum Hardware Specifications</a></span></dt><dt><span class="appendix"><a href="#_release_notes">F. Release Notes</a></span></dt><dd><dl><dt><span class="section"><a href="#_release_notes_for_version_1_8_6">F.1. Release Notes for Version 1.8.6</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos">F.1.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps">F.1.2. AltosUI, TeleGPS</a></span></dt><dt><span class="section"><a href="#_micropeak">F.1.3. MicroPeak</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_5">F.2. Release Notes for Version 1.8.5</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_2">F.2.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_2">F.2.2. AltosUI, TeleGPS</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_4">F.3. Release Notes for Version 1.8.4</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_3">F.3.1. AltOS</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_3">F.4. Release Notes for Version 1.8.3</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_4">F.4.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications">F.4.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_2">F.5. Release Notes for Version 1.8.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_5">F.5.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_2">F.5.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_1">F.6. Release Notes for Version 1.8.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_6">F.6.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_3">F.6.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8">F.7. Release Notes for Version 1.8</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_7">F.7.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_4">F.7.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_7">F.8. Release Notes for Version 1.7</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_8">F.8.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_5">F.8.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_8">F.9. Release Notes for Version 1.6.8</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_9">F.9.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_and_altosdroid_applications">F.9.2. AltosUI, TeleGPS and AltosDroid Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_5">F.10. Release Notes for Version 1.6.5</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_10">F.10.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_and_altosdroid_applications_2">F.10.2. AltosUI, TeleGPS and AltosDroid Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_4">F.11. Release Notes for Version 1.6.4</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_11">F.11.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_and_altosdroid_applications_3">F.11.2. AltosUI, TeleGPS and AltosDroid Applications</a></span></dt><dt><span class="section"><a href="#_documentation">F.11.3. Documentation</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_3">F.12. Release Notes for Version 1.6.3</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_12">F.12.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_6">F.12.2. AltosUI and TeleGPS Applications</a></span></dt><dt><span class="section"><a href="#_altosdroid">F.12.3. AltosDroid</a></span></dt><dt><span class="section"><a href="#_documentation_2">F.12.4. Documentation</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_2">F.13. Release Notes for Version 1.6.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_13">F.13.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_7">F.13.2. AltosUI and TeleGPS Applications</a></span></dt><dt><span class="section"><a href="#_documentation_3">F.13.3. Documentation</a></span></dt></dl></dd></dl></dd></dl></div><div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>4.1. <a href="#idm284">EasyMini Board</a></dt><dt>7.1. <a href="#idm415">AltosUI Main Window</a></dt><dt>7.2. <a href="#idm442">Flight Data Graph</a></dt><dt>7.3. <a href="#idm453">Flight Graph Configuration</a></dt><dt>7.4. <a href="#idm472">Flight Statistics</a></dt><dt>7.5. <a href="#idm490">Altimeter Configuration</a></dt><dt>7.6. <a href="#idm562">Configure AltosUI Dialog</a></dt><dt>7.7. <a href="#idm596">Fire Igniter Window</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>3.1. <a href="#idm96">AltOS Modes</a></dt><dt>3.2. <a href="#idm204">Pad/Idle Indications</a></dt><dt>4.1. <a href="#idm296">EasyMini Screw Terminals</a></dt><dt>D.1. <a href="#idm696">Data Storage on Altus Metrum altimeters</a></dt><dt>E.1. <a href="#idm727">Altus Metrum Flight Computer Electronics</a></dt><dt>E.2. <a href="#idm784">Altus Metrum Flight Computer Mechanical Components</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_introduction_and_overview"></a>Chapter 1. Introduction and Overview</h1></div></div></div><p>Welcome to the Altus Metrum community!  Our circuits and software reflect
+contribution!</p>
+</div>
+<div class="paragraph">
+<p>Have fun using these products, and we hope to meet all of you
+out on the rocket flight line somewhere.</p>
+</div>
+<div class="verseblock">
+<pre class="content">Bdale Garbee, KB0G
+NAR #87103, TRA #12201</pre>
+</div>
+<div class="verseblock">
+<pre class="content">Keith Packard, KD7SQG
+NAR #88757, TRA #12200</pre>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_introduction_and_overview">1. Introduction and Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Welcome to the Altus Metrum community!  Our circuits and software reflect
 our passion for both hobby rocketry and Free Software.  We hope their
 capabilities and performance will delight you in every way, but by
 releasing all of our hardware and software designs under open licenses,
 we also hope to empower you to take as active a role in our collective
-future as you wish!</p><p>Our goal is to include in this document all of the information required
+future as you wish!</p>
+</div>
+<div class="paragraph">
+<p>Our goal is to include in this document all of the information required
 to successfully configure and use Altus Metrum products.  But
 documentation is a lot like software in that it can contain "bugs",
 and can probably always be improved!  If you have questions that
-arent answered in this manual, or just need a little help figuring
+aren&#8217;t answered in this manual, or just need a little help figuring
 things out, we strongly suggest joining the Altus Metrum user email
 list, which you can do by visiting
-<a class="ulink" href="https://lists.gag.com/mailman/listinfo/altusmetrum" target="_top">https://lists.gag.com/mailman/listinfo/altusmetrum</a>.  There’s a lot
-of useful information in the mailing list archives!</p><p>The first device created for our community was TeleMetrum, a dual
+<a href="https://lists.gag.com/mailman/listinfo/altusmetrum" class="bare">https://lists.gag.com/mailman/listinfo/altusmetrum</a>.  There&#8217;s a lot
+of useful information in the mailing list archives!</p>
+</div>
+<div class="paragraph">
+<p>The first device created for our community was TeleMetrum, a dual
 deploy altimeter with fully integrated GPS and radio telemetry
 as standard features, and a “companion interface” that will
 support optional capabilities in the future. The latest version
 of TeleMetrum, v2.0, has all of the same features but with
-improved sensors and radio to offer increased performance.</p><p>Our second device was TeleMini, a dual deploy altimeter with
+improved sensors and radio to offer increased performance.</p>
+</div>
+<div class="paragraph">
+<p>Our second device was TeleMini, a dual deploy altimeter with
 radio telemetry and radio direction finding. The first version
 of this device was only 13mm by 38mm (½ inch by 1½ inches) and
 could fit easily in an 18mm air-frame. The latest version, v3.0,
 includes a beeper, higher power radio, extended on-board
-flight logging and an improved barometric sensor.</p><p>TeleMega is our most sophisticated device, including six pyro
+flight logging and an improved barometric sensor.</p>
+</div>
+<div class="paragraph">
+<p>TeleMega is our most sophisticated device, including six pyro
 channels (four of which are fully programmable), integrated GPS,
 integrated gyroscopes for staging/air-start inhibit and high
-performance telemetry.</p><p>EasyMini is a dual-deploy altimeter with logging and built-in
-USB data download.</p><p>EasyMega is essentially a TeleMega board with the GPS receiver
+performance telemetry.</p>
+</div>
+<div class="paragraph">
+<p>EasyMini is a dual-deploy altimeter with logging and built-in
+USB data download.</p>
+</div>
+<div class="paragraph">
+<p>EasyMega is essentially a TeleMega board with the GPS receiver
 and telemetry transmitter removed. It offers the same 6 pyro
-channels and integrated gyroscopes for staging/air-start inhibit.</p><p>TeleDongle v0.2 was our first ground station, providing a USB to RF
+channels and integrated gyroscopes for staging/air-start inhibit.</p>
+</div>
+<div class="paragraph">
+<p>TeleDongle v0.2 was our first ground station, providing a USB to RF
 interfaces for communicating with the altimeters. Combined with
 your choice of antenna and notebook computer, TeleDongle and our
 associated user interface software form a complete ground
@@ -56,23 +227,51 @@ station capable of logging and displaying in-flight telemetry,
 aiding rocket recovery, then processing and archiving flight
 data for analysis and review. The latest version, TeleDongle
 v3, has all new electronics with a higher performance radio
-for improved range.</p><p>For a slightly more portable ground station experience that also
+for improved range.</p>
+</div>
+<div class="paragraph">
+<p>For a slightly more portable ground station experience that also
 provides direct rocket recovery support, TeleBT offers flight
 monitoring and data logging using a  Bluetooth™ connection between
 the receiver and an Android device that has the AltosDroid
-application installed from the Google Play store.</p><p>More products will be added to the Altus Metrum family over time, and
+application installed from the Google Play store.</p>
+</div>
+<div class="paragraph">
+<p>More products will be added to the Altus Metrum family over time, and
 we currently envision that this will be a single, comprehensive manual
-for the entire product family.</p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_getting_started"></a>Chapter 2. Getting Started</h1></div></div></div><p>The first thing to do after you open the box is to hook up a
-battery and charge it if necessary.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_batteries"></a>2.1. Batteries</h2></div></div></div><p>The Lithium Polymer
+for the entire product family.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_getting_started">2. Getting Started</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The first thing to do after you open the box is to hook up a
+battery and charge it if necessary.</p>
+</div>
+<div class="sect2">
+<h3 id="_batteries">2.1. Batteries</h3>
+<div class="paragraph">
+<p>The Lithium Polymer
 EasyMini battery can be charged by disconnecting it
 from the board and plugging it into a standalone
-battery charger such as <a class="ulink" href="http://altusmetrum.org/LipoCharger" target="_top">LipoCharger</a>, and
+battery charger such as <a href="http://altusmetrum.org/LipoCharger">LipoCharger</a>, and
 connecting that via a USB cable to a laptop or other
-USB power source.</p><p>You can also choose to use another battery with
+USB power source.</p>
+</div>
+<div class="paragraph">
+<p>You can also choose to use another battery with
 EasyMini, anything supplying between 4 and 12 volts should
 work fine (like a standard 9V battery), but if you are planning
 to fire pyro charges, ground testing is required to verify that
-the battery supplies enough current to fire your chosen e-matches.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_linux_mac_windows_ground_station_software"></a>2.2. Linux/Mac/Windows Ground Station Software</h2></div></div></div><p>Next you should obtain and install the AltOS software.
+the battery supplies enough current to fire your chosen e-matches.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_linuxmacwindows_ground_station_software">2.2. Linux/Mac/Windows Ground Station Software</h3>
+<div class="paragraph">
+<p>Next you should obtain and install the AltOS software.
 The AltOS distribution includes the AltosUI ground
 station program, current firmware images for all of
 the hardware, and a number of standalone utilities
@@ -80,89 +279,301 @@ that are rarely needed.  Pre-built binary packages are
 available for Linux, Microsoft Windows, Mac OSX. Full
 source code and build instructions are also
 available. The latest version may always be downloaded
-from <a class="ulink" href="http://altusmetrum.org/AltOS" target="_top">http://altusmetrum.org/AltOS</a></p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_using_altus_metrum_hardware"></a>Chapter 3. Using Altus Metrum Hardware</h1></div></div></div><p>Here are general instructions for hooking up an Altus Metrum
+from <a href="http://altusmetrum.org/AltOS" class="bare">http://altusmetrum.org/AltOS</a></p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_using_altus_metrum_hardware">3. Using Altus Metrum Hardware</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Here are general instructions for hooking up an Altus Metrum
 flight computer. Instructions specific to each model will be
-found in the section devoted to that model below.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_wiring_and_electrical_interference"></a>3.1. Wiring and Electrical Interference</h2></div></div></div><p>To prevent electrical interference from affecting the
-operation of the flight computer, it’s important to always
+found in the section devoted to that model below.</p>
+</div>
+<div class="sect2">
+<h3 id="_wiring_and_electrical_interference">3.1. Wiring and Electrical Interference</h3>
+<div class="paragraph">
+<p>To prevent electrical interference from affecting the
+operation of the flight computer, it&#8217;s important to always
 twist pairs of wires connected to the board. Twist the switch
 leads, the pyro leads and the battery leads. This reduces
-interference through a mechanism called common mode rejection.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_hooking_up_lithium_polymer_batteries"></a>3.2. Hooking Up Lithium Polymer Batteries</h2></div></div></div><p>All Altus Metrum flight computers have a two pin JST PH
+interference through a mechanism called common mode rejection.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_hooking_up_lithium_polymer_batteries">3.2. Hooking Up Lithium Polymer Batteries</h3>
+<div class="paragraph">
+<p>All Altus Metrum flight computers have a two pin JST PH
 series connector to connect up a single-cell Lithium Polymer
 cell (3.7V nominal). You can purchase matching batteries
 from the Altus Metrum store, or other vendors, or you can
 make your own. Pin 1 of the connector is positive, pin 2 is
 negative. Spark Fun sells a cable with the connector
 attached, which they call a
-<a class="ulink" href="https://www.sparkfun.com/products/9914" target="_top">JST Jumper 2 Wire Assembly</a></p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Many RC vendors also sell lithium polymer batteries with
+<a href="https://www.sparkfun.com/products/9914">JST Jumper 2 Wire Assembly</a></p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+Many RC vendors also sell lithium polymer batteries with
 this same connector. All that we have found use the opposite
 polarity, and if you use them that way, you will damage or
-destroy the flight computer.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_hooking_up_pyro_charges"></a>3.3. Hooking Up Pyro Charges</h2></div></div></div><p>Altus Metrum flight computers always have two screws for
-each pyro charge. This means you shouldn’t need to put two
+destroy the flight computer.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_hooking_up_pyro_charges">3.3. Hooking Up Pyro Charges</h3>
+<div class="paragraph">
+<p>Altus Metrum flight computers always have two screws for
+each pyro charge. This means you shouldn&#8217;t need to put two
 wires into a screw terminal or connect leads from pyro
-charges together externally.</p><p>On the flight computer, one lead from each charge is hooked
+charges together externally.</p>
+</div>
+<div class="paragraph">
+<p>On the flight computer, one lead from each charge is hooked
 to the positive battery terminal through the power switch.
 The other lead is connected through the pyro circuit, which
 is connected to the negative battery terminal when the pyro
-circuit is fired.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_hooking_up_a_power_switch"></a>3.4. Hooking Up a Power Switch</h2></div></div></div><p>Altus Metrum flight computers need an external power switch
+circuit is fired.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_hooking_up_a_power_switch">3.4. Hooking Up a Power Switch</h3>
+<div class="paragraph">
+<p>Altus Metrum flight computers need an external power switch
 to turn them on. This disconnects both the computer and the
 pyro charges from the battery, preventing the charges from
 firing when in the Off position. The switch is in-line with
-the positive battery terminal.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_understanding_beeps"></a>3.5. Understanding Beeps</h2></div></div></div><p>Altus Metrum flight computers include a beeper to
-provide information about the state of the system.</p><p>Here’s a short summary of all of the modes and the
+the positive battery terminal.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_understanding_beeps">3.5. Understanding Beeps</h3>
+<div class="paragraph">
+<p>Altus Metrum flight computers include a beeper to
+provide information about the state of the system.</p>
+</div>
+<div class="paragraph">
+<p>Here&#8217;s a short summary of all of the modes and the
 beeping
 that accompanies each mode. In the description of the
 beeping pattern, “dit” means a short beep while "dah"
 means a long beep (three times as long). “Brap” means
-a long dissonant tone.</p><div class="table"><a id="idm96"></a><p class="title"><strong>Table 3.1. AltOS Modes</strong></p><div class="table-contents"><table class="table" summary="AltOS Modes" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Mode Name</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Abbreviation</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Beeps</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Startup</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>S</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>battery voltage in decivolts</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Calibrating sensors, detecting orientation.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Idle</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>I</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Ready to accept commands over USB</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Pad</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>P</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dah dah dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Waiting for launch. Not listening for commands.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Boost</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dah dit dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Accelerating upwards.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Fast</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>F</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dit dah dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Decelerating, but moving faster than 200m/s.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Coast</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>C</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dah dit dah dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Decelerating, moving slower than 200m/s</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Drogue</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dah dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Descending after apogee. Above main height.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>M</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dah dah</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Descending. Below main height.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Landed</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>L</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dah dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Stable altitude for at least ten seconds.</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Sensor error</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>X</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>dah dit dit dah</p></td><td style="" align="left" valign="top"><p>Error detected during sensor calibration.</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Here’s a summary of all of the Pad and Idle mode
-indications. In Idle mode, you’ll hear one of these
+a long dissonant tone.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 1. AltOS Modes</caption>
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3335%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Mode Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Abbreviation</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Beeps</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Startup</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">S</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">battery voltage in decivolts</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Calibrating sensors, detecting orientation.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Idle</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">I</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Ready to accept commands over USB</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Pad</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">P</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dah dah dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Waiting for launch. Not listening for commands.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Boost</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dit dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Accelerating upwards.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Fast</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">F</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit dah dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Decelerating, but moving faster than 200m/s.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Coast</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dit dah dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Decelerating, moving slower than 200m/s</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Drogue</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Descending after apogee. Above main height.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">M</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dah</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Descending. Below main height.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Landed</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">L</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dah dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Stable altitude for at least ten seconds.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Sensor error</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">X</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dah dit dit dah</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Error detected during sensor calibration.</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Here&#8217;s a summary of all of the Pad and Idle mode
+indications. In Idle mode, you&#8217;ll hear one of these
 just once after the two short dits indicating idle
 mode. In Pad mode, after the dit dah dah dit
-indicating Pad mode, you’ll hear these once every five
-seconds.</p><div class="table"><a id="idm204"></a><p class="title"><strong>Table 3.2. Pad/Idle Indications</strong></p><div class="table-contents"><table class="table" summary="Pad/Idle Indications" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Name           </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Beeps          </th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Neither</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>brap</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>No continuity detected on either apogee or main igniters.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Continuity detected only on apogee igniter.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Continuity detected only on main igniter.</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Both</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>dit dit dit</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Continuity detected on both igniters.</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Storage Full</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>warble</p></td><td style="" align="left" valign="top"><p>On-board data logging storage is full. This will
+indicating Pad mode, you&#8217;ll hear these once every five
+seconds.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 2. Pad/Idle Indications</caption>
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Name</th>
+<th class="tableblock halign-left valign-top">Beeps</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Neither</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">brap</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">No continuity detected on either apogee or main igniters.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity detected only on apogee igniter.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity detected only on main igniter.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Both</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">dit dit dit</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Continuity detected on both igniters.</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Storage Full</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">warble</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">On-board data logging storage is full. This will
 not prevent the flight computer from safely
 controlling the flight or transmitting telemetry
 signals, but no record of the flight will be
-stored in on-board flash.</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_turning_on_the_power"></a>3.6. Turning On the Power</h2></div></div></div><p>Connect a battery and power switch and turn the switch
+stored in on-board flash.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_turning_on_the_power">3.6. Turning On the Power</h3>
+<div class="paragraph">
+<p>Connect a battery and power switch and turn the switch
 to "on". The flight computer will signal power on by
 reporting the battery voltage and then perform an internal self
-test and sensor calibration.</p><p>Once the self test and calibration are complete, there
+test and sensor calibration.</p>
+</div>
+<div class="paragraph">
+<p>Once the self test and calibration are complete, there
 are two modes that an Altus Metrum flight computer can
-operate in:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Flight/Pad
-</span></dt><dd>
-The flight computer is waiting to detect
+operate in:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Flight/Pad</dt>
+<dd>
+<p>The flight computer is waiting to detect
 launch and then fly the rocket. In this mode, the USB
 link is
 disabled.
 The only way to get out of this
 mode is to power the flight computer down. See below for how to get the flight
-computer to come up in Flight/Pad mode at power on.
-</dd><dt><span class="term">
-Idle
-</span></dt><dd>
-The flight computer is ready to communicate over USB
+computer to come up in Flight/Pad mode at power on.</p>
+</dd>
+<dt class="hdlist1">Idle</dt>
+<dd>
+<p>The flight computer is ready to communicate over USB
 You can configure
 the flight computer, download data or display
 the current state. See below for how to get the flight
-computer to come up in Idle mode at power on.
-</dd></dl></div><p>For EasyMini, if the USB cable is connected to a
+computer to come up in Idle mode at power on.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>For EasyMini, if the USB cable is connected to a
 computer, it will enter Idle mode. Otherwise, it will
-enter Flight/Pad mode.</p><p>You can see in <a class="xref" href="#_understanding_beeps" title="3.5. Understanding Beeps">Section 3.5, “Understanding Beeps”</a>
-how to tell which mode the flight computer is in.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_an_external_active_switch_circuit"></a>3.7. Using an External Active Switch Circuit</h2></div></div></div><p>You can use an active switch circuit, such as the
+enter Flight/Pad mode.</p>
+</div>
+<div class="paragraph">
+<p>You can see in <a href="#_understanding_beeps">Understanding Beeps</a>
+how to tell which mode the flight computer is in.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_an_external_active_switch_circuit">3.7. Using an External Active Switch Circuit</h3>
+<div class="paragraph">
+<p>You can use an active switch circuit, such as the
 Featherweight Magnetic Switch, with any Altus Metrum
 flight computer. These require three connections, one to
 the battery, one to the positive power input on the flight
 computer and one to ground. Find instructions on how to
 hook these up for each flight computer below. Then follow
 the instructions that come with your active switch to
-connect it up.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_separate_pyro_battery"></a>3.8. Using a Separate Pyro Battery</h2></div></div></div><p>As mentioned above in <a class="xref" href="#_hooking_up_pyro_charges" title="3.3. Hooking Up Pyro Charges">Section 3.3, “Hooking Up Pyro Charges”</a>, one
+connect it up.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_a_separate_pyro_battery">3.8. Using a Separate Pyro Battery</h3>
+<div class="paragraph">
+<p>As mentioned above in <a href="#_hooking_up_pyro_charges">Hooking Up Pyro Charges</a>, one
 lead for each of the pyro charges is connected through
 the power switch directly to the positive battery
 terminal. The other lead is connected to the pyro
 circuit, which connects it to the negative battery
 terminal when the pyro circuit is fired. The pyro
 circuit on all of the flight computers is designed to
-handle up to 16V.</p><p>To use a separate pyro battery, connect the negative pyro
+handle up to 16V.</p>
+</div>
+<div class="paragraph">
+<p>To use a separate pyro battery, connect the negative pyro
 battery terminal to the flight computer ground terminal,
 the positive battery terminal to the igniter and the other
 igniter lead to the negative pyro terminal on the flight
@@ -170,71 +581,220 @@ computer. When the pyro channel fires, it will complete the
 circuit between the negative pyro terminal and the ground
 terminal, firing the igniter. Specific instructions on how
 to hook this up for each flight computer will be found
-in the section below for that flight computer.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_different_kind_of_battery"></a>3.9. Using a Different Kind of Battery</h2></div></div></div><p>EasyMini
+in the section below for that flight computer.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_a_different_kind_of_battery">3.9. Using a Different Kind of Battery</h3>
+<div class="paragraph">
+<p>EasyMini
 is
 designed to use either a
 lithium polymer battery or any other battery producing
 between 4 and 12 volts, such as a rectangular 9V
-battery.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_packet_link_mode"></a>3.10. Using Packet Link Mode</h2></div></div></div><p>All AltusMetrum flight computers that have a radio can
+battery.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_packet_link_mode">3.10. Using Packet Link Mode</h3>
+<div class="paragraph">
+<p>All AltusMetrum flight computers that have a radio can
 communicate with the ground station software for
 configuration and other operations using the Packet
 Link mode. This uses radio communication instead of a
 USB cable. To set this up, the ground station software
 must be configured to the correct data rate, frequency
-and callsign.</p><p>You can monitor Packet Link mode from TeleBT or
+and callsign.</p>
+</div>
+<div class="paragraph">
+<p>You can monitor Packet Link mode from TeleBT or
 TeleDongle by watching the LEDs. Each time the device
 transmits, the red LED will flash. When the link is
 busy, or when the link is not working, the device will
 transmit 10 times per second, so the LED will flash
 rapidly. When the link is working and there is no data
 to send, the link will flash once per second, and the
-LED will flash more slowly.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_easymini"></a>Chapter 4. EasyMini</h1></div></div></div><div class="figure"><a id="idm284"></a><p class="title"><strong>Figure 4.1. EasyMini Board</strong></p><div class="figure-contents"><div class="mediaobject"><img src="easymini-top.jpg" width="495" alt="easymini-top.jpg" /></div></div></div><br class="figure-break" /><p>EasyMini is built on a 0.8 inch by 1½ inch circuit board. It’s
-designed to fit in a 24mm coupler tube.</p><p>You usually don’t need to configure EasyMini at all; it’s set
+LED will flash more slowly.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_easymini">4. EasyMini</h2>
+<div class="sectionbody">
+<div class="imageblock">
+<div class="content">
+<img src="easymini-top.jpg" alt="easymini top" width="400">
+</div>
+<div class="title">Figure 1. EasyMini Board</div>
+</div>
+<div class="paragraph">
+<p>EasyMini is built on a 0.8 inch by 1½ inch circuit board. It&#8217;s
+designed to fit in a 24mm coupler tube.</p>
+</div>
+<div class="paragraph">
+<p>You usually don&#8217;t need to configure EasyMini at all; it&#8217;s set
 up to do dual-deployment with an event at apogee to separate
 the airframe and deploy a drogue and another event at 250m
 (820ft) to deploy the main. Install EasyMini in your airframe,
-hook up a battery, igniters and a power switch and you’re
-ready to fly.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_easymini_screw_terminals"></a>4.1. EasyMini Screw Terminals</h2></div></div></div><p>EasyMini has two sets of four screw terminals near one end of the
+hook up a battery, igniters and a power switch and you&#8217;re
+ready to fly.</p>
+</div>
+<div class="sect2">
+<h3 id="_easymini_screw_terminals">4.1. EasyMini Screw Terminals</h3>
+<div class="paragraph">
+<p>EasyMini has two sets of four screw terminals near one end of the
 board. Using the picture
 above, the top four have connections for the main pyro
 circuit and an external battery and the bottom four have
 connections for the apogee pyro circuit and the power
-switch. Counting from the left, the connections are as follows:</p><div class="table"><a id="idm296"></a><p class="title"><strong>Table 4.1. EasyMini Screw Terminals</strong></p><div class="table-contents"><table class="table" summary="EasyMini Screw Terminals" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal #</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Terminal Name</th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Battery</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Positive external battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Top 4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Battery -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Negative external battery terminal</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee -</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel connection to pyro circuit</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro channel common connection to battery</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bottom 3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch Output</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Switch connection to flight computer</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Bottom 4</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Switch Input</p></td><td style="" align="left" valign="top"><p>Switch connection to positive battery terminal</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_connecting_a_battery_to_easymini"></a>4.2. Connecting A Battery To EasyMini</h2></div></div></div><p>There are two possible battery connections on
+switch. Counting from the left, the connections are as follows:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 3. EasyMini Screw Terminals</caption>
+<colgroup>
+<col style="width: 13.3333%;">
+<col style="width: 20%;">
+<col style="width: 66.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Terminal #</th>
+<th class="tableblock halign-left valign-top">Terminal Name</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Battery<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Positive external battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Top 4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Battery -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Negative external battery terminal</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee -</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel connection to pyro circuit</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee<br></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro channel common connection to battery<br></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Output</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to flight computer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bottom 4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch Input</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Switch connection to positive battery terminal</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_connecting_a_battery_to_easymini">4.2. Connecting A Battery To EasyMini</h3>
+<div class="paragraph">
+<p>There are two possible battery connections on
 EasyMini. You can use either method; both feed
-through the power switch terminals.</p><p>One battery connection is the standard Altus Metrum
+through the power switch terminals.</p>
+</div>
+<div class="paragraph">
+<p>One battery connection is the standard Altus Metrum
 white JST plug. This mates with single-cell Lithium
-Polymer batteries sold by Altus Metrum.</p><p>The other is a pair of screw terminals marked <span class="emphasis"><em>Battery
-+</em></span> and <span class="emphasis"><em>Battery -</em></span>. Connect a battery from 4 to 12
-volts to these terminals, being careful to match polarity.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_charging_lithium_batteries"></a>4.3. Charging Lithium Batteries</h2></div></div></div><p>Because EasyMini allows for batteries other than the
+Polymer batteries sold by Altus Metrum.</p>
+</div>
+<div class="paragraph">
+<p>The other is a pair of screw terminals marked 'Battery
++' and 'Battery -'. Connect a battery from 4 to 12
+volts to these terminals, being careful to match polarity.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_charging_lithium_batteries">4.3. Charging Lithium Batteries</h3>
+<div class="paragraph">
+<p>Because EasyMini allows for batteries other than the
 standard Altus Metrum Lithium Polymer cells, it cannot
 incorporate a battery charger circuit. Therefore, when
-using a Litium Polymer cell, youll need an external
+using a Litium Polymer cell, you&#8217;ll need an external
 charger. These are available from Altus Metrum, or
-from Spark Fun.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_a_separate_pyro_battery_with_easymini"></a>4.4. Using a Separate Pyro Battery with EasyMini</h2></div></div></div><p>As described above, using an external pyro battery involves
+from Spark Fun.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_a_separate_pyro_battery_with_easymini">4.4. Using a Separate Pyro Battery with EasyMini</h3>
+<div class="paragraph">
+<p>As described above, using an external pyro battery involves
 connecting the negative battery terminal to the flight
 computer ground, connecting the positive battery terminal to
 one of the igniter leads and connecting the other igniter
-lead to the per-channel pyro circuit connection.</p><p>To connect the negative pyro battery terminal to EasyMini
+lead to the per-channel pyro circuit connection.</p>
+</div>
+<div class="paragraph">
+<p>To connect the negative pyro battery terminal to EasyMini
 ground, connect it to the negative external battery
-connection, top terminal 4.</p><p>Connecting the positive battery terminal to the pyro
+connection, top terminal 4.</p>
+</div>
+<div class="paragraph">
+<p>Connecting the positive battery terminal to the pyro
 charges must be done separate from EasyMini, by soldering
-them together or using some other connector.</p><p>The other lead from each pyro charge is then inserted into
+them together or using some other connector.</p>
+</div>
+<div class="paragraph">
+<p>The other lead from each pyro charge is then inserted into
 the appropriate per-pyro channel screw terminal (top
 terminal 1 for the Main charge, bottom terminal 1 for the
-Apogee charge).</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_using_an_active_switch_with_easymini"></a>4.5. Using an Active Switch with EasyMini</h2></div></div></div><p>As explained above, an external active switch requires three
+Apogee charge).</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_using_an_active_switch_with_easymini">4.5. Using an Active Switch with EasyMini</h3>
+<div class="paragraph">
+<p>As explained above, an external active switch requires three
 connections, one to the positive battery terminal, one to
 the flight computer positive input and one to ground. Use
 the negative external battery connection, top terminal 4 for
-ground.</p><p>The positive battery terminal is available on bottom
+ground.</p>
+</div>
+<div class="paragraph">
+<p>The positive battery terminal is available on bottom
 terminal 4, the positive flight computer input is on the
-bottom terminal 3.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_installation"></a>Chapter 5. Installation</h1></div></div></div><p>A typical installation involves attaching
+bottom terminal 3.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_installation">5. Installation</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>A typical installation involves attaching
 only a suitable battery, a single pole switch for
 power on/off, and two pairs of wires connecting e-matches for the
 apogee and main ejection charges.  All Altus Metrum products are
 designed for use with single-cell batteries with 3.7 volts
 nominal.
 EasyMini may also be used with other
-batteries as long as they supply between 4 and 12 volts.</p><p>The battery connectors are a standard 2-pin JST connector; you
+batteries as long as they supply between 4 and 12 volts.</p>
+</div>
+<div class="paragraph">
+<p>The battery connectors are a standard 2-pin JST connector; you
 can purchase suitable batteries from the any vendor selling
 Altus Metrum products. These batteries are
 single-cell Lithium Polymer batteries that nominally provide 3.7
@@ -243,40 +803,95 @@ using mating connectors, however the polarity for those is
 generally reversed from the batteries used by Altus Metrum
 products. In particular, the Tenergy batteries supplied for use
 in Featherweight flight computers are not compatible with Altus
-Metrum flight computers or battery chargers.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Check polarity and voltage before connecting any battery not
-purchased from Altus Metrum.</p></div><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Spark Fun sells batteries that have a matching connector with
+Metrum flight computers or battery chargers.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+Check polarity and voltage before connecting any battery not
+purchased from Altus Metrum.
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+Spark Fun sells batteries that have a matching connector with
 the correct polarity. However, these batteries include an
 integrated current limiting circuit. That circuit will cause
 the battery to shut down when firing the igniter circuit. Do
 not use these batteries unless you remove the current limiting
-circuit.</p></div><p>By default, we use the unregulated output of the battery
+circuit.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>By default, we use the unregulated output of the battery
 directly to fire ejection charges.  This works marvelously
 with standard low-current e-matches like the J-Tek from MJG
 Technologies, and with Quest Q2G2 igniters.  However, if you
 want or need to use a separate pyro battery, check out
-<a class="xref" href="#_using_a_separate_pyro_battery" title="3.8. Using a Separate Pyro Battery">Section 3.8, “Using a Separate Pyro Battery”</a> for instructions on how to wire
+<a href="#_using_a_separate_pyro_battery">Using a Separate Pyro Battery</a> for instructions on how to wire
 that up. The altimeters are designed to work with an external
-pyro battery of no more than 15 volts.</p><p>Ejection charges are wired directly to the screw terminal block
-at the aft end of the altimeter.  You’ll need a very small straight
+pyro battery of no more than 15 volts.</p>
+</div>
+<div class="paragraph">
+<p>Ejection charges are wired directly to the screw terminal block
+at the aft end of the altimeter.  You&#8217;ll need a very small straight
 blade screwdriver for these screws, such as you might find in a
-jeweler’s screwdriver set.
-The screw terminal block is also used for the power switch leads.</p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_using_altus_metrum_products"></a>Chapter 6. Using Altus Metrum Products</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_in_the_rocket"></a>6.1. In the Rocket</h2></div></div></div><p>In the rocket itself, you just need a flight computer
+jeweler&#8217;s screwdriver set.
+The screw terminal block is also used for the power switch leads.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_using_altus_metrum_products">6. Using Altus Metrum Products</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_in_the_rocket">6.1. In the Rocket</h3>
+<div class="paragraph">
+<p>In the rocket itself, you just need a flight computer
 and a single-cell, 3.7 volt nominal Li-Po rechargeable
 battery.
 A 110mAh battery weighs less
 than a triple A battery and is a good choice for use
 with
-EasyMini.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_on_the_ground"></a>6.2. On the Ground</h2></div></div></div><p>The GUI tool, AltosUI, is written in Java and runs
-across Linux, Mac OS and Windows. There’s also a suite
+EasyMini.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_on_the_ground">6.2. On the Ground</h3>
+<div class="paragraph">
+<p>The GUI tool, AltosUI, is written in Java and runs
+across Linux, Mac OS and Windows. There&#8217;s also a suite
 of C tools for Linux which can perform most of the
-same tasks.</p><p>After the flight,
+same tasks.</p>
+</div>
+<div class="paragraph">
+<p>After the flight,
 you can use a
 USB cable to plug into the flight computer board directly.
 A USB cable is also how you
-charge the Li-Po battery, so youll want one of those
+charge the Li-Po battery, so you&#8217;ll want one of those
 anyway. The same cable used by lots of digital
 cameras and other modern electronic stuff will work
-fine.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_data_analysis"></a>6.3. Data Analysis</h2></div></div></div><p>Our software makes it easy to log the data from each
+fine.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_data_analysis">6.3. Data Analysis</h3>
+<div class="paragraph">
+<p>Our software makes it easy to log the data from each
 flight, both the telemetry received during the flight
 itself, and the more complete data log recorded in the
 flash memory on the altimeter board.  Once this data
@@ -288,28 +903,66 @@ set of plots showing the altitude, acceleration, and
 velocity of the rocket during flight.  And you can
 even export a flight log in a format usable with Google
 Maps and Google Earth for visualizing the flight path
-in two or three dimensions!</p><p>Our ultimate goal is to emit a set of files for each
+in two or three dimensions!</p>
+</div>
+<div class="paragraph">
+<p>Our ultimate goal is to emit a set of files for each
 flight that can be published as a web page per flight,
-or just viewed on your local disk with a web browser.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_future_plans"></a>6.4. Future Plans</h2></div></div></div><p>Because all of our work is open, both the hardware
+or just viewed on your local disk with a web browser.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_future_plans">6.4. Future Plans</h3>
+<div class="paragraph">
+<p>Because all of our work is open, both the hardware
 designs and the software, if you have some great idea
 for an addition to the current Altus Metrum family,
 feel free to dive in and help!  Or let us know what
-you’d like to see that we aren’t already working on,
-and maybe we’ll get excited about it too…</p><p>Watch our <a class="ulink" href="http://altusmetrum.org/" target="_top">web site</a> for
+you&#8217;d like to see that we aren&#8217;t already working on,
+and maybe we&#8217;ll get excited about it too&#8230;&#8203;</p>
+</div>
+<div class="paragraph">
+<p>Watch our <a href="http://altusmetrum.org/">web site</a> for
 more news and information as our family of products
-evolves!</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_altosui"></a>Chapter 7. AltosUI</h1></div></div></div><div class="figure"><a id="idm415"></a><p class="title"><strong>Figure 7.1. AltosUI Main Window</strong></p><div class="figure-contents"><div class="mediaobject"><img src="altosui.png" width="414" alt="altosui.png" /></div></div></div><br class="figure-break" /><p>The AltosUI program provides a graphical user interface for
+evolves!</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_altosui">7. AltosUI</h2>
+<div class="sectionbody">
+<div class="imageblock">
+<div class="content">
+<img src="altosui.png" alt="altosui" width="450">
+</div>
+<div class="title">Figure 2. AltosUI Main Window</div>
+</div>
+<div class="paragraph">
+<p>The AltosUI program provides a graphical user interface for
 interacting with the Altus Metrum product family. AltosUI can
 monitor telemetry data, configure devices and many other
 tasks. The primary interface window provides a selection of
 buttons, one for each major activity in the system.  This
 chapter is split into sections, each of which documents one of
-the tasks provided from the top-level toolbar.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_save_flight_data"></a>7.1. Save Flight Data</h2></div></div></div><p>The altimeter records flight data to its internal
+the tasks provided from the top-level toolbar.</p>
+</div>
+<div class="sect2">
+<h3 id="_save_flight_data">7.1. Save Flight Data</h3>
+<div class="paragraph">
+<p>The altimeter records flight data to its internal
 flash memory.
-The <span class="emphasis"><em>Save Flight Data</em></span> button allows you to
-read the flash memory and write it to disk.</p><p>Clicking on the <span class="emphasis"><em>Save Flight Data</em></span> button brings up a
+The 'Save Flight Data' button allows you to
+read the flash memory and write it to disk.</p>
+</div>
+<div class="paragraph">
+<p>Clicking on the 'Save Flight Data' button brings up a
 list of connected flight computers and TeleDongle
 devices. If you select a flight computer, the flight
-data will be downloaded from that device directly.</p><p>After the device has been selected, a dialog showing
+data will be downloaded from that device directly.</p>
+</div>
+<div class="paragraph">
+<p>After the device has been selected, a dialog showing
 the flight data saved in the device will be shown
 allowing you to select which flights to download and
 which to delete. With version 0.9 or newer firmware,
@@ -318,40 +971,97 @@ consume to be reused by another flight. This prevents
 accidentally losing flight data if you neglect to
 download data before flying again. Note that if there
 is no more space available in the device, then no data
-will be recorded during the next flight.</p><p>The file name for each flight log is computed
+will be recorded during the next flight.</p>
+</div>
+<div class="paragraph">
+<p>The file name for each flight log is computed
 automatically from the recorded flight date, altimeter
-serial number and flight number information.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_replay_flight"></a>7.2. Replay Flight</h2></div></div></div><p>Select this button and you are prompted to select a flight
+serial number and flight number information.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_replay_flight">7.2. Replay Flight</h3>
+<div class="paragraph">
+<p>Select this button and you are prompted to select a flight
 record file, either a .telem file recording telemetry data or a
 .eeprom file containing flight data saved from the altimeter
-flash memory.</p><p>Once a flight record is selected, the flight monitor interface
+flash memory.</p>
+</div>
+<div class="paragraph">
+<p>Once a flight record is selected, the flight monitor interface
 is displayed and the flight is re-enacted in real
-time.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_graph_data"></a>7.3. Graph Data</h2></div></div></div><p>Select this button and you are prompted to select a flight
+time.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_graph_data">7.3. Graph Data</h3>
+<div class="paragraph">
+<p>Select this button and you are prompted to select a flight
 record file, either a .telem file recording telemetry data or a
 .eeprom file containing flight data saved from
-flash memory.</p><p>Note that telemetry files will generally produce poor graphs
+flash memory.</p>
+</div>
+<div class="paragraph">
+<p>Note that telemetry files will generally produce poor graphs
 due to the lower sampling rate and missed telemetry packets.
-Use saved flight data in .eeprom files for graphing where possible.</p><p>Once a flight record is selected, a window with multiple tabs is
-opened.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_flight_graph"></a>7.3.1. Flight Graph</h3></div></div></div><div class="figure"><a id="idm442"></a><p class="title"><strong>Figure 7.2. Flight Data Graph</strong></p><div class="figure-contents"><div class="mediaobject"><img src="graph.png" width="495" alt="graph.png" /></div></div></div><br class="figure-break" /><p>By default, the graph contains acceleration (blue),
-velocity (green) and altitude (red).</p><p>The graph can be zoomed into a particular area by
+Use saved flight data in .eeprom files for graphing where possible.</p>
+</div>
+<div class="paragraph">
+<p>Once a flight record is selected, a window with multiple tabs is
+opened.</p>
+</div>
+<div class="sect3">
+<h4 id="_flight_graph">7.3.1. Flight Graph</h4>
+<div class="imageblock">
+<div class="content">
+<img src="graph.png" alt="graph" width="400">
+</div>
+<div class="title">Figure 3. Flight Data Graph</div>
+</div>
+<div class="paragraph">
+<p>By default, the graph contains acceleration (blue),
+velocity (green) and altitude (red).</p>
+</div>
+<div class="paragraph">
+<p>The graph can be zoomed into a particular area by
 clicking and dragging down and to the right. Once
 zoomed, the graph can be reset by clicking and
 dragging up and to the left. Holding down control and
 clicking and dragging allows the graph to be panned.
 The right mouse button causes a pop-up menu to be
 displayed, giving you the option save or print the
-plot.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configure_graph"></a>7.3.2. Configure Graph</h3></div></div></div><div class="figure"><a id="idm453"></a><p class="title"><strong>Figure 7.3. Flight Graph Configuration</strong></p><div class="figure-contents"><div class="mediaobject"><img src="graph-configure.png" width="495" alt="graph-configure.png" /></div></div></div><br class="figure-break" /><p>This selects which graph elements to show, and, at the
+plot.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_configure_graph">7.3.2. Configure Graph</h4>
+<div class="imageblock">
+<div class="content">
+<img src="graph-configure.png" alt="graph configure" width="400">
+</div>
+<div class="title">Figure 4. Flight Graph Configuration</div>
+</div>
+<div class="paragraph">
+<p>This selects which graph elements to show, and, at the
 very bottom. It also lets you configure how
-the graph is drawn:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Whether to use metric or imperial units
-</li><li class="listitem">
-Whether to show a marker at each data
+the graph is drawn:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Whether to use metric or imperial units</p>
+</li>
+<li>
+<p>Whether to show a marker at each data
 point. When displaying a small section of
 the graph, these can be useful to know what
-data values were recorded.
-</li><li class="listitem">
-How wide to draw the lines in the graph
-</li><li class="listitem">
-How to filter speed and acceleration data
+data values were recorded.</p>
+</li>
+<li>
+<p>How wide to draw the lines in the graph</p>
+</li>
+<li>
+<p>How to filter speed and acceleration data
 computed from barometric data. Flight
 computers with accelerometers never display
 computed acceleration data, and only use
@@ -359,8 +1069,28 @@ barometric data to compute speed during
 descent. Flight computers without
 accelerometers always compute both speed and
 acceleration from barometric data. A larger
-value smooths the data more.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_flight_statistics"></a>7.3.3. Flight Statistics</h3></div></div></div><div class="figure"><a id="idm472"></a><p class="title"><strong>Figure 7.4. Flight Statistics</strong></p><div class="figure-contents"><div class="mediaobject"><img src="graph-stats.png" width="495" alt="graph-stats.png" /></div></div></div><br class="figure-break" /><p>Shows overall data computed from the flight.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_export_data"></a>7.4. Export Data</h2></div></div></div><p>This tool takes the raw data files and makes them
+value smooths the data more.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_flight_statistics">7.3.3. Flight Statistics</h4>
+<div class="imageblock">
+<div class="content">
+<img src="graph-stats.png" alt="graph stats" width="400">
+</div>
+<div class="title">Figure 5. Flight Statistics</div>
+</div>
+<div class="paragraph">
+<p>Shows overall data computed from the flight.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_export_data">7.4. Export Data</h3>
+<div class="paragraph">
+<p>This tool takes the raw data files and makes them
 available for external analysis. When you select this
 button, you are prompted to select a flight data file,
 which can be either a .eeprom or .telem.  The .eeprom
@@ -368,166 +1098,347 @@ files contain higher resolution and more continuous
 data, while .telem files contain receiver signal
 strength information.  Next, a second dialog appears
 which is used to select where to write the resulting
-file.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_comma_separated_value_format"></a>7.4.1. Comma Separated Value Format</h3></div></div></div><p>This is a text file containing the data in a form
+file.</p>
+</div>
+<div class="sect3">
+<h4 id="_comma_separated_value_format">7.4.1. Comma Separated Value Format</h4>
+<div class="paragraph">
+<p>This is a text file containing the data in a form
 suitable for import into a spreadsheet or other
 external data analysis tool. The first few lines of
 the file contain the version and configuration
 information from the altimeter, then there is a single
 header line which labels all of the fields. All of
-these lines start with a <span class="emphasis"><em>#</em></span> character which many
-tools can be configured to skip over.</p><p>The remaining lines of the file contain the data, with
+these lines start with a '#' character which many
+tools can be configured to skip over.</p>
+</div>
+<div class="paragraph">
+<p>The remaining lines of the file contain the data, with
 each field separated by a comma and at least one
 space. All of the sensor values are converted to
 standard units, with the barometric data reported in
-both pressure, altitude and height above pad units.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_configure_altimeter"></a>7.5. Configure Altimeter</h2></div></div></div><div class="figure"><a id="idm490"></a><p class="title"><strong>Figure 7.5. Altimeter Configuration</strong></p><div class="figure-contents"><div class="mediaobject"><img src="configure-altimeter.png" width="324" alt="configure-altimeter.png" /></div></div></div><br class="figure-break" /><p>Select this button and then select an altimeter.</p><p>The first few lines of the dialog provide information about the
+both pressure, altitude and height above pad units.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configure_altimeter">7.5. Configure Altimeter</h3>
+<div class="imageblock">
+<div class="content">
+<img src="configure-altimeter.png" alt="configure altimeter" width="350">
+</div>
+<div class="title">Figure 6. Altimeter Configuration</div>
+</div>
+<div class="paragraph">
+<p>Select this button and then select an altimeter.</p>
+</div>
+<div class="paragraph">
+<p>The first few lines of the dialog provide information about the
 connected device, including the product name,
 software version and hardware serial number. Below that are the
-individual configuration entries.</p><p>At the bottom of the dialog, there are four buttons:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Save
-</span></dt><dd>
-This writes any changes to the configuration parameter
-block in flash memory. If you don’t press this button,
-any changes you make will be lost.
-</dd><dt><span class="term">
-Reset
-</span></dt><dd>
-This resets the dialog to the most recently saved
-values, erasing any changes you have made.
-</dd><dt><span class="term">
-Reboot
-</span></dt><dd>
-This reboots the device. Use this to switch from idle
+individual configuration entries.</p>
+</div>
+<div class="paragraph">
+<p>At the bottom of the dialog, there are four buttons:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Save</dt>
+<dd>
+<p>This writes any changes to the configuration parameter
+block in flash memory. If you don&#8217;t press this button,
+any changes you make will be lost.</p>
+</dd>
+<dt class="hdlist1">Reset</dt>
+<dd>
+<p>This resets the dialog to the most recently saved
+values, erasing any changes you have made.</p>
+</dd>
+<dt class="hdlist1">Reboot</dt>
+<dd>
+<p>This reboots the device. Use this to switch from idle
 to pad mode by rebooting once the rocket is oriented
 for flight, or to confirm changes you think you saved
-are really saved.
-</dd><dt><span class="term">
-Close
-</span></dt><dd>
-This closes the dialog. Any unsaved changes will be
-lost.
-</dd></dl></div><p>The rest of the dialog contains the parameters to be configured.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_main_deploy_altitude"></a>7.5.1. Main Deploy Altitude</h3></div></div></div><p>This sets the altitude (above the recorded pad
-altitude) at which the <span class="emphasis"><em>main</em></span> igniter will fire. The
+are really saved.</p>
+</dd>
+<dt class="hdlist1">Close</dt>
+<dd>
+<p>This closes the dialog. Any unsaved changes will be
+lost.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>The rest of the dialog contains the parameters to be configured.</p>
+</div>
+<div class="sect3">
+<h4 id="_main_deploy_altitude">7.5.1. Main Deploy Altitude</h4>
+<div class="paragraph">
+<p>This sets the altitude (above the recorded pad
+altitude) at which the 'main' igniter will fire. The
 drop-down menu shows some common values, but you can
 edit the text directly and choose whatever you
 like. If the apogee charge fires below this altitude,
 then the main charge will fire two seconds after the
-apogee charge fires.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_apogee_delay"></a>7.5.2. Apogee Delay</h3></div></div></div><p>When flying redundant electronics, it’s often
-important to ensure that multiple apogee charges don’t
+apogee charge fires.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_apogee_delay">7.5.2. Apogee Delay</h4>
+<div class="paragraph">
+<p>When flying redundant electronics, it&#8217;s often
+important to ensure that multiple apogee charges don&#8217;t
 fire at precisely the same time, as that can over
 pressurize the apogee deployment bay and cause a
 structural failure of the air-frame. The Apogee Delay
 parameter tells the flight computer to fire the apogee
 charge a certain number of seconds after apogee has
-been detected.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_apogee_lockout"></a>7.5.3. Apogee Lockout</h3></div></div></div><p>Apogee lockout is the number of seconds after launch
+been detected.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_apogee_lockout">7.5.3. Apogee Lockout</h4>
+<div class="paragraph">
+<p>Apogee lockout is the number of seconds after launch
 where the flight computer will not fire the apogee
 charge, even if the rocket appears to be at
-apogee. This is often called <span class="emphasis"><em>Mach Delay</em></span>, as it is
+apogee. This is often called 'Mach Delay', as it is
 intended to prevent a flight computer from
 unintentionally firing apogee charges due to the
 pressure spike that occurrs across a mach
 transition. Altus Metrum flight computers include a
 Kalman filter which is not fooled by this sharp
 pressure increase, and so this setting should be left
-at the default value of zero to disable it.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Firmware versions older than 1.8.6 have a
+at the default value of zero to disable it.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+Firmware versions older than 1.8.6 have a
 bug which resets the time since launch to zero each
 time a motor starts burning. Update firmware to get
-the correct behavior.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_maximum_flight_log_size"></a>7.5.4. Maximum Flight Log Size</h3></div></div></div><p>This sets the space (in kilobytes) allocated
+the correct behavior.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_maximum_flight_log_size">7.5.4. Maximum Flight Log Size</h4>
+<div class="paragraph">
+<p>This sets the space (in kilobytes) allocated
 for each flight log. The available space will
 be divided into chunks of this size. A smaller
 value will allow more flights to be stored, a
 larger value will record data from longer
-flights.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_ignitor_firing_mode"></a>7.5.5. Ignitor Firing Mode</h3></div></div></div><p>This configuration parameter allows the two standard ignitor
+flights.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_ignitor_firing_mode">7.5.5. Ignitor Firing Mode</h4>
+<div class="paragraph">
+<p>This configuration parameter allows the two standard ignitor
 channels (Apogee and Main) to be used in different
-configurations.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Dual Deploy
-</span></dt><dd>
-This is the usual mode of operation; the
-<span class="emphasis"><em>apogee</em></span> channel is fired at apogee and the
-<span class="emphasis"><em>main</em></span> channel at the height above ground
-specified by the <span class="emphasis"><em>Main Deploy Altitude</em></span> during
-descent.
-</dd><dt><span class="term">
-Redundant Apogee
-</span></dt><dd>
-This fires both channels at apogee, the
-<span class="emphasis"><em>apogee</em></span> channel first followed after a two
-second delay by the <span class="emphasis"><em>main</em></span> channel.
-</dd><dt><span class="term">
-Redundant Main
-</span></dt><dd>
-This fires both channels at the height above
+configurations.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Dual Deploy</dt>
+<dd>
+<p>This is the usual mode of operation; the
+'apogee' channel is fired at apogee and the
+'main' channel at the height above ground
+specified by the 'Main Deploy Altitude' during
+descent.</p>
+</dd>
+<dt class="hdlist1">Redundant Apogee</dt>
+<dd>
+<p>This fires both channels at apogee, the
+'apogee' channel first followed after a two
+second delay by the 'main' channel.</p>
+</dd>
+<dt class="hdlist1">Redundant Main</dt>
+<dd>
+<p>This fires both channels at the height above
 ground specified by the Main Deploy Altitude
-setting during descent. The <span class="emphasis"><em>apogee</em></span> channel
+setting during descent. The 'apogee' channel
 is fired first, followed after a two second
-delay by the <span class="emphasis"><em>main</em></span> channel.
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_beeper_frequency"></a>7.5.6. Beeper Frequency</h3></div></div></div><p>The beeper on all Altus Metrum flight
+delay by the 'main' channel.</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_beeper_frequency">7.5.6. Beeper Frequency</h4>
+<div class="paragraph">
+<p>The beeper on all Altus Metrum flight
 computers works best at 4000Hz, however if you
 have more than one flight computer in a single
 airframe, having all of them sound at the same
 frequency can be confusing. This parameter
 lets you adjust the base beeper frequency
-value.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_configure_altosui"></a>7.6. Configure AltosUI</h2></div></div></div><div class="figure"><a id="idm562"></a><p class="title"><strong>Figure 7.6. Configure AltosUI Dialog</strong></p><div class="figure-contents"><div class="mediaobject"><img src="configure-altosui.png" width="216" alt="configure-altosui.png" /></div></div></div><br class="figure-break" /><p>This button presents a dialog so that you can
-configure the AltosUI global settings.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_log_directory"></a>7.6.1. Log Directory</h3></div></div></div><p>AltosUI logs all telemetry data and saves all
+value.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configure_altosui">7.6. Configure AltosUI</h3>
+<div class="imageblock">
+<div class="content">
+<img src="configure-altosui.png" alt="configure altosui" width="230">
+</div>
+<div class="title">Figure 7. Configure AltosUI Dialog</div>
+</div>
+<div class="paragraph">
+<p>This button presents a dialog so that you can
+configure the AltosUI global settings.</p>
+</div>
+<div class="sect3">
+<h4 id="_log_directory">7.6.1. Log Directory</h4>
+<div class="paragraph">
+<p>AltosUI logs all telemetry data and saves all
 flash data to this directory. This
 directory is also used as the staring point
 when selecting data files for display or
-export.</p><p>Click on the directory name to bring up a
+export.</p>
+</div>
+<div class="paragraph">
+<p>Click on the directory name to bring up a
 directory choosing dialog, select a new
-directory and click <span class="emphasis"><em>Select Directory</em></span> to
+directory and click 'Select Directory' to
 change where AltosUI reads and writes data
-files.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_imperial_units"></a>7.6.2. Imperial Units</h3></div></div></div><p>This switches between metric units (meters)
+files.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_imperial_units">7.6.2. Imperial Units</h4>
+<div class="paragraph">
+<p>This switches between metric units (meters)
 and imperial units (feet and miles). This
 affects the display of values use during
 flight monitoring, configuration, data
 graphing and all of the voice
 announcements. It does not change the units
 used when exporting to CSV files, those are
-always produced in metric units.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_serial_debug"></a>7.6.3. Serial Debug</h3></div></div></div><p>This causes all communication with a connected
+always produced in metric units.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_serial_debug">7.6.3. Serial Debug</h4>
+<div class="paragraph">
+<p>This causes all communication with a connected
 device to be dumped to the console from which
-AltosUI was started. If youve started it from
+AltosUI was started. If you&#8217;ve started it from
 an icon or menu entry, the output will simply
 be discarded. This mode can be useful to debug
-various serial communication issues.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_font_size"></a>7.6.4. Font size</h3></div></div></div><p>Selects the set of fonts used in the flight
+various serial communication issues.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_font_size">7.6.4. Font size</h4>
+<div class="paragraph">
+<p>Selects the set of fonts used in the flight
 monitor window. Choose between the small,
-medium and large sets.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_look_amp_feel"></a>7.6.5. Look &amp; feel</h3></div></div></div><p>Switches between the available Java user
+medium and large sets.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_look_feel">7.6.5. Look &amp; feel</h4>
+<div class="paragraph">
+<p>Switches between the available Java user
 interface appearances. The default selection
 is supposed to match the native window system
-appearance for the target platform.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_menu_position"></a>7.6.6. Menu position</h3></div></div></div><p>Selects the initial position for the main
+appearance for the target platform.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_menu_position">7.6.6. Menu position</h4>
+<div class="paragraph">
+<p>Selects the initial position for the main
 AltosUI window that includes all of the
-command buttons.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_flash_image"></a>7.7. Flash Image</h2></div></div></div><p>This reprograms Altus Metrum devices with new
+command buttons.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_flash_image">7.7. Flash Image</h3>
+<div class="paragraph">
+<p>This reprograms Altus Metrum devices with new
 firmware.
 EasyMini is
 programmed directly
 over USB (self programming). Please read
 the directions for flashing devices in
-<a class="xref" href="#_updating_device_firmware" title="Appendix C. Updating Device Firmware">Appendix C, <em>Updating Device Firmware</em></a>.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_fire_igniter"></a>7.8. Fire Igniter</h2></div></div></div><div class="figure"><a id="idm596"></a><p class="title"><strong>Figure 7.7. Fire Igniter Window</strong></p><div class="figure-contents"><div class="mediaobject"><img src="fire-igniter.png" width="108" alt="fire-igniter.png" /></div></div></div><br class="figure-break" /><p>This activates the igniter circuits in the flight
+<a href="#_updating_device_firmware">Updating Device Firmware</a>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_fire_igniter">7.8. Fire Igniter</h3>
+<div class="imageblock">
+<div class="content">
+<img src="fire-igniter.png" alt="fire igniter" width="120">
+</div>
+<div class="title">Figure 8. Fire Igniter Window</div>
+</div>
+<div class="paragraph">
+<p>This activates the igniter circuits in the flight
 computer to help test recovery systems
-deployment.</p><p>Selecting the <span class="emphasis"><em>Fire Igniter</em></span> button brings up the
+deployment.</p>
+</div>
+<div class="paragraph">
+<p>Selecting the 'Fire Igniter' button brings up the
 usual device selection dialog. Pick the desired
 device. This brings up another window which shows the
 current continuity test status for all of the pyro
-channels.</p><p>Next, select the desired igniter to fire. This will
-enable the <span class="emphasis"><em>Arm</em></span> button.</p><p>Select the <span class="emphasis"><em>Arm</em></span> button. This enables the <span class="emphasis"><em>Fire</em></span>
-button. The word <span class="emphasis"><em>Arm</em></span> is replaced by a countdown
+channels.</p>
+</div>
+<div class="paragraph">
+<p>Next, select the desired igniter to fire. This will
+enable the 'Arm' button.</p>
+</div>
+<div class="paragraph">
+<p>Select the 'Arm' button. This enables the 'Fire'
+button. The word 'Arm' is replaced by a countdown
 timer indicating that you have 10 seconds to press the
-<span class="emphasis"><em>Fire</em></span> button or the system will deactivate, at which
+'Fire' button or the system will deactivate, at which
 point you start over again at selecting the desired
-igniter.</p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_system_operation"></a>Appendix A. System Operation</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_firmware_modes"></a>A.1. Firmware Modes</h2></div></div></div><p>The AltOS firmware build for the altimeters has two
+igniter.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_system_operation">Appendix A: System Operation</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_firmware_modes">A.1. Firmware Modes</h3>
+<div class="paragraph">
+<p>The AltOS firmware build for the altimeters has two
 fundamental modes, “idle” and “flight”.  Which of these modes
 the firmware operates in is determined at start up
 time.
 Since
-EasyMini doesnt
+EasyMini doesn&#8217;t
 have an
 accelerometer we can use to determine orientation, “idle” mode
 is selected if the board is connected via USB to a computer,
-otherwise the board enters “flight” mode.</p><p>At power on, the altimeter will beep out the battery voltage
+otherwise the board enters “flight” mode.</p>
+</div>
+<div class="paragraph">
+<p>At power on, the altimeter will beep out the battery voltage
 to the nearest tenth of a volt.  Each digit is represented by
 a sequence of short “dit” beeps, with a pause between
 digits. A zero digit is represented with one long “dah”
 beep. Then there will be a short pause while the altimeter
 completes initialization and self test, and decides which mode
-to enter next.</p><p>In flight or “pad” mode, the altimeter engages the flight
+to enter next.</p>
+</div>
+<div class="paragraph">
+<p>In flight or “pad” mode, the altimeter engages the flight
 state machine, goes into transmit-only mode to send telemetry,
 and waits for launch to be detected.  Flight mode is indicated
 by an “di-dah-dah-dit” (“P” for pad) on the beeper or lights,
@@ -537,48 +1448,99 @@ apogee continuity, two beeps/flashes indicate main continuity,
 three beeps/flashes indicate both apogee and main continuity,
 and one longer “brap” sound which is made by rapidly
 alternating between two tones indicates no continuity.  For a
-dual deploy flight, make sure youre getting three beeps or
+dual deploy flight, make sure you&#8217;re getting three beeps or
 flashes before launching!  For apogee-only or motor eject
-flights, do what makes sense.</p><p>If idle mode is entered, you will hear an audible “di-dit” or
+flights, do what makes sense.</p>
+</div>
+<div class="paragraph">
+<p>If idle mode is entered, you will hear an audible “di-dit” or
 see two short flashes (“I” for idle), and the flight state
 machine is disengaged, thus no ejection charges will fire.
 Idle mode is useful for configuring the altimeter, for
 extracting data from the on-board storage chip after
-flight, and for ground testing pyro charges.</p><p>In “Idle” and “Pad” modes, once the mode indication
+flight, and for ground testing pyro charges.</p>
+</div>
+<div class="paragraph">
+<p>In “Idle” and “Pad” modes, once the mode indication
 beeps/flashes and continuity indication has been sent, if
 there is no space available to log the flight in on-board
 memory, the flight computer will emit a warbling tone (much
-slower than the “no continuity tone”)</p><p>See <a class="xref" href="#_understanding_beeps" title="3.5. Understanding Beeps">Section 3.5, “Understanding Beeps”</a> for a summary of all of
-the audio signals used.</p><p>Once landed, the flight computer will signal that by emitting
+slower than the “no continuity tone”)</p>
+</div>
+<div class="paragraph">
+<p>See <a href="#_understanding_beeps">Understanding Beeps</a> for a summary of all of
+the audio signals used.</p>
+</div>
+<div class="paragraph">
+<p>Once landed, the flight computer will signal that by emitting
 the “Landed” sound described above, after which it will beep
 out the apogee height (in meters). Each digit is represented
 by a sequence of short “dit” beeps, with a pause between
 digits. A zero digit is represented with one long “dah”
 beep. The flight computer will continue to report landed mode
-and beep out the maximum height until turned off.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_ground_testing"></a>A.2. Ground Testing</h2></div></div></div><p>An important aspect of preparing a rocket using electronic deployment
-for flight is ground testing the recovery system.</p><p>Just prep the rocket for flight, then power up the altimeter
+and beep out the maximum height until turned off.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_ground_testing">A.2. Ground Testing</h3>
+<div class="paragraph">
+<p>An important aspect of preparing a rocket using electronic deployment
+for flight is ground testing the recovery system.</p>
+</div>
+<div class="paragraph">
+<p>Just prep the rocket for flight, then power up the altimeter
 in “idle”
 mode.
 You can now command the altimeter to fire the apogee
 or main charges from a safe distance using your
-computer and the Fire Igniter tab to complete ejection testing.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_configurable_parameters"></a>A.3. Configurable Parameters</h2></div></div></div><p>Configuring an Altus Metrum altimeter for flight is
+computer and the Fire Igniter tab to complete ejection testing.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configurable_parameters">A.3. Configurable Parameters</h3>
+<div class="paragraph">
+<p>Configuring an Altus Metrum altimeter for flight is
 very simple.  Even on our baro-only TeleMini and
 EasyMini boards, the use of a Kalman filter means
 there is no need to set a “mach delay”.  All of the
 configurable parameters can be set using AltosUI. Read
-<a class="xref" href="#_configure_altimeter" title="7.5. Configure Altimeter">Section 7.5, “Configure Altimeter”</a> for more information.</p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_handling_precautions"></a>Appendix B. Handling Precautions</h1></div></div></div><p>All Altus Metrum products are sophisticated electronic devices.
+<a href="#_configure_altimeter">Configure Altimeter</a> for more information.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_handling_precautions">Appendix B: Handling Precautions</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>All Altus Metrum products are sophisticated electronic devices.
 When handled gently and properly installed in an air-frame, they
 will deliver impressive results.  However, as with all electronic
-devices, there are some precautions you must take.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>The Lithium Polymer rechargeable batteries have an
+devices, there are some precautions you must take.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+The Lithium Polymer rechargeable batteries have an
 extraordinary power density.  This is great because we can fly with
 much less battery mass than if we used alkaline batteries or previous
-generation rechargeable batteries but if they are punctured
+generation rechargeable batteries&#8230;&#8203; but if they are punctured
 or their leads are allowed to short, they can and will release their
 energy very rapidly!
 Thus we recommend that you take some care when handling our batteries
 and consider giving them some extra protection in your air-frame.  We
 often wrap them in suitable scraps of closed-cell packing foam before
-strapping them down, for example.</p></div><p>The barometric sensors used on all of our flight computers are
+strapping them down, for example.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>The barometric sensors used on all of our flight computers are
 sensitive to sunlight.  In normal mounting situations, the baro sensor
 and all of the other surface mount components
 are “down” towards whatever the underlying mounting surface is, so
@@ -590,391 +1552,1149 @@ consider this with TeleMini v1.0, both because the baro sensor is on the
 use clear plastic for the payload bay!  Replacing these with an opaque
 cardboard tube, painting them, or wrapping them with a layer of masking
 tape are all reasonable approaches to keep the sensor out of direct
-sunlight.</p><p>The barometric sensor sampling port must be able to “breathe”,
+sunlight.</p>
+</div>
+<div class="paragraph">
+<p>The barometric sensor sampling port must be able to “breathe”,
 both by not being covered by foam or tape or other materials that might
 directly block the hole on the top of the sensor, and also by having a
-suitable static vent to outside air.</p><p>As with all other rocketry electronics, Altus Metrum altimeters must
+suitable static vent to outside air.</p>
+</div>
+<div class="paragraph">
+<p>As with all other rocketry electronics, Altus Metrum altimeters must
 be protected from exposure to corrosive motor exhaust and ejection
-charge gasses.</p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_updating_device_firmware"></a>Appendix C. Updating Device Firmware</h1></div></div></div><p>EasyMini is
+charge gasses.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_updating_device_firmware">Appendix C: Updating Device Firmware</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>EasyMini is
 programmed directly over their USB connectors (self
-programming).</p><p>You may wish to begin by ensuring you have current firmware
+programming).</p>
+</div>
+<div class="paragraph">
+<p>You may wish to begin by ensuring you have current firmware
 images.  These are distributed as part of the AltOS software
 bundle that also includes the AltosUI ground station program.
 Newer ground station versions typically work fine with older
-firmware versions, so you dont need to update your devices
+firmware versions, so you don&#8217;t need to update your devices
 just to try out new software features.  You can always
 download the most recent version from
-<a class="ulink" href="http://www.altusmetrum.org/AltOS/" target="_top">http://www.altusmetrum.org/AltOS/</a></p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_updating_easymini_firmware"></a>C.1. Updating EasyMini Firmware</h2></div></div></div><p>Self-programmable devices are reprogrammed by
-connecting them to your computer over USB.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Attach a battery if necessary and power switch to
-the target device. Power up the device.
-</li><li class="listitem">
-Using a Micro USB cable, connect the target device to your
-computer’s USB socket.
-</li><li class="listitem">
-Run AltosUI, and select <span class="emphasis"><em>Flash Image</em></span> from the File menu.
-</li><li class="listitem">
-Select the target device in the Device Selection dialog.
-</li><li class="listitem">
-Select the image you want to flash to the device,
+<a href="http://www.altusmetrum.org/AltOS/" class="bare">http://www.altusmetrum.org/AltOS/</a></p>
+</div>
+<div class="sect2">
+<h3 id="_updating_easymini_firmware">C.1. Updating EasyMini Firmware</h3>
+<div class="paragraph">
+<p>Self-programmable devices are reprogrammed by
+connecting them to your computer over USB.</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Attach a battery if necessary and power switch to
+the target device. Power up the device.</p>
+</li>
+<li>
+<p>Using a Micro USB cable, connect the target device to your
+computer&#8217;s USB socket.</p>
+</li>
+<li>
+<p>Run AltosUI, and select 'Flash Image' from the File menu.</p>
+</li>
+<li>
+<p>Select the target device in the Device Selection dialog.</p>
+</li>
+<li>
+<p>Select the image you want to flash to the device,
 which should have a name in the form
 &lt;product&gt;-v&lt;product-version&gt;-&lt;software-version&gt;.ihx,
-such as EasyMini-v1.0-1.6.0.ihx.
-</li><li class="listitem">
-Make sure the configuration parameters are
+such as EasyMini-v1.0-1.6.0.ihx.</p>
+</li>
+<li>
+<p>Make sure the configuration parameters are
 reasonable looking. If the serial number and/or RF
-configuration values aren’t right, you’ll need to
-change them.
-</li><li class="listitem">
-Hit the <span class="emphasis"><em>OK</em></span> button and the software should proceed
+configuration values aren&#8217;t right, you&#8217;ll need to
+change them.</p>
+</li>
+<li>
+<p>Hit the 'OK' button and the software should proceed
 to flash the device with new firmware, showing a
-progress bar.
-</li><li class="listitem">
-Verify that the device is working by using the
-<span class="emphasis"><em>Configure Altimeter</em></span> or <span class="emphasis"><em>Configure Groundstation</em></span>
-item to check over the configuration.
-</li></ol></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_recovering_from_self_flashing_failure"></a>C.1.1. Recovering From Self-Flashing Failure</h3></div></div></div><p>If the firmware loading fails, it can leave the device
+progress bar.</p>
+</li>
+<li>
+<p>Verify that the device is working by using the
+'Configure Altimeter' or 'Configure Groundstation'
+item to check over the configuration.</p>
+</li>
+</ol>
+</div>
+<div class="sect3">
+<h4 id="_recovering_from_self_flashing_failure">C.1.1. Recovering From Self-Flashing Failure</h4>
+<div class="paragraph">
+<p>If the firmware loading fails, it can leave the device
 unable to boot. Not to worry, you can force the device to
 start the boot loader instead, which will let you try to
-flash the device again.</p><p>On each device, connecting two pins from one of the exposed
+flash the device again.</p>
+</div>
+<div class="paragraph">
+<p>On each device, connecting two pins from one of the exposed
 connectors will force the boot loader to start, even if the
-regular operating system has been corrupted in some way.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-EasyMini
-</span></dt><dd>
-Connect pin 6 and pin 1 of the debug connector, which
+regular operating system has been corrupted in some way.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">EasyMini</dt>
+<dd>
+<p>Connect pin 6 and pin 1 of the debug connector, which
 is the six holes next to the beeper. Pin 1 can be
 identified by the square pad around it, and then the
 pins could sequentially across the board, making Pin 6
-the one on the other end of the row.
-</dd></dl></div><p>Once you’ve located the right pins:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Turn the altimeter power off.
-</li><li class="listitem">
-Connect a battery.
-</li><li class="listitem">
-Connect the indicated terminals together with a
+the one on the other end of the row.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>Once you&#8217;ve located the right pins:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Turn the altimeter power off.</p>
+</li>
+<li>
+<p>Connect a battery.</p>
+</li>
+<li>
+<p>Connect the indicated terminals together with a
 short piece of wire. Take care not to accidentally
-connect anything else.
-</li><li class="listitem">
-Connect USB
-</li><li class="listitem">
-Turn the board power on.
-</li></ol></div><p>The board should now be visible over USB as
-<span class="emphasis"><em>AltosFlash</em></span> and be ready to receive firmware.  Once
+connect anything else.</p>
+</li>
+<li>
+<p>Connect USB</p>
+</li>
+<li>
+<p>Turn the board power on.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>The board should now be visible over USB as
+'AltosFlash' and be ready to receive firmware.  Once
 the board has been powered up, you can remove the
-piece of wire.</p></div></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_flight_data_recording"></a>Appendix D. Flight Data Recording</h1></div></div></div><p>Each flight computer logs data at 100 samples per second
+piece of wire.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_flight_data_recording">Appendix D: Flight Data Recording</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Each flight computer logs data at 100 samples per second
 during ascent and 10 samples per second during
 descent.
 Data are logged to
 an on-board flash memory part, which can be partitioned into
-several equal-sized blocks, one for each flight.</p><div class="table"><a id="idm696"></a><p class="title"><strong>Table D.1. Data Storage on Altus Metrum altimeters</strong></p><div class="table-contents"><table class="table" summary="Data Storage on Altus Metrum altimeters" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Device                 </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Bytes per Sample       </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Total Storage  </th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Minutes at Full Rate</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>EasyMini</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>1MB</p></td><td style="" align="left" valign="top"><p>10</p></td></tr></tbody></table></div></div><br class="table-break" /><p>The on-board flash is partitioned into separate flight logs,
+several equal-sized blocks, one for each flight.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 4. Data Storage on Altus Metrum altimeters</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 25%;">
+<col style="width: 25%;">
+<col style="width: 25%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Device</th>
+<th class="tableblock halign-left valign-top">Bytes per Sample</th>
+<th class="tableblock halign-left valign-top">Total Storage</th>
+<th class="tableblock halign-left valign-top">Minutes at Full Rate</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMini</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The on-board flash is partitioned into separate flight logs,
 each of a fixed maximum size. Increase the maximum size of
 each log and you reduce the number of flights that can be
-stored. Decrease the size and you can store more flights.</p><p>Configuration data is also stored in the flash memory on
+stored. Decrease the size and you can store more flights.</p>
+</div>
+<div class="paragraph">
+<p>Configuration data is also stored in the flash memory on
 EasyMini.
 This consumes 64kB
 of flash space.  This configuration space is not available
-for storing flight log data.</p><p>To compute the amount of space needed for a single flight, you
+for storing flight log data.</p>
+</div>
+<div class="paragraph">
+<p>To compute the amount of space needed for a single flight, you
 can multiply the expected ascent time (in seconds) by 100
 times bytes-per-sample, multiply the expected descent time (in
 seconds) by 10 times the bytes per sample and add the two
 together. That will slightly under-estimate the storage (in
-bytes) needed for the flight.</p><p>The default size allows for several flights on each flight
+bytes) needed for the flight.</p>
+</div>
+<div class="paragraph">
+<p>The default size allows for several flights on each flight
 computer.
-You can adjust the size.</p><p>Altus Metrum flight computers will not overwrite existing
+You can adjust the size.</p>
+</div>
+<div class="paragraph">
+<p>Altus Metrum flight computers will not overwrite existing
 flight data, so be sure to download flight data and erase it
 from the flight computer before it fills up. The flight
 computer will still successfully control the flight even if it
-cannot log data, so the only thing you will lose is the data.</p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_altus_metrum_hardware_specifications"></a>Appendix E. Altus Metrum Hardware Specifications</h1></div></div></div><p>Here’s the full set of Altus Metrum products, both in
-production and retired.</p><div class="table"><a id="idm727"></a><p class="title"><strong>Table E.1. Altus Metrum Flight Computer Electronics</strong></p><div class="table-contents"><table class="table" summary="Altus Metrum Flight Computer Electronics" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /><col class="col_5" /><col class="col_6" /><col class="col_7" /><col class="col_8" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Device </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> Barometer </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> Z-axis accel </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> GPS </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> 3D sensors </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> Storage </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"> RF Output </th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top"> Battery</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>EasyMini v1.0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1MB</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3.7-12V</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>EasyMini v2.0</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>MS5607 30km (100k')</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>1MB</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>-</p></td><td style="" align="left" valign="top"><p>3.7-12V</p></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="idm784"></a><p class="title"><strong>Table E.2. Altus Metrum Flight Computer Mechanical Components</strong></p><div class="table-contents"><table class="table" summary="Altus Metrum Flight Computer Mechanical Components" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /><col class="col_5" /><col class="col_6" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Device</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Connectors</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Screw Terminals</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Width</th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Length</th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Tube Size</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>EasyMini</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Debug USB Battery</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Apogee pyro Main pyro Battery</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0.8 inch (2.03cm)</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>1½ inch (3.81cm)</p></td><td style="" align="left" valign="top"><p>24mm coupler</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_release_notes"></a>Appendix F. Release Notes</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_6"></a>F.1. Release Notes for Version 1.8.6</h2></div></div></div><p>Version 1.8.6</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos"></a>F.1.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Use maximum of 64 previous tilt values in pyro tilt tests
-</li><li class="listitem">
-Eliminate 100m height requirement for coast detection
-</li><li class="listitem">
-Change After Motor pyro check to be &gt;= instead of ==
-</li><li class="listitem">
-Change Time since Boost to be Time since launch.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps"></a>F.1.2. AltosUI, TeleGPS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Clarify pyro test phrasing
-</li><li class="listitem">
-Remove ascending/descending from pyro config UI
-</li><li class="listitem">
-Fix accel calibration in Antenna Down mode
-</li><li class="listitem">
-Add mag sensor reporting for TeleMega v3 idle monitoring.
-</li><li class="listitem">
-Fix radio parameter saving at 2400 bps telmetry rate.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_micropeak"></a>F.1.3. MicroPeak</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Report altimeter-recorded maximum height value
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_5"></a>F.2. Release Notes for Version 1.8.5</h2></div></div></div><p>Version 1.8.5 includes fixes to the ground software support
-for TeleBT v4, along with a few other minor updates.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_2"></a>F.2.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix startup beeps that indicate sensor failures.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_2"></a>F.2.2. AltosUI, TeleGPS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-When updating device firmware, make sure selected firmware
-matches target device.
-</li><li class="listitem">
-Correct Bluetooth device matching when looking for TeleBT
-devices.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_4"></a>F.3. Release Notes for Version 1.8.4</h2></div></div></div><p>Version 1.8.4 includes support for EasyMini version 2.0</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_3"></a>F.3.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for EasyMini version 2.0 hardware.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_3"></a>F.4. Release Notes for Version 1.8.3</h2></div></div></div><p>Version 1.8.3 includes support for TeleMega version 3.0 along
+cannot log data, so the only thing you will lose is the data.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_altus_metrum_hardware_specifications">Appendix E: Altus Metrum Hardware Specifications</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Here&#8217;s the full set of Altus Metrum products, both in
+production and retired.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 5. Altus Metrum Flight Computer Electronics</caption>
+<colgroup>
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+<col style="width: 12.5%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Device</th>
+<th class="tableblock halign-left valign-top">Barometer</th>
+<th class="tableblock halign-left valign-top">Z-axis accel</th>
+<th class="tableblock halign-left valign-top">GPS</th>
+<th class="tableblock halign-left valign-top">3D sensors</th>
+<th class="tableblock halign-left valign-top">Storage</th>
+<th class="tableblock halign-left valign-top">RF Output</th>
+<th class="tableblock halign-left valign-top">Battery</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMini v1.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7-12V</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMini v2.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">MS5607 30km (100k')</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1MB</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">-</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3.7-12V</p></td>
+</tr>
+</tbody>
+</table>
+<div style="page-break-after: always;"></div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 6. Altus Metrum Flight Computer Mechanical Components</caption>
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 16.6666%;">
+<col style="width: 16.667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Device</th>
+<th class="tableblock halign-left valign-top">Connectors</th>
+<th class="tableblock halign-left valign-top">Screw Terminals</th>
+<th class="tableblock halign-left valign-top">Width</th>
+<th class="tableblock halign-left valign-top">Length</th>
+<th class="tableblock halign-left valign-top">Tube Size</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">EasyMini</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Debug USB Battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee pyro Main pyro Battery</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0.8 inch (2.03cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1½ inch (3.81cm)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24mm coupler</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_release_notes">Appendix F: Release Notes</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_6">F.1. Release Notes for Version 1.8.6</h3>
+<div class="paragraph">
+<p>Version 1.8.6</p>
+</div>
+<div class="sect3">
+<h4 id="_altos">F.1.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Use maximum of 64 previous tilt values in pyro tilt tests</p>
+</li>
+<li>
+<p>Eliminate 100m height requirement for coast detection</p>
+</li>
+<li>
+<p>Change After Motor pyro check to be &gt;= instead of ==</p>
+</li>
+<li>
+<p>Change Time since Boost to be Time since launch.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps">F.1.2. AltosUI, TeleGPS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Clarify pyro test phrasing</p>
+</li>
+<li>
+<p>Remove ascending/descending from pyro config UI</p>
+</li>
+<li>
+<p>Fix accel calibration in Antenna Down mode</p>
+</li>
+<li>
+<p>Add mag sensor reporting for TeleMega v3 idle monitoring.</p>
+</li>
+<li>
+<p>Fix radio parameter saving at 2400 bps telmetry rate.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_micropeak">F.1.3. MicroPeak</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Report altimeter-recorded maximum height value</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_5">F.2. Release Notes for Version 1.8.5</h3>
+<div class="paragraph">
+<p>Version 1.8.5 includes fixes to the ground software support
+for TeleBT v4, along with a few other minor updates.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_2">F.2.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix startup beeps that indicate sensor failures.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_2">F.2.2. AltosUI, TeleGPS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>When updating device firmware, make sure selected firmware
+matches target device.</p>
+</li>
+<li>
+<p>Correct Bluetooth device matching when looking for TeleBT
+devices.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_4">F.3. Release Notes for Version 1.8.4</h3>
+<div class="paragraph">
+<p>Version 1.8.4 includes support for EasyMini version 2.0</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_3">F.3.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for EasyMini version 2.0 hardware.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_3">F.4. Release Notes for Version 1.8.3</h3>
+<div class="paragraph">
+<p>Version 1.8.3 includes support for TeleMega version 3.0 along
 with two important flight computer fixes. This version also
 changes KML export data to make Tripoli Record reporting
 better and some updates to graph presentation and data
-downloading.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_4"></a>F.4.1. AltOS</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altos_new_features"></a>AltOS New Features</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleMega version 3.0 hardware.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altos_bug_fixes"></a>AltOS Bug Fixes</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Ground testing EasyMega and TeleMega additional pyro
-channels could result in a sticky <span class="emphasis"><em>fired</em></span> status which would
-prevent these channels from firing on future flights.
-</li><li class="listitem">
-Corrupted flight log records could prevent future flights
-from capturing log data.
-</li><li class="listitem">
-Fixed saving of pyro configuration that ended with
-<span class="emphasis"><em>Descending</em></span>.
-</li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications"></a>F.4.2. AltosUI and TeleGPS Applications</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altosui_new_features"></a>AltosUI New Features</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleMega version 3.0.
-</li><li class="listitem">
-Graph lines have improved appearance to make them easier to
+downloading.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_4">F.4.1. AltOS</h4>
+<div class="sect4">
+<h5 id="_altos_new_features">AltOS New Features</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleMega version 3.0 hardware.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_altos_bug_fixes">AltOS Bug Fixes</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Ground testing EasyMega and TeleMega additional pyro
+channels could result in a sticky 'fired' status which would
+prevent these channels from firing on future flights.</p>
+</li>
+<li>
+<p>Corrupted flight log records could prevent future flights
+from capturing log data.</p>
+</li>
+<li>
+<p>Fixed saving of pyro configuration that ended with
+'Descending'.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications">F.4.2. AltosUI and TeleGPS Applications</h4>
+<div class="sect4">
+<h5 id="_altosui_new_features">AltosUI New Features</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleMega version 3.0.</p>
+</li>
+<li>
+<p>Graph lines have improved appearance to make them easier to
 distinguish. Markers may be placed at data points to show
-captured recorded data values.
-</li><li class="listitem">
-Graphing offers the ability to adjust the smoothing of
-computed speed and acceleration data.
-</li><li class="listitem">
-The download dialog now offers to graph new flights, checks
+captured recorded data values.</p>
+</li>
+<li>
+<p>Graphing offers the ability to adjust the smoothing of
+computed speed and acceleration data.</p>
+</li>
+<li>
+<p>The download dialog now offers to graph new flights, checks
 for existing files to avoid overwriting data and reports if
-there are checksum errors in the downloaded data.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altosui_telegps_bug_fixes"></a>AltosUI/TeleGPS Bug Fixes</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Restore TeleGPS tracking behavior.
-</li><li class="listitem">
-Display flight computer call sign and serial number in
-Monitor Idle mode instead of ground station values.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altosui_and_telegps_changes"></a>AltosUI and TeleGPS Changes</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-KML export now reports both barometric and GPS altitude data
-to make it more useful for Tripoli record reporting.
-</li><li class="listitem">
-CSV export now includes TeleMega/EasyMega pyro voltages and
-tilt angle.
-</li></ul></div><p></p></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_2"></a>F.5. Release Notes for Version 1.8.2</h2></div></div></div><p>Version 1.8.2 includes support for TeleGPS version 2.0 along
-with accelerometer recalibration support in AltosUI.</p><p>1.8.2 also contains a couple of minor fixes for AltosUI when
-analyzing saved data files.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_5"></a>F.5.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleGPS version 2.0 hardware.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_2"></a>F.5.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleGPS version 2.0.
-</li><li class="listitem">
-Accelerometer re-calibration user interface.
-</li></ul></div><p>AltosUI and TeleGPS Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Prevent some crashes when reading older saved flight data
-for graphing or KML export.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_1"></a>F.6. Release Notes for Version 1.8.1</h2></div></div></div><p>Version 1.8.1 includes an important bug fix for Apogee Lockout
+there are checksum errors in the downloaded data.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_altosuitelegps_bug_fixes">AltosUI/TeleGPS Bug Fixes</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Restore TeleGPS tracking behavior.</p>
+</li>
+<li>
+<p>Display flight computer call sign and serial number in
+Monitor Idle mode instead of ground station values.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_altosui_and_telegps_changes">AltosUI and TeleGPS Changes</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>KML export now reports both barometric and GPS altitude data
+to make it more useful for Tripoli record reporting.</p>
+</li>
+<li>
+<p>CSV export now includes TeleMega/EasyMega pyro voltages and
+tilt angle.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_2">F.5. Release Notes for Version 1.8.2</h3>
+<div class="paragraph">
+<p>Version 1.8.2 includes support for TeleGPS version 2.0 along
+with accelerometer recalibration support in AltosUI.</p>
+</div>
+<div class="paragraph">
+<p>1.8.2 also contains a couple of minor fixes for AltosUI when
+analyzing saved data files.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_5">F.5.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleGPS version 2.0 hardware.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_2">F.5.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleGPS version 2.0.</p>
+</li>
+<li>
+<p>Accelerometer re-calibration user interface.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Prevent some crashes when reading older saved flight data
+for graphing or KML export.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_1">F.6. Release Notes for Version 1.8.1</h3>
+<div class="paragraph">
+<p>Version 1.8.1 includes an important bug fix for Apogee Lockout
 operation in all flight computers. Anyone using this option
-must update firmware.</p><p>This release also contains a change in how flight computers
+must update firmware.</p>
+</div>
+<div class="paragraph">
+<p>This release also contains a change in how flight computers
 with accelerometers deal with speeds around and above Mach
 1. In previous versions, the flight computer would completely
 disregard the barometric sensor above 330m/s (around Mach
 1). Now, the data from the barometric sensor is reduced in
 effect without ever going away entirely. This prevents early
 drogue deployment for flights which spend considerable time
-above Mach 1.</p><p>1.8.1 also contains a couple of minor fixes for AltosUI when
-analyzing saved data files.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_6"></a>F.6.1. AltOS</h3></div></div></div><p>AltOS Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Handle time value wrapping in Apogee Lockout
+above Mach 1.</p>
+</div>
+<div class="paragraph">
+<p>1.8.1 also contains a couple of minor fixes for AltosUI when
+analyzing saved data files.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_6">F.6.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Handle time value wrapping in Apogee Lockout
 correctly. Without this, apogee lockout would sometimes
-prevent any drogue charge from firing.
-</li><li class="listitem">
-Change Kalman filter on flight computers with accelerometer
+prevent any drogue charge from firing.</p>
+</li>
+<li>
+<p>Change Kalman filter on flight computers with accelerometer
 to continue using the barometric sensor even at high speeds
 to avoid unintentional drogue deployment during
-deceleration.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_3"></a>F.6.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add new <span class="emphasis"><em>Huge</em></span> font size to make text even bigger on high
-resolution monitors.
-</li></ul></div><p>AltosUI Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Prevent some crashes when reading older saved flight data
-for graphing or KML export.
-</li><li class="listitem">
-Load frequency preference at startup. The loading code was
-broken, so you’d see only the default frequencies.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8"></a>F.7. Release Notes for Version 1.8</h2></div></div></div><p>Version 1.8 includes support for our new TeleBT v4.0 ground
+deceleration.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_3">F.6.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add new 'Huge' font size to make text even bigger on high
+resolution monitors.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Prevent some crashes when reading older saved flight data
+for graphing or KML export.</p>
+</li>
+<li>
+<p>Load frequency preference at startup. The loading code was
+broken, so you&#8217;d see only the default frequencies.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8">F.7. Release Notes for Version 1.8</h3>
+<div class="paragraph">
+<p>Version 1.8 includes support for our new TeleBT v4.0 ground
 station, updates for data analysis in our ground station
 software and bug fixes in in the flight software for all our
-boards and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_7"></a>F.7.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleBT v4.0 boards.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_4"></a>F.7.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleBT v4.0 hardware
-</li><li class="listitem">
-Rewrite graphing and export functions. This code now handles
+boards and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_7">F.7.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleBT v4.0 boards.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_4">F.7.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleBT v4.0 hardware</p>
+</li>
+<li>
+<p>Rewrite graphing and export functions. This code now handles
 each data series separately so that graphs are drawn
 correctly. Smoothing now uses a filter that looks both
 forward and backwards in time to make computed speed and
-acceleration data more accurate.
-</li></ul></div><p>AltosUI Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Correct axis labeling of magnetic sensor in TeleMega and
-EasyMega. The Y and Z axes were flipped.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_7"></a>F.8. Release Notes for Version 1.7</h2></div></div></div><p>Version 1.7 includes support for our new TeleMini v3.0
+acceleration data more accurate.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Correct axis labeling of magnetic sensor in TeleMega and
+EasyMega. The Y and Z axes were flipped.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_7">F.8. Release Notes for Version 1.7</h3>
+<div class="paragraph">
+<p>Version 1.7 includes support for our new TeleMini v3.0
 flight computer and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_8"></a>F.8.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleMini v3.0 boards.
-</li></ul></div><p>AltOS Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix interrupt priorities on STM32L processors. Run timer
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_8">F.8.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleMini v3.0 boards.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix interrupt priorities on STM32L processors. Run timer
 interrupt at lowest priority so that device interrupts get
-serviced first.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_5"></a>F.8.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleMini v3.0 hardware
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_8"></a>F.9. Release Notes for Version 1.6.8</h2></div></div></div><p>Version 1.6.8 fixes a TeleMega and TeleMetrum v2.0 bug where
+serviced first.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_5">F.8.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleMini v3.0 hardware</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_8">F.9. Release Notes for Version 1.6.8</h3>
+<div class="paragraph">
+<p>Version 1.6.8 fixes a TeleMega and TeleMetrum v2.0 bug where
 the device could stop logging data and transmitting
 telemetry in flight. All TeleMega v1.0, v2.0 and TeleMetrum
-v2.0 users should update their flight firmware.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_9"></a>F.9.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix STM32L DMA driver to work around STM32L SoC DMA priority
+v2.0 users should update their flight firmware.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_9">F.9.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix STM32L DMA driver to work around STM32L SoC DMA priority
 issue t lock-up in the logging or radio code, either of
-which could stop data logging and telemetry.
-</li><li class="listitem">
-Avoid having TeleBT battery status values smash telemetry
-packet data by holding a lock during both operations.
-</li><li class="listitem">
-Don’t start reporting <span class="emphasis"><em>flight 0</em></span> when the log fills in
-flight.
-</li></ul></div><p>AltOS changes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Flash LEDS on all products briefly during power up so that
-they can be tested during production.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_and_altosdroid_applications"></a>F.9.2. AltosUI, TeleGPS and AltosDroid Applications</h3></div></div></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Re-enable go/no-go entries after they’ve been disabled due
+which could stop data logging and telemetry.</p>
+</li>
+<li>
+<p>Avoid having TeleBT battery status values smash telemetry
+packet data by holding a lock during both operations.</p>
+</li>
+<li>
+<p>Don&#8217;t start reporting 'flight 0' when the log fills in
+flight.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS changes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Flash LEDS on all products briefly during power up so that
+they can be tested during production.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_and_altosdroid_applications">F.9.2. AltosUI, TeleGPS and AltosDroid Applications</h4>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Re-enable go/no-go entries after they&#8217;ve been disabled due
 to lack of data. If telemetry information is delayed when
 the Ui starts up, sometimes important fields would get
-disabled to never re-appear.
-</li><li class="listitem">
-Deal with ground station failure better during Configure
-Ground Station operation by cleaning up pending operations.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_5"></a>F.10. Release Notes for Version 1.6.5</h2></div></div></div><p>Version 1.6.5 fixes a TeleMega and TeleMetrum v2.0 bug where
+disabled to never re-appear.</p>
+</li>
+<li>
+<p>Deal with ground station failure better during Configure
+Ground Station operation by cleaning up pending operations.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_5">F.10. Release Notes for Version 1.6.5</h3>
+<div class="paragraph">
+<p>Version 1.6.5 fixes a TeleMega and TeleMetrum v2.0 bug where
 the device would often stop logging data and transmitting
 telemetry in flight. All TeleMega v1.0, v2.0 and TeleMetrum
-v2.0 users should update their flight firmware.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_10"></a>F.10.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix STM32L SPI driver to prevent lock-up in the logging or
+v2.0 users should update their flight firmware.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_10">F.10.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix STM32L SPI driver to prevent lock-up in the logging or
 radio code, either of which could stop data logging and
 telemetry. Found and characterized by Chuck Haskin, who also
-tested the new firmware before release.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_and_altosdroid_applications_2"></a>F.10.2. AltosUI, TeleGPS and AltosDroid Applications</h3></div></div></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Deliver firmward for TeleMega v2.0 and TeleBT v3.0 with
-Windows package.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_4"></a>F.11. Release Notes for Version 1.6.4</h2></div></div></div><p>Version 1.6.4 fixes a bluetooth communication problem with
+tested the new firmware before release.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_and_altosdroid_applications_2">F.10.2. AltosUI, TeleGPS and AltosDroid Applications</h4>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Deliver firmward for TeleMega v2.0 and TeleBT v3.0 with
+Windows package.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_4">F.11. Release Notes for Version 1.6.4</h3>
+<div class="paragraph">
+<p>Version 1.6.4 fixes a bluetooth communication problem with
 TeleBT v1.0 devices, along with some altosui and altosdroid
-minor nits. It also now ships firmware for some newer devices.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_11"></a>F.11.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix hardware flow control on TeleBT v1.0. Hardware RTS/CTS
-doesn’t seem to work, switch from using the hardware to
-driving these pins with software.
-</li><li class="listitem">
-Fix ARM USB drivers to deal with OS restarts. Needed to
+minor nits. It also now ships firmware for some newer devices.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_11">F.11.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix hardware flow control on TeleBT v1.0. Hardware RTS/CTS
+doesn&#8217;t seem to work, switch from using the hardware to
+driving these pins with software.</p>
+</li>
+<li>
+<p>Fix ARM USB drivers to deal with OS restarts. Needed to
 reset all USB-related state when the USB bus is reset. These
-fixes affect all STM32L, STM32F0 and LPC11U14 based devices.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_and_altosdroid_applications_3"></a>F.11.2. AltosUI, TeleGPS and AltosDroid Applications</h3></div></div></div><p>AltosUI, TeleGPS and AltosDroid New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Automatically switch from meters or feet to kilometers or
-miles for distance units.
-</li><li class="listitem">
-Add Monitor Idle mode to TeleGPS application.
-</li></ul></div><p>AltosUI, TeleGPS and AltosDroid Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Abort map preloading when the preload map dialog is closed.
-</li><li class="listitem">
-In AltosDroid, Don’t reconnect to last device if the user
+fixes affect all STM32L, STM32F0 and LPC11U14 based devices.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_and_altosdroid_applications_3">F.11.2. AltosUI, TeleGPS and AltosDroid Applications</h4>
+<div class="paragraph">
+<p>AltosUI, TeleGPS and AltosDroid New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Automatically switch from meters or feet to kilometers or
+miles for distance units.</p>
+</li>
+<li>
+<p>Add Monitor Idle mode to TeleGPS application.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI, TeleGPS and AltosDroid Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Abort map preloading when the preload map dialog is closed.</p>
+</li>
+<li>
+<p>In AltosDroid, Don&#8217;t reconnect to last device if the user
 had disconnected it the last time the application was
-active.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation"></a>F.11.3. Documentation</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Mention TeleMega v2.0 in hardware specs table.
-</li><li class="listitem">
-Document TeleGPS RF output in telegps manual.
-</li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_3"></a>F.12. Release Notes for Version 1.6.3</h2></div></div></div><p>Version 1.6.3 adds idle mode to AltosDroid and has bug fixes
+active.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation">F.11.3. Documentation</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Mention TeleMega v2.0 in hardware specs table.</p>
+</li>
+<li>
+<p>Document TeleGPS RF output in telegps manual.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_3">F.12. Release Notes for Version 1.6.3</h3>
+<div class="paragraph">
+<p>Version 1.6.3 adds idle mode to AltosDroid and has bug fixes
 for our host software on desktops, laptops an android devices
-along with BlueTooth support for Windows.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_12"></a>F.12.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix hardware flow control on TeleBT v3.0. RTS/CTS is
+along with BlueTooth support for Windows.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_12">F.12.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix hardware flow control on TeleBT v3.0. RTS/CTS is
 wired backwards on this board, switch from using the
-hardware to driving these pins with software.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_6"></a>F.12.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add BlueTooth support for Windows operating system. This
+hardware to driving these pins with software.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_6">F.12.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add BlueTooth support for Windows operating system. This
 supports connections to TeleBT over BlueTooth rather than
-just USB.
-</li></ul></div><p>AltosUI and TeleGPS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Change Java detection and install on Windows. Detection is
-now done by looking for the <span class="emphasis"><em>javaw.exe</em></span> program, and
-installation by opening a browser on the java.com web site.
-</li><li class="listitem">
-Delay polling while the Fire Igniters is visible to allow
-for TeleMega to report back complete status over the radio.
-</li><li class="listitem">
-Disallow changing RF calibration numbers in the
-configuration UI. There’s no good reason to change this from
-the field, and recovering is really hard if you haven’t
-written down the right number.
-</li><li class="listitem">
-Fix USB device discovery on Mac OS X El Capitan. This makes
-the connected Altus Metrum USB devices appear again.
-</li><li class="listitem">
-Fix acceleration data presented in MonitorIdle mode for
-TeleMetrum v2.0 flight computers.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosdroid"></a>F.12.3. AltosDroid</h3></div></div></div><p>AltosDroid new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Monitor Idle mode. Check state of flight computer while in
-idle mode over the radio link
-</li><li class="listitem">
-Fire Igniters. Remotely fire ignires for recovery system
-ground tests.
-</li><li class="listitem">
-Remote reboot. Cause the flight computer to reboot over the
+just USB.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Change Java detection and install on Windows. Detection is
+now done by looking for the 'javaw.exe' program, and
+installation by opening a browser on the java.com web site.</p>
+</li>
+<li>
+<p>Delay polling while the Fire Igniters is visible to allow
+for TeleMega to report back complete status over the radio.</p>
+</li>
+<li>
+<p>Disallow changing RF calibration numbers in the
+configuration UI. There&#8217;s no good reason to change this from
+the field, and recovering is really hard if you haven&#8217;t
+written down the right number.</p>
+</li>
+<li>
+<p>Fix USB device discovery on Mac OS X El Capitan. This makes
+the connected Altus Metrum USB devices appear again.</p>
+</li>
+<li>
+<p>Fix acceleration data presented in MonitorIdle mode for
+TeleMetrum v2.0 flight computers.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosdroid">F.12.3. AltosDroid</h4>
+<div class="paragraph">
+<p>AltosDroid new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Monitor Idle mode. Check state of flight computer while in
+idle mode over the radio link</p>
+</li>
+<li>
+<p>Fire Igniters. Remotely fire ignires for recovery system
+ground tests.</p>
+</li>
+<li>
+<p>Remote reboot. Cause the flight computer to reboot over the
 radio link. This provides a method for switching the flight
 computer from idle to flight mode without needing to reach
-the power switch.
-</li><li class="listitem">
-Configurable frequency menu. Change the set of available
-frequencies and provide more descriptive names.
-</li></ul></div><p>AltosDroid bug fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Don’t set target location if GPS hasn’t locked yet.
-</li><li class="listitem">
-Fix saving target states so they can be reloaded when the
+the power switch.</p>
+</li>
+<li>
+<p>Configurable frequency menu. Change the set of available
+frequencies and provide more descriptive names.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosDroid bug fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Don&#8217;t set target location if GPS hasn&#8217;t locked yet.</p>
+</li>
+<li>
+<p>Fix saving target states so they can be reloaded when the
 application restarts. When the application is shut down and
 restarted, all previous target state information will be
-restored (including GPS position if available).
-</li><li class="listitem">
-Fix crash on some Android devices for offline maps when
-changing the map scale or location.
-</li><li class="listitem">
-Don’t require USB OTG support. This kept the latest
+restored (including GPS position if available).</p>
+</li>
+<li>
+<p>Fix crash on some Android devices for offline maps when
+changing the map scale or location.</p>
+</li>
+<li>
+<p>Don&#8217;t require USB OTG support. This kept the latest
 AltosDroid from being offered on devices without USB device
 support, although it can work without that just fine using
-BlueTooth.
-</li><li class="listitem">
-Don’t require bluetooth to be enabled. This allows the
+BlueTooth.</p>
+</li>
+<li>
+<p>Don&#8217;t require bluetooth to be enabled. This allows the
 application to operate with USB devices or just show old
-data without turning on the bluetooth radio.
-</li><li class="listitem">
-Recover old tracker positions when restarting
+data without turning on the bluetooth radio.</p>
+</li>
+<li>
+<p>Recover old tracker positions when restarting
 application. This finally allows you to safely stop and
 restart the application without losing the last known
-location of any tracker.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation_2"></a>F.12.4. Documentation</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Document TeleMega and EasyMega additional pyro channel
-continuity audio alert pattern.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_2"></a>F.13. Release Notes for Version 1.6.2</h2></div></div></div><p>Version 1.6.2 includes support for our updated TeleMega v2.0
+location of any tracker.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation_2">F.12.4. Documentation</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Document TeleMega and EasyMega additional pyro channel
+continuity audio alert pattern.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_2">F.13. Release Notes for Version 1.6.2</h3>
+<div class="paragraph">
+<p>Version 1.6.2 includes support for our updated TeleMega v2.0
 product and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_13"></a>F.13.1. AltOS</h3></div></div></div><p>AltOS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleMega v2.0 boards.
-</li><li class="listitem">
-Add PWM servo driver. There’s no higher level code using
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_13">F.13.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleMega v2.0 boards.</p>
+</li>
+<li>
+<p>Add PWM servo driver. There&#8217;s no higher level code using
 this yet, but the driver allows testing of the TeleMega v2.0
-servo output connector.
-</li></ul></div><p>AltOS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Slow down telemetry packets to allow receiver to keep
-up.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_7"></a>F.13.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix post-flight orientation computation when processing
-TeleMega and EasyMega eeprom data files.
-</li><li class="listitem">
-Capture complete eeprom data even when there are invalid
+servo output connector.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Slow down telemetry packets to allow receiver to keep
+up.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_7">F.13.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix post-flight orientation computation when processing
+TeleMega and EasyMega eeprom data files.</p>
+</li>
+<li>
+<p>Capture complete eeprom data even when there are invalid
 entries in the data. This keeps reading eeprom contents and
-writing the associated .eeprom file when an error is detected.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation_3"></a>F.13.3. Documentation</h3></div></div></div><p>We spent a bunch of time trying to improve our documentation</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-HTML versions now have a table of contents on the left side.
-</li><li class="listitem">
-EasyMini now has its own shorter manual.
-</li><li class="listitem">
-Provide links between sections in each document.
-</li><li class="listitem">
-Lots of minor rewriting and restructuring to avoid
-duplication of information
-</li></ul></div></div></div></div></div></body></html>
\ No newline at end of file
+writing the associated .eeprom file when an error is detected.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation_3">F.13.3. Documentation</h4>
+<div class="paragraph">
+<p>We spent a bunch of time trying to improve our documentation</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>HTML versions now have a table of contents on the left side.</p>
+</li>
+<li>
+<p>EasyMini now has its own shorter manual.</p>
+</li>
+<li>
+<p>Provide links between sections in each document.</p>
+</li>
+<li>
+<p>Lots of minor rewriting and restructuring to avoid
+duplication of information</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Version v1.8.7<br>
+Last updated 2019-01-03 00:11:54 -0700
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
index bc03971658a88d1eda49e3993c98935d1c00d2df..d5fb968728628a3c7052d514efa92e9792b37b92 100644 (file)
Binary files a/AltOS/doc/easymini.pdf and b/AltOS/doc/easymini.pdf differ
diff --git a/AltOS/doc/images/icons/caution.svg b/AltOS/doc/images/icons/caution.svg
new file mode 100644 (file)
index 0000000..28babba
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 0 384 512"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="caution.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1574"
+     inkscape:window-height="1186"
+     id="namedview6"
+     showgrid="false"
+     inkscape:zoom="1.592106"
+     inkscape:cx="193.80909"
+     inkscape:cy="256"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="M216 23.858c0-23.802-30.653-32.765-44.149-13.038C48 191.851 224 200 224 288c0 35.629-29.114 64.458-64.85 63.994C123.98 351.538 96 322.22 96 287.046v-85.51c0-21.703-26.471-32.225-41.432-16.504C27.801 213.158 0 261.332 0 320c0 105.869 86.131 192 192 192s192-86.131 192-192c0-170.29-168-193.003-168-296.142z"
+     id="path2"
+     style="fill:#bf3400;fill-opacity:1" />
+</svg>
+<!--
+Font Awesome Free 5.4.2 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+-->
+
diff --git a/AltOS/doc/images/icons/important.svg b/AltOS/doc/images/icons/important.svg
new file mode 100644 (file)
index 0000000..4c5baae
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 0 512 512"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="important.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="944"
+     inkscape:window-height="866"
+     id="namedview6"
+     showgrid="false"
+     inkscape:zoom="0.4609375"
+     inkscape:cx="378.57627"
+     inkscape:cy="256"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"
+     id="path2"
+     style="fill:#bf0000;fill-opacity:1" />
+</svg>
+<!--
+Font Awesome Free 5.4.2 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+-->
+
diff --git a/AltOS/doc/images/icons/note.svg b/AltOS/doc/images/icons/note.svg
new file mode 100644 (file)
index 0000000..92f636c
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 0 512 512"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="note.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1737"
+     inkscape:window-height="1219"
+     id="namedview6"
+     showgrid="false"
+     inkscape:zoom="1.8527527"
+     inkscape:cx="257.55137"
+     inkscape:cy="256"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"
+     id="path2"
+     style="fill:#19407c;fill-opacity:1" />
+</svg>
+<!--
+Font Awesome Free 5.4.2 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+-->
+
diff --git a/AltOS/doc/images/icons/tip.svg b/AltOS/doc/images/icons/tip.svg
new file mode 100644 (file)
index 0000000..f645f63
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 0 352 512"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="tip.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1737"
+     inkscape:window-height="1304"
+     id="namedview6"
+     showgrid="false"
+     inkscape:zoom="2.0057983"
+     inkscape:cx="175.98644"
+     inkscape:cy="256"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z"
+     id="path2"
+     style="fill:#dfd000;fill-opacity:1" />
+</svg>
+<!--
+Font Awesome Free 5.4.2 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+-->
+
diff --git a/AltOS/doc/images/icons/warning.svg b/AltOS/doc/images/icons/warning.svg
new file mode 100644 (file)
index 0000000..938d7b3
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   viewBox="0 0 576.00019 512"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="warning.svg"
+   width="576.00018"
+   height="512"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="2557"
+     inkscape:window-height="1544"
+     id="namedview6"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="2.4379272"
+     inkscape:cx="170.99331"
+     inkscape:cy="256"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="m 569.51729,440.013 c 18.458,31.994 -4.711,71.987 -41.577,71.987 H 48.054283 C 11.117287,512 -11.944713,471.945 6.4772867,440.013 L 246.42329,23.985005 c 18.467,-32.0090001 64.72,-31.9510001 83.154,0 z M 288.00029,354 c -25.405,0 -46,20.595 -46,46 0,25.405 20.595,46 46,46 25.405,0 46,-20.595 46,-46 0,-25.405 -20.595,-46 -46,-46 z m -43.673,-165.346 7.418,136 c 0.347,6.364 5.609,11.346 11.982,11.346 h 48.546 c 6.373,0 11.635,-4.982 11.982,-11.346 l 7.418,-136 c 0.375,-6.874 -5.098,-12.654 -11.982,-12.654 h -63.383 c -6.884,0 -12.356,5.78 -11.981,12.654 z"
+     id="path2"
+     style="fill:#bf6900;fill-opacity:1"
+     inkscape:connector-curvature="0" />
+</svg>
+<!--
+Font Awesome Free 5.4.2 by @fontawesome - https://fontawesome.com
+License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+-->
+
index 3d2ea54a36e7473fd2d9822af80488ae1244fbc9..3c62aa6b1ddcf5145de5799816530e175225d008 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Loading Map Tiles from Google Maps</title><link rel="stylesheet" type="text/css" href="am.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /></head><body><div xml:lang="en" class="article" lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="idm1"></a>Loading Map Tiles from Google Maps</h2></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="#_the_google_maps_problem">1. The Google Maps Problem</a></span></dt><dd><dl><dt><span class="section"><a href="#_the_proposed_solution_an_intermediate_service">1.1. The Proposed Solution — An Intermediate Service</a></span></dt></dl></dd><dt><span class="section"><a href="#_altos_map_service">2. AltOS Map Service</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_map_cgi_script">2.1. AltOS Map CGI Script</a></span></dt><dt><span class="section"><a href="#_altos_map_cache_manager">2.2. AltOS Map Cache Manager</a></span></dt><dt><span class="section"><a href="#_altos_map_uri">2.3. AltOS Map URI</a></span></dt><dt><span class="section"><a href="#_altos_version_uri">2.4. AltOS Version URI</a></span></dt><dt><span class="section"><a href="#_altos_tile_request">2.5. AltOS Tile Request</a></span></dt><dt><span class="section"><a href="#_altos_tile_reply">2.6. AltOS Tile Reply</a></span></dt><dt><span class="section"><a href="#_altos_tile_filename">2.7. AltOS Tile Filename</a></span></dt></dl></dd><dt><span class="section"><a href="#_implementation">3. Implementation</a></span></dt><dd><dl><dt><span class="section"><a href="#_access_control">3.1. Access Control</a></span></dt><dt><span class="section"><a href="#_location_restrictions">3.2. Location Restrictions</a></span></dt><dt><span class="section"><a href="#_per_client_restrictions">3.3. Per-Client Restrictions</a></span></dt><dt><span class="section"><a href="#_cache_lifetime_restrictions">3.4. Cache Lifetime Restrictions.</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_the_google_maps_problem"></a>1. The Google Maps Problem</h2></div></div></div><p>Until recently, Google Maps could be used without fee to fetch map
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<meta name="author" content="Keith Packard">
+<meta name="copyright" content="Keith Packard 2018">
+<title>Loading Map Tiles from Google Maps</title>
+<link rel="stylesheet" href="./am-notoc.css">
+</head>
+<body class="article">
+<div id="header">
+<h1>Loading Map Tiles from Google Maps</h1>
+<div class="details">
+<span id="author" class="author">Keith Packard</span><br>
+<span id="email" class="email"><a href="mailto:keithp@keithp.com">keithp@keithp.com</a></span><br>
+</div>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_the_google_maps_problem">The Google Maps Problem</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Until recently, Google Maps could be used without fee to fetch map
 tiles. Applications could load map tiles anonymously or using a key;
 when used anonymously, the number of tiles that could be loaded per
 day and the rate at which tiles could be loaded was throttled to make
 the API practical only for development purpose. With an application
 key, the number of tiles available per day was much higher, and there
 was no rate limiting. This was usually sufficient for Altos Metrum
-customer use.</p><p>However, this has changed and now there is no way to load map tiles
+customer use.</p>
+</div>
+<div class="paragraph">
+<p>However, this has changed and now there is no way to load map tiles
 anonymously, and any application key must be tied to a credit
 card. The tile cap for free usage is now monthly instead of
 daily. Because the key is tied to a credit card, we should not ship it
 with the application any longer. And because the cap is monthly
 instead of daily, we need some way to control usage by our
-applications.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_the_proposed_solution_an_intermediate_service"></a>1.1. The Proposed Solution — An Intermediate Service</h3></div></div></div><p>To give us some measure of control over tile loading, we will want to
+applications.</p>
+</div>
+<div class="sect2">
+<h3 id="_the_proposed_solution_an_intermediate_service">The Proposed Solution — An Intermediate Service</h3>
+<div class="paragraph">
+<p>To give us some measure of control over tile loading, we will want to
 interpose a server controlled by us between the application and Google
 Maps. This will let us store the Google Maps key in a secure location,
-and also control tile loading by each user.</p><div class="informalfigure"><div class="mediaobject" align="center"><img src="map-loading.svg" align="middle" alt="map-loading.svg" /></div></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_altos_map_service"></a>2. AltOS Map Service</h2></div></div></div><p>This service receives a URL request and replies with either a map tile
+and also control tile loading by each user.</p>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="map-loading.svg" alt="map loading">
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_altos_map_service">AltOS Map Service</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This service receives a URL request and replies with either a map tile
 or an error. It is functionally equivalent to the Google Maps service,
-except that it can control use of the Google Maps API.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_map_cgi_script"></a>2.1. AltOS Map CGI Script</h3></div></div></div><p>The AltOS Map CGI Script is a straightforward script which connects to
+except that it can control use of the Google Maps API.</p>
+</div>
+<div class="sect2">
+<h3 id="_altos_map_cgi_script">AltOS Map CGI Script</h3>
+<div class="paragraph">
+<p>The AltOS Map CGI Script is a straightforward script which connects to
 the AltOS Map Cache Manager, transmits a URL describing the desired
 map tile and receives back a filename (or error), then sends the
 contents of that file back through Apache to the requesting
-application. The name of the script is <span class="emphasis"><em>altos-map</em></span>.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_inputs"></a>Inputs</h4></div></div></div><p>The AltOS Map CGI Script will parse the provided AltOS Map URI or
-AltOS Version URI.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_outputs"></a>Outputs</h4></div></div></div><p>For AltOS Map URLs, the CGI Script will return either the contents of
-the associated Google Map tile or an error indicating what failed:</p><p><span class="emphasis"><em>200 OK</em></span>: The map tile image data or version information</p><p><span class="emphasis"><em>400 Bad Request</em></span>: The URL is malformed or not compatible with the
-version supported by the service</p><p><span class="emphasis"><em>403 Forbidden</em></span>: The map tile is outside the areas supported by the
-current AltOS Map service area</p><p><span class="emphasis"><em>408 Request Timeout</em></span>: Attempts to fetch the tile from Google Maps
-timed out.</p><p><span class="emphasis"><em>503 Service Unavailable</em></span>: The service is temporarily refusing to
-satisfy this request due to resource limitations.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_map_cache_manager"></a>2.2. AltOS Map Cache Manager</h3></div></div></div><p>This is a service running on the local machine and available over a
+application. The name of the script is 'altos-map'.</p>
+</div>
+<div class="sect3">
+<h4 id="_inputs">Inputs</h4>
+<div class="paragraph">
+<p>The AltOS Map CGI Script will parse the provided AltOS Map URI or
+AltOS Version URI.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_outputs">Outputs</h4>
+<div class="paragraph">
+<p>For AltOS Map URLs, the CGI Script will return either the contents of
+the associated Google Map tile or an error indicating what failed:</p>
+</div>
+<div class="paragraph">
+<p><em>200 OK</em>: The map tile image data or version information</p>
+</div>
+<div class="paragraph">
+<p><em>400 Bad Request</em>: The URL is malformed or not compatible with the
+version supported by the service</p>
+</div>
+<div class="paragraph">
+<p><em>403 Forbidden</em>: The map tile is outside the areas supported by the
+current AltOS Map service area</p>
+</div>
+<div class="paragraph">
+<p><em>408 Request Timeout</em>: Attempts to fetch the tile from Google Maps
+timed out.</p>
+</div>
+<div class="paragraph">
+<p><em>503 Service Unavailable</em>: The service is temporarily refusing to
+satisfy this request due to resource limitations.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_altos_map_cache_manager">AltOS Map Cache Manager</h3>
+<div class="paragraph">
+<p>This is a service running on the local machine and available over a
 local network socket. It translates an AltOS Map URL into a local
 filename containing the contents of the associated Google Maps
-tile. The name of the cache manager is <span class="emphasis"><em>altos-mapd</em></span>. It will listen
-for requests on port 16717.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_map_uri"></a>2.3. AltOS Map URI</h3></div></div></div><p>AltOS uses a limited subset of the Google Maps, and the AltOS Map URIs
+tile. The name of the cache manager is 'altos-mapd'. It will listen
+for requests on port 16717.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_altos_map_uri">AltOS Map URI</h3>
+<div class="paragraph">
+<p>AltOS uses a limited subset of the Google Maps, and the AltOS Map URIs
 only encode those elements which we currently use. This specification
 describes AltOS Map URI format version 1.0.0. The application is
 required to provide URIs compatible with the format supported by the
-server. The elements of the  elements are:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Latitude of center point
-</li><li class="listitem">
-Longitude of center point
-</li><li class="listitem">
-Zoom level (from bushes to planets)
-</li></ul></div><p>Encoding this in a URI is straightforward:</p><pre class="literallayout">altos-map?lat=&lt;lat&gt;&amp;lon=&lt;lon&gt;&amp;zoom=&lt;zoom&gt;</pre><p>Latitude and longitude are both encoded using decimal degrees with 6
-digits following the decimal point.</p><p>Zoom levels can range from 1 (world) to 20 (buildings). Higher zoom
-levels show smaller areas at greater detail.</p><p>The only Google Map type supported by version 1.0.0 of the service is
-“hybrid”, which combines road graphics on top of satellite images.</p><p>Version 1.0.0 always returns images which are 512x512 pixels.</p><p>If we need additional elements in the URL, we can add them in the
-future and bump the supported version number.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_version_uri"></a>2.4. AltOS Version URI</h3></div></div></div><p>To allow applications to discover what AltOS Map URI version is supported by the
+server. The elements of the  elements are:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Latitude of center point</p>
+</li>
+<li>
+<p>Longitude of center point</p>
+</li>
+<li>
+<p>Zoom level (from bushes to planets)</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Encoding this in a URI is straightforward:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>altos-map?lat=&lt;lat&gt;&amp;lon=&lt;lon&gt;&amp;zoom=&lt;zoom&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Latitude and longitude are both encoded using decimal degrees with 6
+digits following the decimal point.</p>
+</div>
+<div class="paragraph">
+<p>Zoom levels can range from 1 (world) to 20 (buildings). Higher zoom
+levels show smaller areas at greater detail.</p>
+</div>
+<div class="paragraph">
+<p>The only Google Map type supported by version 1.0.0 of the service is
+“hybrid”, which combines road graphics on top of satellite images.</p>
+</div>
+<div class="paragraph">
+<p>Version 1.0.0 always returns images which are 512x512 pixels.</p>
+</div>
+<div class="paragraph">
+<p>If we need additional elements in the URL, we can add them in the
+future and bump the supported version number.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_altos_version_uri">AltOS Version URI</h3>
+<div class="paragraph">
+<p>To allow applications to discover what AltOS Map URI version is supported by the
 AltOS Map service, the application may query the version of the API
 supported using the Version URI. The application provides the version
 that it supports and the AltOS Map service returns a version not
-greater than the client version:</p><pre class="literallayout">altos-map?version=&lt;client-major&gt;.&lt;client-minor&gt;.&lt;client-revision&gt;
+greater than the client version:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>altos-map?version=&lt;client-major&gt;.&lt;client-minor&gt;.&lt;client-revision&gt;
 →
-&lt;server-major&gt;.&lt;server-minor&gt;.&lt;server.revision&gt;</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_tile_request"></a>2.5. AltOS Tile Request</h3></div></div></div><p>The AltOS Map CGI Script parses the Map URI and passes that
+&lt;server-major&gt;.&lt;server-minor&gt;.&lt;server.revision&gt;</pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_altos_tile_request">AltOS Tile Request</h3>
+<div class="paragraph">
+<p>The AltOS Map CGI Script parses the Map URI and passes that
 information to the AltOS Map Cache Manager using the AltOS Tile
 Specifier syntax. This is a JSON representation of the same data
-provided by the URI:</p><pre class="literallayout">{
-        "lat": &lt;latitude&gt;,
-        "lon": &lt;longitude&gt;,
-        "zoom": &lt;zoom-level&gt;,
-        "remote_addr": "&lt;IPv4 or IPv6 address of requesting client&gt;"
-}</pre><p>Latitude and longitude are both encoded using decimal degrees with 6
-digits following the decimal point.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_tile_reply"></a>2.6. AltOS Tile Reply</h3></div></div></div><p>Sent back from the Cache Manager to the CGI Script, this encodes the
+provided by the URI:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>{
+       "lat": &lt;latitude&gt;,
+       "lon": &lt;longitude&gt;,
+       "zoom": &lt;zoom-level&gt;,
+       "remote_addr": "&lt;IPv4 or IPv6 address of requesting client&gt;"
+}</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Latitude and longitude are both encoded using decimal degrees with 6
+digits following the decimal point.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_altos_tile_reply">AltOS Tile Reply</h3>
+<div class="paragraph">
+<p>Sent back from the Cache Manager to the CGI Script, this encodes the
 status of the request and the filename of any tile data available. It
-is encoded in JSON format:</p><pre class="literallayout">{
-        "status": &lt;HTTP status&gt;,
-        "filename": "&lt;absolute path to image file&gt;",
-        "content_type": "&lt;HTTP content-type&gt;"
-}</pre><p>The “filename” and “content-type” elements are only included when
-the status is <span class="emphasis"><em>200 OK</em></span>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_tile_filename"></a>2.7. AltOS Tile Filename</h3></div></div></div><p>While the current AltOS Map URI version only supports a limited subset
-of the Google Maps functionality, we’ll encode more of that data in
+is encoded in JSON format:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>{
+       "status": &lt;HTTP status&gt;,
+       "filename": "&lt;absolute path to image file&gt;",
+       "content_type": "&lt;HTTP content-type&gt;"
+}</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The “filename” and “content-type” elements are only included when
+the status is <em>200 OK</em>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_altos_tile_filename">AltOS Tile Filename</h3>
+<div class="paragraph">
+<p>While the current AltOS Map URI version only supports a limited subset
+of the Google Maps functionality, we&#8217;ll encode more of that data in
 filenames to allow for easy expansion of functionality in the
-future. The elements of an AltOS Tile filename consist of :</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Latitude, with N/S indicator (instead of a sign)
-</li><li class="listitem">
-Longitude, with E/W indicator (instead of a sign)
-</li><li class="listitem">
-Map type.
-</li><li class="listitem">
-Zoom level
-</li><li class="listitem">
-Scale factor. Scale, and the preceding hyphen are omitted for a scale factor of 1.
-</li><li class="listitem">
-Image format suffix. <span class="emphasis"><em>.jpg</em></span> for JPEG files and <span class="emphasis"><em>.png</em></span> for PNG files.
-</li></ul></div><p>Latitude and longitude are both encoded using decimal degrees with 6
-digits following the decimal point.</p><p>Map type is one of :</p><p><span class="emphasis"><em>hybrid</em></span>: Road graphics over satellite images
-<span class="emphasis"><em>roadmap</em></span>: Symbolic road map
-<span class="emphasis"><em>satellite</em></span>: Un-annotated satellite images
-<span class="emphasis"><em>terrain</em></span>: Topographic map</p><p>Here’s what map filenames look like:</p><pre class="literallayout">map-{N,S}&lt;lat&gt;,{E,W}&lt;lon&gt;-&lt;type&gt;-&lt;zoom&gt;[-&lt;scale&gt;].&lt;format&gt;</pre><pre class="literallayout">map-N36.508532,W107.823944-hybrid-18.jpg</pre><p>To transmit this name from the AltOS Map Cache Manager back to the
-Altos Map CGI script, the filename will be wrapped in a JSON string</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_implementation"></a>3. Implementation</h2></div></div></div><p>The AltOS Map CGI Script and AltOS Map Cache Manager will both be
+future. The elements of an AltOS Tile filename consist of :</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Latitude, with N/S indicator (instead of a sign)</p>
+</li>
+<li>
+<p>Longitude, with E/W indicator (instead of a sign)</p>
+</li>
+<li>
+<p>Map type.</p>
+</li>
+<li>
+<p>Zoom level</p>
+</li>
+<li>
+<p>Scale factor. Scale, and the preceding hyphen are omitted for a scale factor of 1.</p>
+</li>
+<li>
+<p>Image format suffix. '.jpg' for JPEG files and '.png' for PNG files.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Latitude and longitude are both encoded using decimal degrees with 6
+digits following the decimal point.</p>
+</div>
+<div class="paragraph">
+<p>Map type is one of :</p>
+</div>
+<div class="paragraph">
+<p><em>hybrid</em>: Road graphics over satellite images
+<em>roadmap</em>: Symbolic road map
+<em>satellite</em>: Un-annotated satellite images
+<em>terrain</em>: Topographic map</p>
+</div>
+<div class="paragraph">
+<p>Here&#8217;s what map filenames look like:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>map-{N,S}&lt;lat&gt;,{E,W}&lt;lon&gt;-&lt;type&gt;-&lt;zoom&gt;[-&lt;scale&gt;].&lt;format&gt;</pre>
+</div>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>map-N36.508532,W107.823944-hybrid-18.jpg</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To transmit this name from the AltOS Map Cache Manager back to the
+Altos Map CGI script, the filename will be wrapped in a JSON string</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_implementation">Implementation</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The AltOS Map CGI Script and AltOS Map Cache Manager will both be
 implemented in Java as much of the required Google Maps infrastructure
-is already available in that language.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_access_control"></a>3.1. Access Control</h3></div></div></div><p>No access control to the service is planned at this point. If
+is already available in that language.</p>
+</div>
+<div class="sect2">
+<h3 id="_access_control">Access Control</h3>
+<div class="paragraph">
+<p>No access control to the service is planned at this point. If
 necessary, we could implement username/password access control for each
-user of the service.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_location_restrictions"></a>3.2. Location Restrictions</h3></div></div></div><p>To avoid unbounded usage, and confine the utility of this service to
+user of the service.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_location_restrictions">Location Restrictions</h3>
+<div class="paragraph">
+<p>To avoid unbounded usage, and confine the utility of this service to
 AltOS users, the service will only offer map tiles whose center
 location is within 10 miles of one of the sites registered in
-our launch sites database.</p><p>To allow testing of the registered launch site database, a database of
+our launch sites database.</p>
+</div>
+<div class="paragraph">
+<p>To allow testing of the registered launch site database, a database of
 privileged clients will be supported. Privileged clients will have
-unlimited access to the service.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_per_client_restrictions"></a>3.3. Per-Client Restrictions</h3></div></div></div><p>We should implement a per-day limit on the number of tiles provided to
+unlimited access to the service.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_per_client_restrictions">Per-Client Restrictions</h3>
+<div class="paragraph">
+<p>We should implement a per-day limit on the number of tiles provided to
 a particular requesting client. We can also rate limit clients to a
 certain number of tiles per minute to reduce the bandwidth consumed
-out of our server.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_cache_lifetime_restrictions"></a>3.4. Cache Lifetime Restrictions.</h3></div></div></div><p>The Google Maps API allows for caching of map data for no more than 30
+out of our server.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_cache_lifetime_restrictions">Cache Lifetime Restrictions.</h3>
+<div class="paragraph">
+<p>The Google Maps API allows for caching of map data for no more than 30
 days. To honor this, the Cache Manager will re-fetch any requested
 tiles when the cached version is older than this. If the fetch fails,
 the cache manager will continue to serve the data from the cached
-version of the file.</p></div></div></div></body></html>
\ No newline at end of file
+version of the file.</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2019-01-03 00:11:54 -0700
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
index 392a75c8b620033ce811d9a2c2a8156cb377cec3..6ca1124d4ee2f607a8f014ce5f45549b86bae568 100644 (file)
Binary files a/AltOS/doc/map-loading.pdf and b/AltOS/doc/map-loading.pdf differ
diff --git a/AltOS/doc/map-loading.svg b/AltOS/doc/map-loading.svg
new file mode 100644 (file)
index 0000000..fa39bc0
--- /dev/null
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.40.1 (20161225.0304)
+ -->
+<!-- Title: map_loading Pages: 1 -->
+<svg width="290pt" height="293pt"
+ viewBox="0.00 0.00 290.00 293.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 289)">
+<title>map_loading</title>
+<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-289 286,-289 286,4 -4,4"/>
+<!-- app -->
+<g id="node1" class="node">
+<title>app</title>
+<polygon fill="#885931" stroke="#885931" points="184.5,-285 101.5,-285 101.5,-264 184.5,-264 184.5,-285"/>
+<text text-anchor="middle" x="143" y="-271.4" font-family="DejaVu Sans,sans-serif" font-size="12.00" fill="#ffffff">Application</text>
+</g>
+<!-- apache -->
+<g id="node2" class="node">
+<title>apache</title>
+<polygon fill="#d12127" stroke="#d12127" points="210.5,-219 75.5,-219 75.5,-198 210.5,-198 210.5,-219"/>
+<text text-anchor="middle" x="143" y="-205.4" font-family="DejaVu Sans,sans-serif" font-size="12.00" fill="#ffffff">Apache Web Server</text>
+</g>
+<!-- app&#45;&gt;apache -->
+<g id="edge1" class="edge">
+<title>app&#45;&gt;apache</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M108.8079,-263.9424C100.5892,-259.7117 92.8055,-253.9024 88,-246 81.636,-235.5346 89.9682,-227.3072 101.919,-221.2584"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="102.6799,-222.8345 106.4651,-219.1284 101.1949,-219.6652 102.6799,-222.8345"/>
+<text text-anchor="middle" x="118.5" y="-239.6" font-family="DejaVu Sans,sans-serif" font-size="8.00" fill="#000000">AltOS Map URI</text>
+<polyline fill="none" stroke="#000000" points="149,-237 88,-237 106.51,-262.7105 "/>
+</g>
+<!-- apache&#45;&gt;app -->
+<g id="edge2" class="edge">
+<title>apache&#45;&gt;app</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M148.1441,-219.053C150.4272,-224.3116 152.8539,-230.8475 154,-237 155.3664,-244.3349 153.5291,-252.2879 150.9883,-258.9745"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="149.2797,-258.5226 148.9497,-263.8097 152.5048,-259.8824 149.2797,-258.5226"/>
+<text text-anchor="middle" x="187.5" y="-239.6" font-family="DejaVu Sans,sans-serif" font-size="8.00" fill="#000000">Google Map tile</text>
+<polyline fill="none" stroke="#000000" points="221,-237 154,-237 154.463,-241.8825 "/>
+</g>
+<!-- cgi_script -->
+<g id="node3" class="node">
+<title>cgi_script</title>
+<polygon fill="#551a8b" stroke="#551a8b" points="214,-153 72,-153 72,-132 214,-132 214,-153"/>
+<text text-anchor="middle" x="143" y="-139.4" font-family="DejaVu Sans,sans-serif" font-size="12.00" fill="#ffffff">AltOS Map CGI Script</text>
+</g>
+<!-- apache&#45;&gt;cgi_script -->
+<g id="edge3" class="edge">
+<title>apache&#45;&gt;cgi_script</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M108.8079,-197.9424C100.5892,-193.7117 92.8055,-187.9024 88,-180 81.636,-169.5346 89.9682,-161.3072 101.919,-155.2584"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="102.6799,-156.8345 106.4651,-153.1284 101.1949,-153.6652 102.6799,-156.8345"/>
+<text text-anchor="middle" x="118.5" y="-173.6" font-family="DejaVu Sans,sans-serif" font-size="8.00" fill="#000000">AltOS Map URI</text>
+<polyline fill="none" stroke="#000000" points="149,-171 88,-171 106.51,-196.7105 "/>
+</g>
+<!-- cgi_script&#45;&gt;apache -->
+<g id="edge5" class="edge">
+<title>cgi_script&#45;&gt;apache</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M148.1441,-153.053C150.4272,-158.3116 152.8539,-164.8475 154,-171 155.3664,-178.3349 153.5291,-186.2879 150.9883,-192.9745"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="149.2797,-192.5226 148.9497,-197.8097 152.5048,-193.8824 149.2797,-192.5226"/>
+<text text-anchor="middle" x="187.5" y="-173.6" font-family="DejaVu Sans,sans-serif" font-size="8.00" fill="#000000">Google Map tile</text>
+<polyline fill="none" stroke="#000000" points="221,-171 154,-171 154.463,-175.8825 "/>
+</g>
+<!-- cache_manager -->
+<g id="node4" class="node">
+<title>cache_manager</title>
+<polygon fill="#c75b1c" stroke="#c75b1c" points="231.5,-87 54.5,-87 54.5,-66 231.5,-66 231.5,-87"/>
+<text text-anchor="middle" x="143" y="-73.4" font-family="DejaVu Sans,sans-serif" font-size="12.00" fill="#ffffff">AltOS Map Cache Manager</text>
+</g>
+<!-- cgi_script&#45;&gt;cache_manager -->
+<g id="edge4" class="edge">
+<title>cgi_script&#45;&gt;cache_manager</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M100.6975,-131.8654C92.1265,-127.7107 84.1668,-121.9568 79,-114 71.9416,-103.1302 80.324,-95.0112 93.0978,-89.1602"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="94.0514,-90.6576 97.9821,-87.1062 92.6946,-87.4313 94.0514,-90.6576"/>
+<text text-anchor="middle" x="118.5" y="-107.6" font-family="DejaVu Sans,sans-serif" font-size="8.00" fill="#000000">AltOS Tile Request</text>
+<polyline fill="none" stroke="#000000" points="158,-105 79,-105 100.6724,-131.8532 "/>
+</g>
+<!-- cache_manager&#45;&gt;cgi_script -->
+<g id="edge6" class="edge">
+<title>cache_manager&#45;&gt;cgi_script</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M154.0561,-87.187C160.189,-94.4458 166.0225,-104.4313 163,-114 161.4433,-118.9282 158.6956,-123.7436 155.7259,-127.9717"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="154.3155,-126.9357 152.7183,-131.9866 157.1167,-129.0342 154.3155,-126.9357"/>
+<text text-anchor="middle" x="197.5" y="-107.6" font-family="DejaVu Sans,sans-serif" font-size="8.00" fill="#000000">AltOS Tile Reply</text>
+<polyline fill="none" stroke="#000000" points="232,-105 163,-105 163.8171,-109.0452 "/>
+</g>
+<!-- disk_files -->
+<g id="node5" class="node">
+<title>disk_files</title>
+<polygon fill="#4f81bd" stroke="#4f81bd" points="84,-21 0,-21 0,0 84,0 84,-21"/>
+<text text-anchor="middle" x="42" y="-7.4" font-family="DejaVu Sans,sans-serif" font-size="12.00" fill="#ffffff">File System</text>
+</g>
+<!-- cache_manager&#45;&gt;disk_files -->
+<g id="edge7" class="edge">
+<title>cache_manager&#45;&gt;disk_files</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M96.0289,-64.1051C85.8098,-60.035 75.5195,-54.7605 67,-48 59.4878,-42.0389 53.4384,-33.1903 49.1731,-25.5853"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="95.4171,-65.7447 100.7125,-65.8915 96.6644,-62.4745 95.4171,-65.7447"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="50.6493,-24.6344 46.7507,-21.0478 47.5617,-26.2828 50.6493,-24.6344"/>
+<text text-anchor="middle" x="97" y="-41.6" font-family="DejaVu Sans,sans-serif" font-size="8.00" fill="#000000">AltOS tile files</text>
+<polyline fill="none" stroke="#000000" points="127,-39 67,-39 88.8556,-61.0412 "/>
+</g>
+<!-- google_maps -->
+<g id="node6" class="node">
+<title>google_maps</title>
+<polygon fill="#4cbb44" stroke="#4cbb44" points="256,-21 162,-21 162,0 256,0 256,-21"/>
+<text text-anchor="middle" x="209" y="-7.4" font-family="DejaVu Sans,sans-serif" font-size="12.00" fill="#ffffff">Google Maps</text>
+</g>
+<!-- cache_manager&#45;&gt;google_maps -->
+<g id="edge8" class="edge">
+<title>cache_manager&#45;&gt;google_maps</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M138.3517,-65.7396C135.6616,-57.7107 133.7383,-46.8234 139,-39 143.5482,-32.2376 150.0098,-27.0789 157.1886,-23.1438"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="158.064,-24.6624 161.7405,-20.8484 156.488,-21.5373 158.064,-24.6624"/>
+<text text-anchor="middle" x="173" y="-41.6" font-family="DejaVu Sans,sans-serif" font-size="8.00" fill="#000000">Google Map URI</text>
+<polyline fill="none" stroke="#000000" points="207,-39 139,-39 157.1466,-23.1669 "/>
+</g>
+<!-- google_maps&#45;&gt;cache_manager -->
+<g id="edge9" class="edge">
+<title>google_maps&#45;&gt;cache_manager</title>
+<path fill="none" stroke="#000000" stroke-width="2" d="M213.2228,-21.2638C215.6262,-29.2946 217.229,-40.1827 212,-48 207.6674,-54.4772 201.5638,-59.484 194.7602,-63.3537"/>
+<polygon fill="#000000" stroke="#000000" stroke-width="2" points="193.5794,-61.9953 189.9512,-65.8552 195.1946,-65.1003 193.5794,-61.9953"/>
+<text text-anchor="middle" x="248.5" y="-41.6" font-family="DejaVu Sans,sans-serif" font-size="8.00" fill="#000000">Google Map tile</text>
+<polyline fill="none" stroke="#000000" points="282,-39 215,-39 215.2156,-39.0906 "/>
+</g>
+</g>
+</svg>
index 4b69582708d00a556ee9431f07cec983a8a132cf..b892b24dcf1f1c4a50ea1ea47d77d7776c3d8627 100644 (file)
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="444"
-   height="98"
+   width="320"
+   height="63"
    id="svg2"
    version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="micropeak-oneline.svg">
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="micropeak-oneline-font.svg">
   <defs
      id="defs4">
+    <linearGradient
+       id="linearGradient4151">
+      <stop
+         id="stop4153"
+         offset="0"
+         style="stop-color:#da7000;stop-opacity:1;" />
+      <stop
+         style="stop-color:#a63852;stop-opacity:1;"
+         offset="0.15000001"
+         id="stop4159" />
+      <stop
+         style="stop-color:#7200a4;stop-opacity:1;"
+         offset="1"
+         id="stop4157" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4141">
+      <stop
+         style="stop-color:#7200a4;stop-opacity:1;"
+         offset="0"
+         id="stop4143" />
+      <stop
+         id="stop4149"
+         offset="0.5"
+         style="stop-color:#7200a4;stop-opacity:0.49803922;" />
+      <stop
+         style="stop-color:#7200a4;stop-opacity:0;"
+         offset="1"
+         id="stop4145" />
+    </linearGradient>
     <linearGradient
        id="linearGradient5343">
       <stop
@@ -52,7 +82,7 @@
        style="overflow:visible">
       <path
          id="path3780"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
          style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
          transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
          inkscape:connector-curvature="0" />
        style="overflow:visible">
       <path
          id="path3768"
-         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
          style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
          transform="matrix(-0.8,0,0,-0.8,-10,0)"
          inkscape:connector-curvature="0" />
        x2="280.61411"
        y2="275.90405"
        gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.9246394,0,0,1.9246394,-200.29778,-270.16721)" />
+       gradientTransform="matrix(1.58566,0,0,1.58566,-141.69631,-171.10662)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4151"
+       id="linearGradient4147"
+       x1="320.71625"
+       y1="261.24799"
+       x2="561.98907"
+       y2="261.24799"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98765434,0,0,0.98765434,6.9381316,3.6077944)" />
   </defs>
   <sodipodi:namedview
      id="base"
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="2.8852983"
-     inkscape:cx="243.9235"
-     inkscape:cy="27.872251"
+     inkscape:zoom="2.040214"
+     inkscape:cx="63.523011"
+     inkscape:cy="51.339868"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
      inkscape:window-width="1871"
      inkscape:window-height="1383"
-     inkscape:window-x="119"
-     inkscape:window-y="125"
+     inkscape:window-x="0"
+     inkscape:window-y="160"
      inkscape:window-maximized="0"
      fit-margin-top="0"
      fit-margin-left="0"
      inkscape:label="Layer 1"
      inkscape:groupmode="layer"
      id="layer1"
-     transform="translate(-241.93841,-205.0196)">
+     transform="translate(-241.9891,-229.23188)">
     <g
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.79423141px;line-height:125%;font-family:'Minion Pro';-inkscape-font-specification:'Minion Pro';letter-spacing:0px;word-spacing:0px;fill:#7200a4;fill-opacity:1;stroke:none"
-       id="text2985"
-       transform="translate(23.408014,-22.546654)" />
+       style="font-size:57.89221573px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#7200a4;fill-opacity:1;stroke:none;font-family:ITC Benguiat Gothic Std;-inkscape-font-specification:ITC Benguiat Gothic Std Medium"
+       id="text2985">
+      <path
+         d="m 266.5354,253.96513 c 0,-1.73676 -0.63682,-3.01039 -2.54726,-3.01039 -1.91044,0 -2.54726,1.27363 -2.54726,3.01039 l 0,13.95203 c 0,4.63137 -3.29986,8.22069 -7.75755,8.22069 -4.92084,0 -6.59972,-3.0104 -6.59972,-8.1628 l 0,-14.00992 c 0,-1.73676 -0.63681,-3.01039 -2.54725,-3.01039 -1.91044,0 -2.54726,1.27363 -2.54726,3.01039 l 0,35.25636 c 0,1.73677 0.63682,3.0104 2.54726,3.0104 1.91044,0 2.54725,-1.27363 2.54725,-3.0104 l 0,-9.89957 c 1.27363,0.98417 3.35775,1.56309 5.73133,1.56309 3.7051,0 7.12075,-1.27363 9.08908,-4.80505 l 0.11579,0.11578 0,2.02623 c 0,1.38941 0.86838,2.31569 2.25779,2.31569 1.38941,0 2.2578,-0.92628 2.2578,-2.31569 l 0,-24.25684"
+         style="line-height:125%;fill:#7200a4;font-family:ITC Benguiat Gothic Std;-inkscape-font-specification:ITC Benguiat Gothic Std Medium"
+         id="path4162" />
+    </g>
     <path
-       style="fill:none;stroke:url(#linearGradient5349);stroke-width:5.58145428;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:none"
-       d="m 294.21061,289.33175 c 5.85134,-0.46986 8.28205,-5.13748 10.35972,-10.71262 3.23453,-8.67942 7.06755,-30.54218 16.59477,-39.56149 7.82712,-7.40985 15.82735,-6.67187 15.82735,-6.67187"
+       style="fill:none;stroke:url(#linearGradient5349);stroke-width:4.59841394;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:none"
+       d="m 265.7162,289.84993 c 4.82076,-0.38711 6.82338,-4.23263 8.53511,-8.82584 2.66483,-7.15075 5.82277,-25.16291 13.67197,-32.59367 6.44857,-6.10479 13.03975,-5.49679 13.03975,-5.49679"
        id="path2991"
        inkscape:connector-curvature="0"
        sodipodi:nodetypes="cssc" />
     <path
        sodipodi:type="star"
-       style="fill:none;stroke:#da7000;stroke-width:2.11710358;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="fill:none;stroke:#da7000;stroke-width:1.10000002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
        id="path5341"
        sodipodi:sides="5"
-       sodipodi:cx="337.23586"
-       sodipodi:cy="232.26813"
-       sodipodi:r1="13.956471"
-       sodipodi:r2="6.9782352"
+       sodipodi:cx="279.29056"
+       sodipodi:cy="261.05426"
+       sodipodi:r1="7.2514729"
+       sodipodi:r2="3.6257365"
        sodipodi:arg1="1.0731354"
        sodipodi:arg2="1.7014539"
        inkscape:flatsided="false"
        inkscape:rounded="0"
        inkscape:randomized="0"
-       d="m 343.89829,244.5317 -7.57159,-5.34482 -8.69538,3.20724 2.74347,-8.85265 -5.73728,-7.27871 9.26715,-0.12642 5.14955,-7.70573 2.98393,8.77452 8.91988,2.51631 -7.42297,5.54937 z"
-       inkscape:transform-center-x="-0.56191834"
-       inkscape:transform-center-y="-0.78695059" />
+       d="m 282.7522,267.42614 -3.93403,-2.77705 -4.51792,1.66641 1.42544,-4.59964 -2.98096,-3.78185 4.815,-0.0657 2.67559,-4.00372 1.55039,4.55904 4.63457,1.30742 -3.85681,2.88333 z"
+       inkscape:transform-center-x="-0.46292579"
+       inkscape:transform-center-y="-0.64836539"
+       transform="matrix(1.58566,0,0,1.58566,-141.69632,-171.10662)" />
     <g
-       id="g4212"
-       style="fill:#78079a;fill-opacity:1">
+       style="font-size:54.73445892px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:url(#linearGradient4147);fill-opacity:1;stroke:none;font-family:ITC Benguiat Gothic Std;-inkscape-font-specification:ITC Benguiat Gothic Std Medium"
+       id="text5351">
+      <path
+         d="m 339.95106,263.95674 c 3.3388,0 8.26491,-10.67322 9.46907,-13.30048 l 0.10947,0 c 1.64203,8.97645 1.86097,18.06238 1.86097,26.54622 0,2.13464 0.60208,3.3388 2.40831,3.3388 1.64203,0 2.40832,-1.31363 2.40832,-3.3388 0,-7.44388 -1.4231,-23.6453 -2.90093,-30.37763 -0.38314,-1.86097 -1.36836,-4.26929 -3.1746,-4.26929 -3.06512,0 -4.32402,7.17023 -10.18061,15.38039 -5.85658,-8.21016 -7.11548,-15.38039 -10.1806,-15.38039 -1.80624,0 -2.79146,2.40832 -3.1746,4.26929 -1.47783,6.73233 -2.90093,22.93375 -2.90093,30.37763 0,2.02517 0.76628,3.3388 2.40832,3.3388 1.80623,0 2.40831,-1.20416 2.40831,-3.3388 0,-8.48384 0.21894,-17.56977 1.80624,-26.54622 l 0.10947,0 c 1.25889,2.62726 6.185,13.30048 9.52379,13.30048"
+         style=""
+         id="path4165" />
+      <path
+         d="m 368.22997,255.25396 c 0,-1.64203 -0.60209,-2.84619 -2.40832,-2.84619 -1.80624,0 -2.40832,1.20416 -2.40832,2.84619 l 0,22.44113 c 0,1.64203 0.60208,2.84619 2.40832,2.84619 1.80623,0 2.40832,-1.20416 2.40832,-2.84619 l 0,-22.44113 m -2.40832,-12.20579 c -1.7515,0 -2.57252,1.53257 -2.57252,3.1746 0,1.64203 0.82102,3.1746 2.57252,3.1746 1.7515,0 2.57252,-1.53257 2.57252,-3.1746 0,-1.64203 -0.82102,-3.1746 -2.57252,-3.1746"
+         style=""
+         id="path4167" />
+      <path
+         d="m 391.19962,275.88885 c -6.67759,0 -11.98684,-4.15983 -11.98684,-11.49424 0,-5.0903 2.79146,-7.66282 9.57853,-7.66282 l 6.23973,0 c 1.47782,0 2.46305,-0.65682 2.46305,-2.07991 0,-1.4231 -0.98523,-2.07991 -2.46305,-2.07991 l -9.30486,0 c -7.17021,0 -11.65844,5.03558 -11.65844,11.65844 0,9.96166 8.26491,16.14667 15.70879,16.14667 l 6.5134,0 c 1.53256,0 2.62725,-0.71155 2.62725,-2.24412 0,-1.53256 -1.09469,-2.24411 -2.62725,-2.24411 l -5.09031,0"
+         style=""
+         id="path4169" />
+      <path
+         d="m 403.02227,277.69509 c 0,1.64203 0.60208,2.84619 2.40831,2.84619 1.80624,0 2.40832,-1.20416 2.40832,-2.84619 l 0,-14.50463 c 0,-4.26929 3.39354,-6.45867 7.38915,-6.45867 1.7515,0 2.46305,-0.82102 2.46305,-2.35358 0,-1.5873 -1.03995,-2.13465 -2.84619,-2.13465 -3.503,0 -5.85659,1.31363 -6.89654,4.7619 l -0.10947,0 0,-1.5873 c 0,-1.64203 -0.60208,-2.84619 -2.40832,-2.84619 -1.80623,0 -2.40831,1.20416 -2.40831,2.84619 l 0,22.27693"
+         style=""
+         id="path4171" />
+      <path
+         d="m 431.7801,276.54566 c -4.98083,0 -8.31964,-4.7619 -8.31964,-10.07114 0,-5.30923 3.33881,-10.07114 8.31964,-10.07114 5.03556,0 8.37437,4.76191 8.37437,10.07114 0,5.30924 -3.33881,10.07114 -8.37437,10.07114 m 0,4.15982 c 7.44388,0 13.191,-6.185 13.191,-14.28569 0,-7.55335 -5.74712,-14.17623 -13.191,-14.17623 -7.44388,0 -13.13627,6.62288 -13.13627,14.17623 0,8.10069 5.69239,14.28569 13.13627,14.28569"
+         style=""
+         id="path4173" />
+      <path
+         d="m 456.22673,263.84727 c 6.73233,-2.40832 21.18224,-5.03558 21.18224,-14.6141 0,-4.37875 -3.50301,-6.5134 -7.82703,-6.5134 l -15.92773,0 c -1.69677,0 -2.24411,1.09469 -2.24411,2.62725 l 0,32.34807 c 0,1.69676 0.76628,2.84619 2.40831,2.84619 1.64204,0 2.40832,-1.14943 2.40832,-2.84619 l 0,-13.84782 m 12.47946,-16.63928 c 1.9157,0 3.3388,0.65682 3.3388,2.79146 0,4.9261 -10.29009,6.62287 -15.81826,8.92172 l 0,-11.71318 12.47946,0"
+         style=""
+         id="path4175" />
+      <path
+         d="m 485.16159,263.08099 c 0.71154,-3.50301 3.22934,-6.67761 8.48384,-6.67761 4.43348,0 7.22495,2.8462 7.44388,6.67761 l -15.92772,0 m 18.06237,3.72194 c 2.62725,0 2.68199,-0.60208 2.68199,-2.90093 0,-6.89653 -5.41872,-11.65844 -12.20579,-11.65844 -8.15542,0 -13.90255,5.58293 -13.90255,13.79309 0,9.63325 6.07553,14.34043 13.30047,14.34043 l 10.50902,0 c 1.47783,0 2.46305,-0.65682 2.46305,-2.07991 0,-1.4231 -0.98522,-2.07991 -2.46305,-2.07991 l -10.39955,0 c -4.48822,0 -8.64804,-3.06514 -8.2649,-9.41433 l 18.28131,0"
+         style=""
+         id="path4177" />
+      <path
+         d="m 527.28745,270.52487 c 0,4.7619 -2.68199,6.45867 -7.22495,6.45867 -4.10508,0 -6.45867,-1.47783 -6.45867,-4.7619 0,-5.14503 7.38916,-6.6776 13.68362,-6.6776 l 0,4.98083 m -4.43349,-13.46467 c 3.3388,0 4.43349,0.76628 4.43349,3.11986 l 0,1.64203 c -7.06074,0.43788 -18.50025,1.0947 -18.50025,10.61849 0,5.19977 4.4335,8.2649 10.50902,8.2649 3.72194,0 5.47345,-0.98522 8.31964,-3.11986 0,1.7515 0.71155,2.79146 2.24411,2.79146 1.53256,0 2.24411,-1.03996 2.24411,-2.79146 l 0,-15.16145 c 0,-4.87136 -1.31363,-9.8522 -8.53857,-9.8522 l -10.12588,0 c -1.5873,0 -2.62725,0.71155 -2.62725,2.24411 0,1.53257 1.03995,2.24412 2.62725,2.24412 l 9.41433,0"
+         style=""
+         id="path4179" />
       <path
-         inkscape:connector-curvature="0"
-         id="path4233"
-         style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:69.28701782px;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';letter-spacing:0px;word-spacing:0px;fill:#78079a;fill-opacity:1;stroke:none;text-align:start;writing-mode:lr-tb;text-anchor:start"
-         d="m 271.3161,268.77261 c 0,-2.07861 -0.76216,-3.60293 -3.04863,-3.60293 -2.28647,0 -3.04863,1.52432 -3.04863,3.60293 l 0,16.69817 c 0,5.54296 -3.94936,9.83875 -9.28446,9.83875 -5.88939,0 -7.89872,-3.60292 -7.89872,-9.76946 l 0,-16.76746 c 0,-2.07861 -0.76215,-3.60293 -3.04862,-3.60293 -2.28648,0 -3.04863,1.52432 -3.04863,3.60293 l 0,42.19579 c 0,2.07861 0.76215,3.60293 3.04863,3.60293 2.28647,0 3.04862,-1.52432 3.04862,-3.60293 l 0,-11.84808 c 1.52432,1.17788 4.01865,1.87075 6.85942,1.87075 4.43437,0 8.5223,-1.52431 10.87806,-5.75082 l 0.13857,0.13857 0,2.42505 c 0,1.66289 1.03931,2.77148 2.7022,2.77148 1.66289,0 2.70219,-1.10859 2.70219,-2.77148 l 0,-29.03126 z"
-         transform="translate(23.40801,-22.54665)" />
-      <g
-         style="fill:#78079a;fill-opacity:1"
-         id="g4200">
-        <path
-           style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:medium;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#78079a;fill-opacity:1;stroke:none"
-           inkscape:connector-curvature="0"
-           id="path4236"
-           d="m 380.37736,256.92285 c 4.28006,0 10.5949,-13.68217 12.13853,-17.05008 l 0.14033,0 c 2.10495,11.50705 2.38561,23.15443 2.38561,34.02999 0,2.73644 0.77182,4.28007 3.08726,4.28007 2.10495,0 3.08726,-1.68396 3.08726,-4.28007 0,-9.54243 -1.82429,-30.31125 -3.71875,-38.94154 -0.49115,-2.38561 -1.75412,-5.47287 -4.06956,-5.47287 -3.92924,0 -5.54303,9.19161 -13.05068,19.71635 -7.50765,-10.52474 -9.12145,-19.71635 -13.05068,-19.71635 -2.31545,0 -3.57842,3.08726 -4.06957,5.47287 -1.89445,8.63029 -3.71874,29.39911 -3.71874,38.94154 0,2.59611 0.98231,4.28007 3.08726,4.28007 2.31544,0 3.08725,-1.54363 3.08725,-4.28007 0,-10.87556 0.28066,-22.52294 2.31545,-34.02999 l 0.14033,0 c 1.61379,3.36791 7.92864,17.05008 12.2087,17.05008 z" />
-        <path
-           style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:medium;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#78079a;fill-opacity:1;stroke:none"
-           inkscape:connector-curvature="0"
-           id="path4238"
-           d="m 416.62852,245.76662 c 0,-2.10495 -0.77182,-3.64858 -3.08726,-3.64858 -2.31544,0 -3.08726,1.54363 -3.08726,3.64858 l 0,28.76763 c 0,2.10495 0.77182,3.64858 3.08726,3.64858 2.31544,0 3.08726,-1.54363 3.08726,-3.64858 l 0,-28.76763 z m -3.08726,-15.64678 c -2.24528,0 -3.29775,1.96462 -3.29775,4.06956 0,2.10495 1.05247,4.06957 3.29775,4.06957 2.24528,0 3.29775,-1.96462 3.29775,-4.06957 0,-2.10494 -1.05247,-4.06956 -3.29775,-4.06956 z" />
-        <path
-           style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:medium;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#78079a;fill-opacity:1;stroke:none"
-           inkscape:connector-curvature="0"
-           id="path4240"
-           d="m 446.07368,272.21881 c -8.56013,0 -15.36613,-5.33254 -15.36613,-14.73464 0,-6.52534 3.57842,-9.8231 12.27887,-9.8231 l 7.9988,0 c 1.89446,0 3.15743,-0.84197 3.15743,-2.66626 0,-1.82429 -1.26297,-2.66627 -3.15743,-2.66627 l -11.92804,0 c -9.19161,0 -14.94513,6.45517 -14.94513,14.94513 0,12.77002 10.59491,20.69866 20.13734,20.69866 l 8.34963,0 c 1.96462,0 3.36791,-0.91214 3.36791,-2.87676 0,-1.96462 -1.40329,-2.87676 -3.36791,-2.87676 l -6.52534,0 z" />
-        <path
-           style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:medium;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#78079a;fill-opacity:1;stroke:none"
-           inkscape:connector-curvature="0"
-           id="path4242"
-           d="m 461.22931,274.53425 c 0,2.10495 0.77181,3.64858 3.08725,3.64858 2.31545,0 3.08726,-1.54363 3.08726,-3.64858 l 0,-18.59371 c 0,-5.47287 4.35023,-8.27947 9.47227,-8.27947 2.24528,0 3.15742,-1.05247 3.15742,-3.01709 0,-2.03478 -1.33313,-2.73643 -3.64858,-2.73643 -4.49055,0 -7.50764,1.68396 -8.84078,6.10435 l -0.14033,0 0,-2.03478 c 0,-2.10495 -0.77181,-3.64858 -3.08726,-3.64858 -2.31544,0 -3.08725,1.54363 -3.08725,3.64858 l 0,28.55713 z" />
-        <path
-           style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:medium;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#78079a;fill-opacity:1;stroke:none"
-           inkscape:connector-curvature="0"
-           id="path4244"
-           d="m 498.09441,273.06079 c -6.38501,0 -10.66507,-6.10435 -10.66507,-12.91035 0,-6.806 4.28006,-12.91036 10.66507,-12.91036 6.45518,0 10.73524,6.10436 10.73524,12.91036 0,6.806 -4.28006,12.91035 -10.73524,12.91035 z m 0,5.33253 c 9.54243,0 16.90975,-7.92864 16.90975,-18.31305 0,-9.68276 -7.36732,-18.17272 -16.90975,-18.17272 -9.54243,0 -16.83959,8.48996 -16.83959,18.17272 0,10.38441 7.29716,18.31305 16.83959,18.31305 z" />
-        <path
-           style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:medium;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#78079a;fill-opacity:1;stroke:none"
-           inkscape:connector-curvature="0"
-           id="path4246"
-           d="m 529.43293,256.78252 c 8.63029,-3.08726 27.15383,-6.45518 27.15383,-18.73404 0,-5.6132 -4.49055,-8.34963 -10.03358,-8.34963 l -20.418,0 c -2.17512,0 -2.87677,1.4033 -2.87677,3.36792 l 0,41.46748 c 0,2.17511 0.98231,3.64858 3.08726,3.64858 2.10495,0 3.08726,-1.47347 3.08726,-3.64858 l 0,-17.75173 z m 15.99761,-21.33015 c 2.45577,0 4.28006,0.84198 4.28006,3.57842 0,6.31484 -13.19101,8.48995 -20.27767,11.43688 l 0,-15.0153 15.99761,0 z" />
-        <path
-           style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:medium;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#78079a;fill-opacity:1;stroke:none"
-           inkscape:connector-curvature="0"
-           id="path4248"
-           d="m 566.52497,255.80021 c 0.91214,-4.49056 4.13973,-8.56013 10.87556,-8.56013 5.68336,0 9.26178,3.64858 9.54244,8.56013 l -20.418,0 z m 23.15443,4.77121 c 3.36792,0 3.43808,-0.77181 3.43808,-3.71874 0,-8.84078 -6.94633,-14.94513 -15.64678,-14.94513 -10.45458,0 -17.8219,7.15682 -17.8219,17.68157 0,12.34903 7.78831,18.38321 17.05008,18.38321 l 13.47167,0 c 1.89446,0 3.15743,-0.84198 3.15743,-2.66627 0,-1.82428 -1.26297,-2.66626 -3.15743,-2.66626 l -13.33134,0 c -5.75352,0 -11.08606,-3.92924 -10.5949,-12.06838 l 23.43509,0 z" />
-        <path
-           style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:medium;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#78079a;fill-opacity:1;stroke:none"
-           inkscape:connector-curvature="0"
-           id="path4250"
-           d="m 620.52676,265.34264 c 0,6.10435 -3.43809,8.27947 -9.26178,8.27947 -5.26237,0 -8.27946,-1.89446 -8.27946,-6.10436 0,-6.5955 9.47227,-8.56012 17.54124,-8.56012 l 0,6.38501 z m -5.68336,-17.26058 c 4.28006,0 5.68336,0.98231 5.68336,3.99941 l 0,2.10494 c -9.05128,0.56132 -23.71576,1.4033 -23.71576,13.612 0,6.66567 5.68336,10.59491 13.47167,10.59491 4.77122,0 7.0165,-1.26297 10.66508,-3.9994 0,2.24528 0.91214,3.57841 2.87676,3.57841 1.96462,0 2.87676,-1.33313 2.87676,-3.57841 l 0,-19.43569 c 0,-6.24468 -1.68396,-12.62969 -10.94573,-12.62969 l -12.98052,0 c -2.03478,0 -3.36791,0.91214 -3.36791,2.87676 0,1.96462 1.33313,2.87676 3.36791,2.87676 l 12.06838,0 z" />
-        <path
-           style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:medium;line-height:125%;font-family:'ITC Benguiat Gothic Std';-inkscape-font-specification:'ITC Benguiat Gothic Std Medium';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#78079a;fill-opacity:1;stroke:none"
-           inkscape:connector-curvature="0"
-           id="path4252"
-           d="m 635.47191,274.53425 c 0,2.10495 0.77181,3.64858 3.08725,3.64858 2.31545,0 3.08726,-1.54363 3.08726,-3.64858 l 0,-17.19041 c 11.71755,1.61379 15.50645,5.33253 17.19041,17.26057 0.28066,1.96462 0.56132,3.57842 3.0171,3.57842 2.03478,0 3.15742,-1.05248 3.15742,-3.29776 0,-7.9988 -4.13973,-17.19041 -12.27887,-19.64618 l 0,-0.14033 c 3.92924,-1.33313 9.6126,-5.89386 9.6126,-10.45458 0,-1.54363 -1.05247,-2.8066 -2.24528,-2.8066 -2.31544,0 -2.8066,1.6138 -5.05187,4.77122 -2.52594,3.71874 -7.29716,6.24468 -11.92805,6.24468 l -1.47346,0 0,-19.71635 c 0,-2.10495 -0.77181,-3.64858 -3.08726,-3.64858 -2.31544,0 -3.08725,1.54363 -3.08725,3.64858 l 0,41.39732 z" />
-      </g>
+         d="m 538.94589,277.69509 c 0,1.64203 0.60208,2.84619 2.40832,2.84619 1.80623,0 2.40832,-1.20416 2.40832,-2.84619 l 0,-13.40995 c 9.14064,1.2589 12.09631,4.15983 13.40994,13.46468 0.21894,1.53256 0.43788,2.79146 2.35358,2.79146 1.5873,0 2.46305,-0.82102 2.46305,-2.57252 0,-6.23972 -3.22934,-13.40995 -9.57853,-15.32565 l 0,-0.10947 c 3.06513,-1.03995 7.49862,-4.5977 7.49862,-8.15543 0,-1.20416 -0.82102,-2.18938 -1.7515,-2.18938 -1.80624,0 -2.18938,1.25889 -3.94088,3.72194 -1.97044,2.90093 -5.69239,4.87137 -9.30486,4.87137 l -1.14942,0 0,-15.38038 c 0,-1.64204 -0.60209,-2.8462 -2.40832,-2.8462 -1.80624,0 -2.40832,1.20416 -2.40832,2.8462 l 0,32.29333"
+         style=""
+         id="path4181" />
     </g>
   </g>
 </svg>
index d31171eca2e0bec2d98372e4cd71cb8eebf8458a..4db3b4b7498ea344e265f9239cc0992e2b4a2f32 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>MicroPeak Owner’s Manual</title><link rel="stylesheet" type="text/css" href="am.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /></head><body><div xml:lang="en" class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="idm1"></a>MicroPeak Owner’s Manual</h1></div><div><h2 class="subtitle">A recording altimeter for hobby rocketry</h2></div><div><h3 class="corpauthor">
-  <span class="inlinemediaobject"><img src="micropeak-oneline.svg" width="270" /></span>
-</h3></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3><code class="email">&lt;<a class="email" href="mailto:keithp@keithp.com">keithp@keithp.com</a>&gt;</code></div></div><div><p class="copyright">Copyright © 2018 Keith Packard</p></div><div><div class="legalnotice"><a id="idm19"></a><p>
-    This document is released under the terms of the
-    <a class="ulink" href="http://creativecommons.org/licenses/by-sa/3.0/" target="_top">
-      Creative Commons ShareAlike 3.0
-    </a>
-    license.
-  </p></div></div><div><a href="micropeak-revhistory.html">Revision History</a></div></div><hr /></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a id="_acknowledgements"></a>Acknowledgements</h1></div></div></div><p>Thanks to John Lyngdal for suggesting that we build something
-like this.</p><p>Have fun using these products, and we hope to meet all of you
-out on the rocket flight line somewhere.</p><div class="blockquote"><blockquote class="blockquote"><div class="literallayout"><p>Bdale Garbee, KB0G<br />
-NAR #87103, TRA #12201</p></div></blockquote></div><div class="blockquote"><blockquote class="blockquote"><div class="literallayout"><p>Keith Packard, KD7SQG<br />
-NAR #88757, TRA #12200</p></div></blockquote></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="#_using_micropeak">1. Using MicroPeak</a></span></dt><dt><span class="chapter"><a href="#_the_micropeak_usb_adapter">2. The MicroPeak USB adapter</a></span></dt><dd><dl><dt><span class="section"><a href="#_installing_the_micropeak_software">2.1. Installing the MicroPeak software</a></span></dt><dt><span class="section"><a href="#_downloading_micro_peak_data">2.2. Downloading Micro Peak data</a></span></dt><dt><span class="section"><a href="#_analyzing_micropeak_data">2.3. Analyzing MicroPeak Data</a></span></dt><dd><dl><dt><span class="section"><a href="#_micropeak_graphs">2.3.1. MicroPeak Graphs</a></span></dt><dt><span class="section"><a href="#_micropeak_flight_statistics">2.3.2. MicroPeak Flight Statistics</a></span></dt><dt><span class="section"><a href="#_raw_flight_data">2.3.3. Raw Flight Data</a></span></dt><dt><span class="section"><a href="#_configuring_the_graph">2.3.4. Configuring the Graph</a></span></dt></dl></dd><dt><span class="section"><a href="#_setting_micropeak_preferences">2.4. Setting MicroPeak Preferences</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_handling_precautions">A. Handling Precautions</a></span></dt><dt><span class="appendix"><a href="#_technical_information">B. Technical Information</a></span></dt><dd><dl><dt><span class="section"><a href="#_barometric_sensor">B.1. Barometric Sensor</a></span></dt><dt><span class="section"><a href="#_micro_controller">B.2. Micro-controller</a></span></dt><dt><span class="section"><a href="#_lithium_battery">B.3. Lithium Battery</a></span></dt><dt><span class="section"><a href="#_atmospheric_model">B.4. Atmospheric Model</a></span></dt><dt><span class="section"><a href="#_mechanical_considerations">B.5. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#_micropeak_programming_interface">B.6. MicroPeak Programming Interface</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_on_board_data_storage">C. On-board data storage</a></span></dt></dl></div><div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>1.1. <a href="#idm67">MicroPeak and Battery</a></dt><dt>2.1. <a href="#idm98">MicroPeak USB Adapter</a></dt><dt>2.2. <a href="#idm128">MicroPeak Application</a></dt><dt>2.3. <a href="#idm138">MicroPeak Device Dialog</a></dt><dt>2.4. <a href="#idm148">MicroPeak Download Dialog</a></dt><dt>2.5. <a href="#idm158">MicroPeak Downloading</a></dt><dt>2.6. <a href="#idm168">MicroPeak Save Dialog</a></dt><dt>2.7. <a href="#idm186">MicroPeak Graph</a></dt><dt>2.8. <a href="#idm196">MicroPeak Flight Statistics</a></dt><dt>2.9. <a href="#idm206">MicroPeak Raw Flight Data</a></dt><dt>2.10. <a href="#idm216">MicroPeak Graph Configuration</a></dt><dt>2.11. <a href="#idm226">MicroPeak Preferences</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>C.1. <a href="#idm300">MicroPeak EEPROM Data Storage</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_using_micropeak"></a>Chapter 1. Using MicroPeak</h1></div></div></div><p>MicroPeak is designed to be easy to use. Requiring no external
-components, flying takes just a few steps</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Install the battery
-</span></dt><dd>
-Fit a CR1025 battery into the plastic carrier. The positive
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<meta name="author" content="Keith Packard, Bdale Garbee">
+<meta name="copyright" content="Bdale Garbee and Keith Packard 2018">
+<title>MicroPeak Owner&#8217;s Manual</title>
+<link rel="stylesheet" href="./am.css">
+</head>
+<body class="book">
+<div id="header">
+<h1>MicroPeak Owner&#8217;s Manual</h1>
+<div class="details">
+<span id="author" class="author">Keith Packard</span><br>
+<span id="email" class="email"><a href="mailto:keithp@keithp.com">keithp@keithp.com</a></span><br>
+<span id="author2" class="author">Bdale Garbee</span><br>
+<span id="email2" class="email"><a href="mailto:bdale@gag.com">bdale@gag.com</a></span><br>
+<span id="revnumber">version v1.8.7,</span>
+<span id="revdate">8 Oct 2018</span>
+</div>
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_license">License</a></li>
+<li><a href="#_acknowledgements">Acknowledgements</a></li>
+<li><a href="#_using_micropeak">1. Using MicroPeak</a></li>
+<li><a href="#_the_micropeak_usb_adapter">2. The MicroPeak USB adapter</a>
+<ul class="sectlevel2">
+<li><a href="#_installing_the_micropeak_software">2.1. Installing the MicroPeak software</a></li>
+<li><a href="#_downloading_micro_peak_data">2.2. Downloading Micro Peak data</a></li>
+<li><a href="#_analyzing_micropeak_data">2.3. Analyzing MicroPeak Data</a></li>
+<li><a href="#_setting_micropeak_preferences">2.4. Setting MicroPeak Preferences</a></li>
+</ul>
+</li>
+<li><a href="#_handling_precautions">Appendix A: Handling Precautions</a></li>
+<li><a href="#_technical_information">Appendix B: Technical Information</a>
+<ul class="sectlevel2">
+<li><a href="#_barometric_sensor">B.1. Barometric Sensor</a></li>
+<li><a href="#_micro_controller">B.2. Micro-controller</a></li>
+<li><a href="#_lithium_battery">B.3. Lithium Battery</a></li>
+<li><a href="#_atmospheric_model">B.4. Atmospheric Model</a></li>
+<li><a href="#_mechanical_considerations">B.5. Mechanical Considerations</a></li>
+<li><a href="#_micropeak_programming_interface">B.6. MicroPeak Programming Interface</a></li>
+</ul>
+</li>
+<li><a href="#_on_board_data_storage">Appendix C: On-board data storage</a></li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div id="logo" class="imageblock">
+<div class="content">
+<a class="image" href="https://altusmetrum.org"><img src="altusmetrum-oneline.svg" alt="Altus Metrum"></a>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_license">License</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright © 2018 Bdale Garbee and Keith Packard</p>
+</div>
+<div class="paragraph">
+<p>This document is released under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons ShareAlike 3.0 License</a></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_acknowledgements">Acknowledgements</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Thanks to John Lyngdal for suggesting that we build something
+like this.</p>
+</div>
+<div class="paragraph">
+<p>Have fun using these products, and we hope to meet all of you
+out on the rocket flight line somewhere.</p>
+</div>
+<div class="verseblock">
+<pre class="content">Bdale Garbee, KB0G
+NAR #87103, TRA #12201</pre>
+</div>
+<div class="verseblock">
+<pre class="content">Keith Packard, KD7SQG
+NAR #88757, TRA #12200</pre>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_using_micropeak">1. Using MicroPeak</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>MicroPeak is designed to be easy to use. Requiring no external
+components, flying takes just a few steps</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Install the battery</dt>
+<dd>
+<p>Fit a CR1025 battery into the plastic carrier. The positive
 (+) terminal should be towards the more open side of the
 carrier. Slip the carrier into the battery holder with the
-positive (+) terminal facing away from the circuit board.
-</dd></dl></div><div class="figure"><a id="idm67"></a><p class="title"><strong>Figure 1.1. MicroPeak and Battery</strong></p><div class="figure-contents"><div class="mediaobject"><img src="micropeak-back.jpg" width="405" alt="micropeak-back.jpg" /></div></div></div><br class="figure-break" /><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Install MicroPeak in your rocket
-</span></dt><dd>
-This can be as simple as preparing a soft cushion of wadding
+positive (+) terminal facing away from the circuit board.</p>
+</dd>
+</dl>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="micropeak-back.jpg" alt="micropeak back" width="430">
+</div>
+<div class="title">Figure 1. MicroPeak and Battery</div>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Install MicroPeak in your rocket</dt>
+<dd>
+<p>This can be as simple as preparing a soft cushion of wadding
 inside a vented model payload bay. Wherever you mount it,
 make sure you protect the barometric sensor from corrosive
 ejection gasses as those will damage the sensor, and shield
-it from light as that can cause incorrect sensor readings.
-</dd><dt><span class="term">
-Turn MicroPeak on
-</span></dt><dd>
-Slide the switch so that the actuator covers the <span class="emphasis"><em>1</em></span> printed
+it from light as that can cause incorrect sensor readings.</p>
+</dd>
+<dt class="hdlist1">Turn MicroPeak on</dt>
+<dd>
+<p>Slide the switch so that the actuator covers the '1' printed
 on the board. MicroPeak will report the maximum height of
 the last flight in decimeters using a sequence of flashes on
 the LED. A sequence of short flashes indicates one digit. A
 single long flash indicates zero. The height is reported in
 decimeters, so the last digit will be tenths of a meter. For
 example, if MicroPeak reports 5 4 4 3, then the maximum
-height of the last flight was 544.3m, or 1786 feet.
-</dd><dt><span class="term">
-Finish preparing the rocket for flight
-</span></dt><dd>
-After the previous flight data have been reported, MicroPeak
+height of the last flight was 544.3m, or 1786 feet.</p>
+</dd>
+<dt class="hdlist1">Finish preparing the rocket for flight</dt>
+<dd>
+<p>After the previous flight data have been reported, MicroPeak
 waits for one minute before starting to check for
 launch. This gives you time to finish assembling the
 rocket. As those activities might cause pressure changes
@@ -50,11 +148,11 @@ boost. If you need to do anything to the airframe after the
 one minute window passes, make sure to be careful not to
 disturb the altimeter. The LED will remain dark during the
 one minute delay, but after that, it will start blinking
-once every 3 seconds.
-</dd><dt><span class="term">
-Fly the rocket
-</span></dt><dd>
-Once the rocket passes about 30m in height (100 feet), the
+once every 3 seconds.</p>
+</dd>
+<dt class="hdlist1">Fly the rocket</dt>
+<dd>
+<p>Once the rocket passes about 30m in height (100 feet), the
 micro-controller will record the ground pressure and track
 the pressure seen during the flight. In this mode, the LED
 flickers rapidly. When the rocket lands, and the pressure
@@ -62,83 +160,218 @@ stabilizes, the micro-controller will record the minimum
 pressure pressure experienced during the flight, compute the
 height represented by the difference in air pressure and
 blink that value out on the LED. After that, MicroPeak
-powers down to conserve battery power.
-</dd><dt><span class="term">
-Recover the data
-</span></dt><dd>
-Turn MicroPeak off and then back on. MicroPeak will blink
+powers down to conserve battery power.</p>
+</dd>
+<dt class="hdlist1">Recover the data</dt>
+<dd>
+<p>Turn MicroPeak off and then back on. MicroPeak will blink
 out the maximum height for the last flight. Turn MicroPeak
-back off to conserve battery power.
-</dd></dl></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_the_micropeak_usb_adapter"></a>Chapter 2. The MicroPeak USB adapter</h1></div></div></div><div class="figure"><a id="idm98"></a><p class="title"><strong>Figure 2.1. MicroPeak USB Adapter</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="MicroPeakUSB-2.0.jpg" align="middle" width="405" alt="MicroPeakUSB-2.0.jpg" /></div></div></div><br class="figure-break" /><p>MicroPeak stores barometric pressure information for the first
+back off to conserve battery power.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_the_micropeak_usb_adapter">2. The MicroPeak USB adapter</h2>
+<div class="sectionbody">
+<div class="imageblock text-center">
+<div class="content">
+<img src="MicroPeakUSB-2.0.jpg" alt="MicroPeakUSB 2.0" width="430">
+</div>
+<div class="title">Figure 2. MicroPeak USB Adapter</div>
+</div>
+<div class="paragraph">
+<p>MicroPeak stores barometric pressure information for the first
 48 seconds of the flight in on-board non-volatile memory. The
 contents of this memory can be downloaded to a computer using
-the MicroPeak USB adapter.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_installing_the_micropeak_software"></a>2.1. Installing the MicroPeak software</h2></div></div></div><p>The MicroPeak application runs on Linux, Mac OS X and
+the MicroPeak USB adapter.</p>
+</div>
+<div class="sect2">
+<h3 id="_installing_the_micropeak_software">2.1. Installing the MicroPeak software</h3>
+<div class="paragraph">
+<p>The MicroPeak application runs on Linux, Mac OS X and
 Windows. You can download the latest version from
-<a class="ulink" href="http://altusmetrum.org/MicroPeak" target="_top">http://altusmetrum.org/MicroPeak</a></p><p>On Mac OS X and Windows, the FTDI USB device driver
+<a href="http://altusmetrum.org/MicroPeak" class="bare">http://altusmetrum.org/MicroPeak</a></p>
+</div>
+<div class="paragraph">
+<p>On Mac OS X and Windows, the FTDI USB device driver
 needs to be installed. A compatible version of this
 driver is included with the MicroPeak application, but
 you may want to download a newer version from
-<a class="ulink" href="http://www.ftdichip.com/FTDrivers.htm" target="_top">http://www.ftdichip.com/FTDrivers.htm</a></p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_downloading_micro_peak_data"></a>2.2. Downloading Micro Peak data</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Plug the MicroPeak USB adapter in to your computer.
-</li><li class="listitem">
-Start the MicroPeak application.
-</li></ul></div><div class="informalfigure"><div class="mediaobject" align="center"><img src="micropeak-nofont.svg" align="middle" width="45" alt="micropeak-nofont.svg" /></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Click on the Download button at the top of the
-window.
-</li></ul></div><div class="figure"><a id="idm128"></a><p class="title"><strong>Figure 2.2. MicroPeak Application</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="micropeak-app.png" align="middle" width="405" alt="micropeak-app.png" /></div></div></div><br class="figure-break" /><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Select from the listed devices. There will probably
-be only one.
-</li></ul></div><div class="figure"><a id="idm138"></a><p class="title"><strong>Figure 2.3. MicroPeak Device Dialog</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="micropeak-device-dialog.png" align="middle" width="207" alt="micropeak-device-dialog.png" /></div></div></div><br class="figure-break" /><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-The application will now wait until it receives
-valid data from the MicroPeak USB adapter.
-</li></ul></div><div class="figure"><a id="idm148"></a><p class="title"><strong>Figure 2.4. MicroPeak Download Dialog</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="micropeak-download.png" align="middle" width="180" alt="micropeak-download.png" /></div></div></div><br class="figure-break" /><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-The MicroPeak USB adapter has a small
+<a href="http://www.ftdichip.com/FTDrivers.htm" class="bare">http://www.ftdichip.com/FTDrivers.htm</a></p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_downloading_micro_peak_data">2.2. Downloading Micro Peak data</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Plug the MicroPeak USB adapter in to your computer.</p>
+</li>
+<li>
+<p>Start the MicroPeak application.</p>
+</li>
+</ul>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-nofont.svg" alt="micropeak nofont" width="50">
+</div>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Click on the Download button at the top of the
+window.</p>
+</li>
+</ul>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-app.png" alt="micropeak app" width="430">
+</div>
+<div class="title">Figure 3. MicroPeak Application</div>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Select from the listed devices. There will probably
+be only one.</p>
+</li>
+</ul>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-device-dialog.png" alt="micropeak device dialog" width="220">
+</div>
+<div class="title">Figure 4. MicroPeak Device Dialog</div>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The application will now wait until it receives
+valid data from the MicroPeak USB adapter.</p>
+</li>
+</ul>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-download.png" alt="micropeak download" width="200">
+</div>
+<div class="title">Figure 5. MicroPeak Download Dialog</div>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The MicroPeak USB adapter has a small
 phototransistor under the hole in the center of the
 box.  Locate this, turn on the MicroPeak and place
 the orange LED on the MicroPeak directly inside the
 hole, resting the MicroPeak itself on the box. You
 should see the blue LED on the MicroPeak USB adapter
 blinking in time with the orange LED on the
-MicroPeak board itself.
-</li></ul></div><div class="figure"><a id="idm158"></a><p class="title"><strong>Figure 2.5. MicroPeak Downloading</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="MicroPeakUSB-2.0-inuse.jpg" align="middle" width="405" alt="MicroPeakUSB-2.0-inuse.jpg" /></div></div></div><br class="figure-break" /><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-After the maximum flight height is reported,
+MicroPeak board itself.</p>
+</li>
+</ul>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="MicroPeakUSB-2.0-inuse.jpg" alt="MicroPeakUSB 2.0 inuse" width="430">
+</div>
+<div class="title">Figure 6. MicroPeak Downloading</div>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>After the maximum flight height is reported,
 MicroPeak will pause for a few seconds, blink the
 LED four times rapidly and then send the data in one
 long blur on the LED. The MicroPeak application
 should receive the data. When it does, it will
 present the data in a graph and offer to save the
 data to a file. If not, you can power cycle the
-MicroPeak board and try again.
-</li></ul></div><div class="figure"><a id="idm168"></a><p class="title"><strong>Figure 2.6. MicroPeak Save Dialog</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="micropeak-save-dialog.png" align="middle" width="207" alt="micropeak-save-dialog.png" /></div></div></div><br class="figure-break" /><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Once the data are saved, a graph will be displayed
+MicroPeak board and try again.</p>
+</li>
+</ul>
+</div>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-save-dialog.png" alt="micropeak save dialog" width="220">
+</div>
+<div class="title">Figure 7. MicroPeak Save Dialog</div>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Once the data are saved, a graph will be displayed
 with height, speed and acceleration values computed
 from the recorded barometric pressure data. See
-&lt;&lt;_analyzing_micropeak_data&gt; for more details on that.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_analyzing_micropeak_data"></a>2.3. Analyzing MicroPeak Data</h2></div></div></div><p>The MicroPeak application can present flight data in
+&lt;&lt;_analyzing_micropeak_data&gt; for more details on that.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_analyzing_micropeak_data">2.3. Analyzing MicroPeak Data</h3>
+<div class="paragraph">
+<p>The MicroPeak application can present flight data in
 the form of a graph, a collection of computed
-statistics or in tabular form.</p><p>MicroPeak collects raw barometric pressure data which
+statistics or in tabular form.</p>
+</div>
+<div class="paragraph">
+<p>MicroPeak collects raw barometric pressure data which
 is then used to compute the remaining data. Altitude
 is computed through a standard atmospheric
 model. Absolute error in this data will be affected by
 local atmospheric conditions. Fortunately, these
 errors tend to mostly cancel out, so the error in the
 height computation is much smaller than the error in
-altitude would be.</p><p>Speed and acceleration are computed by first smoothing
+altitude would be.</p>
+</div>
+<div class="paragraph">
+<p>Speed and acceleration are computed by first smoothing
 the height data with a Gaussian window averaging
 filter. For speed data, this average uses seven
 samples. For acceleration data, eleven samples are
 used. These were chosen to provide reasonably smooth
 speed and acceleration data, which would otherwise be
-swamped with noise.</p><p>The File menu has operations to open existing flight
+swamped with noise.</p>
+</div>
+<div class="paragraph">
+<p>The File menu has operations to open existing flight
 logs, Download new data from MicroPeak, Save a copy of
 the flight log to a new file, Export the tabular data
 (as seen in the Raw Data tab) to a file, change the
 application Preferences, Close the current window or
-close all windows and Exit the application.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_micropeak_graphs"></a>2.3.1. MicroPeak Graphs</h3></div></div></div><div class="figure"><a id="idm186"></a><p class="title"><strong>Figure 2.7. MicroPeak Graph</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="micropeak-graph.png" align="middle" width="405" alt="micropeak-graph.png" /></div></div></div><br class="figure-break" /><p>Under the Graph tab, the height, speed and acceleration values
+close all windows and Exit the application.</p>
+</div>
+<div class="sect3">
+<h4 id="_micropeak_graphs">2.3.1. MicroPeak Graphs</h4>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-graph.png" alt="micropeak graph" width="430">
+</div>
+<div class="title">Figure 8. MicroPeak Graph</div>
+</div>
+<div class="paragraph">
+<p>Under the Graph tab, the height, speed and acceleration values
 are displayed together. You can zoom in on the graph by
 clicking and dragging to sweep out an area of
 interest. Right-click on the plot to bring up a menu that will
-let you save, copy or print the graph.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_micropeak_flight_statistics"></a>2.3.2. MicroPeak Flight Statistics</h3></div></div></div><div class="figure"><a id="idm196"></a><p class="title"><strong>Figure 2.8. MicroPeak Flight Statistics</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="micropeak-statistics.png" align="middle" width="405" alt="micropeak-statistics.png" /></div></div></div><br class="figure-break" /><p>The Statistics tab presents overall data from
+let you save, copy or print the graph.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_micropeak_flight_statistics">2.3.2. MicroPeak Flight Statistics</h4>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-statistics.png" alt="micropeak statistics" width="430">
+</div>
+<div class="title">Figure 9. MicroPeak Flight Statistics</div>
+</div>
+<div class="paragraph">
+<p>The Statistics tab presents overall data from
 the flight. Note that the Maximum height value
 is taken from the minumum pressure captured in
 flight, and may be different from the apparant
@@ -146,114 +379,234 @@ apogee value as the on-board data are sampled
 twice as fast as the recorded values, or
 because the true apogee occurred after the
 on-board memory was full. Each value is
-presented in several units as appropriate.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_raw_flight_data"></a>2.3.3. Raw Flight Data</h3></div></div></div><div class="figure"><a id="idm206"></a><p class="title"><strong>Figure 2.9. MicroPeak Raw Flight Data</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="micropeak-raw-data.png" align="middle" width="405" alt="micropeak-raw-data.png" /></div></div></div><br class="figure-break" /><p>A table consisting of the both the raw barometric pressure
-data and values computed from that for each recorded time.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuring_the_graph"></a>2.3.4. Configuring the Graph</h3></div></div></div><div class="figure"><a id="idm216"></a><p class="title"><strong>Figure 2.10. MicroPeak Graph Configuration</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="micropeak-graph-configure.png" align="middle" width="405" alt="micropeak-graph-configure.png" /></div></div></div><br class="figure-break" /><p>This selects which graph elements to show, and lets you
-switch between metric and imperial units</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_setting_micropeak_preferences"></a>2.4. Setting MicroPeak Preferences</h2></div></div></div><div class="figure"><a id="idm226"></a><p class="title"><strong>Figure 2.11. MicroPeak Preferences</strong></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="micropeak-preferences.png" align="middle" width="162" alt="micropeak-preferences.png" /></div></div></div><br class="figure-break" /><p>The MicroPeak application has a few user settings which are
+presented in several units as appropriate.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_raw_flight_data">2.3.3. Raw Flight Data</h4>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-raw-data.png" alt="micropeak raw data" width="430">
+</div>
+<div class="title">Figure 10. MicroPeak Raw Flight Data</div>
+</div>
+<div class="paragraph">
+<p>A table consisting of the both the raw barometric pressure
+data and values computed from that for each recorded time.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_configuring_the_graph">2.3.4. Configuring the Graph</h4>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-graph-configure.png" alt="micropeak graph configure" width="430">
+</div>
+<div class="title">Figure 11. MicroPeak Graph Configuration</div>
+</div>
+<div class="paragraph">
+<p>This selects which graph elements to show, and lets you
+switch between metric and imperial units</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_setting_micropeak_preferences">2.4. Setting MicroPeak Preferences</h3>
+<div class="imageblock text-center">
+<div class="content">
+<img src="micropeak-preferences.png" alt="micropeak preferences" width="170">
+</div>
+<div class="title">Figure 12. MicroPeak Preferences</div>
+</div>
+<div class="paragraph">
+<p>The MicroPeak application has a few user settings which are
 configured through the Preferences dialog, which can be
-accessed from the File menu.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Log Directory
-</span></dt><dd>
-The Log Directory is where flight data will be
+accessed from the File menu.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Log Directory</dt>
+<dd>
+<p>The Log Directory is where flight data will be
 saved to and loaded from by default. Of
 course, you can always navigate to other
 directories in the file chooser windows, this
-setting is just the starting point.
-</dd><dt><span class="term">
-Imperial Units
-</span></dt><dd>
-If you prefer to see your graph data in feet
+setting is just the starting point.</p>
+</dd>
+<dt class="hdlist1">Imperial Units</dt>
+<dd>
+<p>If you prefer to see your graph data in feet
 and miles per hour instead of meters and
 meters per second, you can select Imperial
-Units.
-</dd><dt><span class="term">
-Serial Debug
-</span></dt><dd>
-To see what data is actually arriving over the
+Units.</p>
+</dd>
+<dt class="hdlist1">Serial Debug</dt>
+<dd>
+<p>To see what data is actually arriving over the
 serial port, start the MicroPeak application
 from a command prompt and select the Serial
 Debug option. This can be useful in debugging
 serial communication problems, but most people
-need never choose this.
-</dd><dt><span class="term">
-Font Size
-</span></dt><dd>
-You can adjust the size of the text in the
+need never choose this.</p>
+</dd>
+<dt class="hdlist1">Font Size</dt>
+<dd>
+<p>You can adjust the size of the text in the
 Statistics tab by changing the Font size
 preference. There are three settings, with
 luck one will both fit on your screen and
-provide readable values.
-</dd><dt><span class="term">
-Look &amp; Feel
-</span></dt><dd>
-The Look &amp; feel menu shows a list of available
+provide readable values.</p>
+</dd>
+<dt class="hdlist1">Look &amp; Feel</dt>
+<dd>
+<p>The Look &amp; feel menu shows a list of available
 application appearance choices. By default,
 the MicroPeak application tries to blend in
 with other applications, but you may choose
-some other appearance if you like.
-</dd></dl></div><p>Note that MicroPeak shares a subset of the
+some other appearance if you like.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>Note that MicroPeak shares a subset of the
 AltosUI preferences, so if you use both of
 these applications, change in one application
-will affect the other.</p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_handling_precautions"></a>Appendix A. Handling Precautions</h1></div></div></div><p>All Altus Metrum products are sophisticated electronic
+will affect the other.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_handling_precautions">Appendix A: Handling Precautions</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>All Altus Metrum products are sophisticated electronic
 devices.  When handled gently and properly installed in an
 air-frame, they will deliver impressive results.  However, as
 with all electronic devices, there are some precautions you
-must take.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>The CR1025 Lithium batteries have an extraordinary power
+must take.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+The CR1025 Lithium batteries have an extraordinary power
 density.  This is great because we can fly with much less
-battery mass but if they are punctured or their contacts
+battery mass&#8230;&#8203; but if they are punctured or their contacts
 are allowed to short, they can and will release their energy
 very rapidly!  Thus we recommend that you take some care when
 handling MicroPeak to keep conductive material from coming in
-contact with the exposed metal elements.</p></div><p>The barometric sensor used in MicroPeak is sensitive to
+contact with the exposed metal elements.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>The barometric sensor used in MicroPeak is sensitive to
 sunlight. Please consider this when designing an
 installation. Many model rockets with payload bays use clear
 plastic for the payload bay. Replacing these with an opaque
 cardboard tube, painting them, or wrapping them with a layer
 of masking tape are all reasonable approaches to keep the
-sensor out of direct sunlight.</p><p>The barometric sensor sampling ports must be able to
+sensor out of direct sunlight.</p>
+</div>
+<div class="paragraph">
+<p>The barometric sensor sampling ports must be able to
 "breathe", both by not being covered by foam or tape or other
 materials that might directly block the hole on the top of the
 sensor, and also by having a suitable static vent to outside
-air.</p><p>As with all other rocketry electronics, Altus Metrum
+air.</p>
+</div>
+<div class="paragraph">
+<p>As with all other rocketry electronics, Altus Metrum
 altimeters must be protected from exposure to corrosive motor
-exhaust and ejection charge gasses.</p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_technical_information"></a>Appendix B. Technical Information</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_barometric_sensor"></a>B.1. Barometric Sensor</h2></div></div></div><p>MicroPeak uses the Measurement Specialties MS5607
+exhaust and ejection charge gasses.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_technical_information">Appendix B: Technical Information</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_barometric_sensor">B.1. Barometric Sensor</h3>
+<div class="paragraph">
+<p>MicroPeak uses the Measurement Specialties MS5607
 sensor. This has a range of 120kPa to 1kPa with an
-absolute accuracy of 150Pa and a resolution of 2.4Pa.</p><p>The pressure range corresponds roughly to an altitude
+absolute accuracy of 150Pa and a resolution of 2.4Pa.</p>
+</div>
+<div class="paragraph">
+<p>The pressure range corresponds roughly to an altitude
 range of -1500m (-4900 feet) to 31000m (102000 feet),
 while the resolution is approximately 20cm (8 inches)
-near sea level and 60cm (24in) at 10000m (33000 feet).</p><p>Ground pressure is computed from an average of 16
+near sea level and 60cm (24in) at 10000m (33000 feet).</p>
+</div>
+<div class="paragraph">
+<p>Ground pressure is computed from an average of 16
 samples, taken while the altimeter is at rest. The
 flight pressure used to report maximum height is
 computed from a Kalman filter designed to smooth out
 any minor noise in the sensor values. The flight
 pressure recorded to non-volatile storage is
-unfiltered, coming directly from the pressure sensor.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_micro_controller"></a>B.2. Micro-controller</h2></div></div></div><p>MicroPeak uses an Atmel ATtiny85
+unfiltered, coming directly from the pressure sensor.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_micro_controller">B.2. Micro-controller</h3>
+<div class="paragraph">
+<p>MicroPeak uses an Atmel ATtiny85
 micro-controller. This tiny CPU contains 8kB of flash
 for the application, 512B of RAM for temporary data
 storage and 512B of EEPROM for non-volatile storage of
-previous flight data.</p><p>The ATtiny85 has a low-power mode which turns off all
+previous flight data.</p>
+</div>
+<div class="paragraph">
+<p>The ATtiny85 has a low-power mode which turns off all
 of the clocks and powers down most of the internal
 components. In this mode, the chip consumes only .1μA
 of power. MicroPeak uses this mode once the flight has
-ended to preserve battery power.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_lithium_battery"></a>B.3. Lithium Battery</h2></div></div></div><p>The CR1025 battery used by MicroPeak holds 30mAh of
+ended to preserve battery power.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_lithium_battery">B.3. Lithium Battery</h3>
+<div class="paragraph">
+<p>The CR1025 battery used by MicroPeak holds 30mAh of
 power, which is sufficient to run for over 40
 hours. Because MicroPeak powers down on landing, run
 time includes only time sitting on the launch pad or
-during flight.</p><p>The large positive terminal (+) is usually marked,
+during flight.</p>
+</div>
+<div class="paragraph">
+<p>The large positive terminal (+) is usually marked,
 while the smaller negative terminal is not. Make sure
 you install the battery with the positive terminal
 facing away from the circuit board where it will be in
 contact with the metal battery holder. A small pad on
 the circuit board makes contact with the negative
-battery terminal.</p><p>Shipping restrictions may prevent us from including a
+battery terminal.</p>
+</div>
+<div class="paragraph">
+<p>Shipping restrictions may prevent us from including a
 CR1025 battery with MicroPeak. If so, many stores
 carry CR1025 batteries as they are commonly used in
-small electronic devices such as flash lights.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_atmospheric_model"></a>B.4. Atmospheric Model</h2></div></div></div><p>MicroPeak contains a fixed atmospheric model which is
+small electronic devices such as flash lights.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_atmospheric_model">B.4. Atmospheric Model</h3>
+<div class="paragraph">
+<p>MicroPeak contains a fixed atmospheric model which is
 used to convert barometric pressure into altitude. The
 model was converted into a 469-element piece-wise
 linear approximation which is then used to compute the
 altitude of the ground and apogee. The difference
 between these represents the maximum height of the
-flight.</p><p>The model assumes a particular set of atmospheric
+flight.</p>
+</div>
+<div class="paragraph">
+<p>The model assumes a particular set of atmospheric
 conditions, which, while a reasonable average, cannot
 represent the changing nature of the real
 atmosphere. Fortunately, for flights reasonably close
@@ -261,66 +614,161 @@ to the ground, the effect of this global inaccuracy
 are largely canceled out when the computed ground
 altitude is subtracted from the computed apogee
 altitude, so the resulting height is more accurate
-than either the ground or apogee altitudes.</p><p>Because the raw pressure data is recorded to
+than either the ground or apogee altitudes.</p>
+</div>
+<div class="paragraph">
+<p>Because the raw pressure data is recorded to
 non-volatile storage, you can use that, along with a
 more sophisticated atmospheric model, to compute your
-own altitude values.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_mechanical_considerations"></a>B.5. Mechanical Considerations</h2></div></div></div><p>MicroPeak is designed to be rugged enough for typical
+own altitude values.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_mechanical_considerations">B.5. Mechanical Considerations</h3>
+<div class="paragraph">
+<p>MicroPeak is designed to be rugged enough for typical
 rocketry applications. It contains two moving parts,
 the battery holder and the power switch, which were
-selected for their ruggedness.</p><p>The MicroPeak battery holder is designed to withstand
+selected for their ruggedness.</p>
+</div>
+<div class="paragraph">
+<p>The MicroPeak battery holder is designed to withstand
 impact up to 150g without breaking contact (or, worse
 yet, causing the battery to fall out). That means it
 should stand up to almost any launch you care to try,
-and should withstand fairly rough landings.</p><p>The power switch is designed to withstand up to 50g
+and should withstand fairly rough landings.</p>
+</div>
+<div class="paragraph">
+<p>The power switch is designed to withstand up to 50g
 forces in any direction. Because it is a sliding
 switch, orienting the switch perpendicular to the
 direction of rocket travel will serve to further
-protect the switch from launch forces.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_micropeak_programming_interface"></a>B.6. MicroPeak Programming Interface</h2></div></div></div><p>MicroPeak exposes a standard 6-pin AVR programming
+protect the switch from launch forces.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_micropeak_programming_interface">B.6. MicroPeak Programming Interface</h3>
+<div class="paragraph">
+<p>MicroPeak exposes a standard 6-pin AVR programming
 interface, but not using the usual 2x3 array of pins
 on 0.1" centers. Instead, there is a single row of
 tiny 0.60mm × 0.85mm pads on 1.20mm centers exposed
-near the edge of the circuit board. We couldnt find
+near the edge of the circuit board. We couldn&#8217;t find
 any connector that was small enough to include on the
-circuit board.</p><p>In lieu of an actual connector, the easiest way to
+circuit board.</p>
+</div>
+<div class="paragraph">
+<p>In lieu of an actual connector, the easiest way to
 connect to the bare pads is through a set of Pogo
 pins. These spring-loaded contacts are designed to
-connect in precisely this way. Weve designed a
+connect in precisely this way. We&#8217;ve designed a
 programming jig, the MicroPeak Pogo Pin board which
 provides a standard AVR interface on one end and a
 recessed slot for MicroPeak to align the board with
-the Pogo Pins.</p><p>The MicroPeak Pogo Pin board is not a complete AVR
+the Pogo Pins.</p>
+</div>
+<div class="paragraph">
+<p>The MicroPeak Pogo Pin board is not a complete AVR
 programmer, it is an interface board that provides a
 3.3V regulated power supply to run the MicroPeak via
 USB and a standard 6-pin AVR programming interface
 with the usual 2x3 grid of pins on 0.1" centers. This
-can be connected to any AVR programming dongle.</p><p>The AVR programming interface cannot run faster than ¼
+can be connected to any AVR programming dongle.</p>
+</div>
+<div class="paragraph">
+<p>The AVR programming interface cannot run faster than ¼
 of the AVR CPU clock frequency. Because MicroPeak runs
 at 250kHz to save power, you must configure your AVR
 programming system to clock the AVR programming
 interface at no faster than 62.5kHz, or a clock period
-of 32µS.</p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_on_board_data_storage"></a>Appendix C. On-board data storage</h1></div></div></div><p>The ATtiny85 has 512 bytes of non-volatile storage, separate
+of 32µS.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_on_board_data_storage">Appendix C: On-board data storage</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The ATtiny85 has 512 bytes of non-volatile storage, separate
 from the code storage memory. The MicroPeak firmware uses this
 to store information about the last completed
 flight. Barometric measurements from the ground before launch
 and at apogee are stored, and used at power-on to compute the
-height of the last flight.</p><p>In addition to the data used to present the height of the last
+height of the last flight.</p>
+</div>
+<div class="paragraph">
+<p>In addition to the data used to present the height of the last
 flight, MicroPeak also stores barometric information sampled
 at regular intervals during the flight. This is the
 information captured with the MicroPeak USB adapter. It can
-also be read from MicroPeak through any AVR programming tool.</p><div class="table"><a id="idm300"></a><p class="title"><strong>Table C.1. MicroPeak EEPROM Data Storage</strong></p><div class="table-contents"><table class="table" summary="MicroPeak EEPROM Data Storage" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Address</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Size (bytes)</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0x000</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Average ground pressure (Pa)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0x004</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Minimum flight pressure (Pa)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0x008</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Number of in-flight samples</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0x00a … 0x1fe</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="" align="left" valign="top"><p>Instantaneous flight pressure (Pa) low 16 bits</p></td></tr></tbody></table></div></div><br class="table-break" /><p>All EEPROM data are stored least-significant byte first. The
+also be read from MicroPeak through any AVR programming tool.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 1. MicroPeak EEPROM Data Storage</caption>
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 10%;">
+<col style="width: 70%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Address</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Size (bytes)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x000</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Average ground pressure (Pa)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x004</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Minimum flight pressure (Pa)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x008</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Number of in-flight samples</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x00a … 0x1fe</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Instantaneous flight pressure (Pa) low 16 bits</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>All EEPROM data are stored least-significant byte first. The
 instantaneous flight pressure data are stored without the
 upper 16 bits of data. The upper bits can be reconstructed
-from the previous sample, assuming that pressure doesnt
+from the previous sample, assuming that pressure doesn&#8217;t
 change by more more than 32kPa in a single sample
-interval. Note that this pressure data is <span class="strong"><strong>not</strong></span> filtered in
+interval. Note that this pressure data is <strong>not</strong> filtered in
 any way, while both the recorded ground and apogee pressure
-values are, so you shouldnt expect the minimum instantaneous
+values are, so you shouldn&#8217;t expect the minimum instantaneous
 pressure value to match the recorded minimum pressure value
-exactly.</p><p>MicroPeak samples pressure every 96ms, but stores only every
+exactly.</p>
+</div>
+<div class="paragraph">
+<p>MicroPeak samples pressure every 96ms, but stores only every
 other sample in the EEPROM. This provides for 251 pressure
 samples at 192ms intervals, or 48.192s of storage. The clock
 used for these samples is a factory calibrated RC circuit
 built into the ATtiny85 and is accurate only to within ±10% at
 25°C. So, you can count on the pressure data being accurate,
 but speed or acceleration data computed from this will be
-limited by the accuracy of this clock.</p></div></div></body></html>
\ No newline at end of file
+limited by the accuracy of this clock.</p>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Version v1.8.7<br>
+Last updated 2019-01-03 00:31:55 -0700
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
index 633a2a37c519cd8641000e062d9c50d7f284a70b..3d84d31fe67c40983af8022279f4b041c78f2b84 100644 (file)
Binary files a/AltOS/doc/micropeak.pdf and b/AltOS/doc/micropeak.pdf differ
index 7feb468ef819d75276a4abcaea58c0e4a1fd1161..8d72e9afeb0d511ede31a6a54061bbae9ad8ec6a 100644 (file)
Binary files a/AltOS/doc/telegps-outline.pdf and b/AltOS/doc/telegps-outline.pdf differ
index 34532f2dce9daa4088f6795aa39da34a972f3473..cb52a44f8597d748ba30268f4ec0deb41c502773 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>TeleGPS Owner’s Manual</title><link rel="stylesheet" type="text/css" href="am.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /></head><body><div xml:lang="en" class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="idm1"></a>TeleGPS Owner’s Manual</h1></div><div><h2 class="subtitle">An Owner's Manual for the TeleGPS recording GPS tracker</h2></div><div><h3 class="corpauthor">
-  <span class="inlinemediaobject"><img src="telegps-oneline.svg" width="270" /></span>
-</h3></div><div><div class="author"><h3 class="author"><span class="firstname">Bdale</span> <span class="surname">Garbee</span></h3><code class="email">&lt;<a class="email" href="mailto:bdale@gag.com">bdale@gag.com</a>&gt;</code></div></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3><code class="email">&lt;<a class="email" href="mailto:keithp@keithp.com">keithp@keithp.com</a>&gt;</code></div></div><div><p class="copyright">Copyright © 2018 Bdale Garbee and Keith Packard</p></div><div><div class="legalnotice"><a id="idm23"></a><p>
-    This document is released under the terms of the
-    <a class="ulink" href="http://creativecommons.org/licenses/by-sa/3.0/" target="_top">
-      Creative Commons ShareAlike 3.0
-    </a>
-    license.
-  </p></div></div><div><a href="telegps-revhistory.html">Revision History</a></div></div><hr /></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a id="_acknowledgments"></a>Acknowledgments</h1></div></div></div><p>Thanks to Anthony (AJ) Towns for major contributions including
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<meta name="author" content="Keith Packard, Bdale Garbee">
+<meta name="copyright" content="Bdale Garbee and Keith Packard 2018">
+<title>TeleGPS Owner&#8217;s Manual</title>
+<link rel="stylesheet" href="./am.css">
+</head>
+<body class="article">
+<div id="header">
+<h1>TeleGPS Owner&#8217;s Manual</h1>
+<div class="details">
+<span id="author" class="author">Keith Packard</span><br>
+<span id="email" class="email"><a href="mailto:keithp@keithp.com">keithp@keithp.com</a></span><br>
+<span id="author2" class="author">Bdale Garbee</span><br>
+<span id="email2" class="email"><a href="mailto:bdale@gag.com">bdale@gag.com</a></span><br>
+<span id="revnumber">version v1.8.7,</span>
+<span id="revdate">8 Oct 2018</span>
+<br><span id="revremark">Fix TeleBT v4.0 RF calibration to factory value when reflashing. Fix map images. Fix Mac OS X support.</span>
+</div>
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_license">License</a></li>
+<li><a href="#_acknowledgments">Acknowledgments</a></li>
+<li><a href="#_telegps_quick_start_guide">1. TeleGPS Quick Start Guide</a></li>
+<li><a href="#_using_telegps_hardware">2. Using TeleGPS Hardware</a>
+<ul class="sectlevel2">
+<li><a href="#_hooking_up_lithium_polymer_batteries">2.1. Hooking Up Lithium Polymer Batteries</a></li>
+<li><a href="#_on_board_data_recording">2.2. On-board Data Recording</a></li>
+<li><a href="#_installation">2.3. Installation</a></li>
+</ul>
+</li>
+<li><a href="#_telegps_application">3. TeleGPS Application</a>
+<ul class="sectlevel2">
+<li><a href="#_telemetry_monitoring">3.1. Telemetry Monitoring</a></li>
+<li><a href="#_telegps_menus">3.2. TeleGPS Menus</a></li>
+<li><a href="#_graph_data">3.3. Graph Data</a></li>
+<li><a href="#_export_data">3.4. Export Data</a></li>
+<li><a href="#_load_maps">3.5. Load Maps</a></li>
+<li><a href="#_preferences">3.6. Preferences</a></li>
+<li><a href="#_close">3.7. Close</a></li>
+<li><a href="#_exit">3.8. Exit</a></li>
+<li><a href="#_connect_device">3.9. Connect Device</a></li>
+<li><a href="#_disconnect">3.10. Disconnect</a></li>
+<li><a href="#_scan_channels">3.11. Scan Channels</a></li>
+<li><a href="#_download_data">3.12. Download Data</a></li>
+<li><a href="#_configure_device">3.13. Configure Device</a></li>
+<li><a href="#_flash_device">3.14. Flash Device</a></li>
+</ul>
+</li>
+<li><a href="#_telegps_system_operation">Appendix A: TeleGPS System Operation</a>
+<ul class="sectlevel2">
+<li><a href="#_gfsk_telemetry">A.1. GFSK Telemetry</a></li>
+<li><a href="#_aprs">A.2. APRS</a></li>
+<li><a href="#_configurable_parameters">A.3. Configurable Parameters</a></li>
+</ul>
+</li>
+<li><a href="#_handling_precautions">Appendix B: Handling Precautions</a></li>
+<li><a href="#_technical_information">Appendix C: Technical Information</a>
+<ul class="sectlevel2">
+<li><a href="#_gps_receiver">C.1. GPS Receiver</a></li>
+<li><a href="#_70cm_transmitter">C.2. 70cm Transmitter</a></li>
+<li><a href="#_micro_controller">C.3. Micro-controller</a></li>
+<li><a href="#_lithium_polymer_battery">C.4. Lithium Polymer Battery</a></li>
+<li><a href="#_mechanical_considerations">C.5. Mechanical Considerations</a></li>
+<li><a href="#_on_board_data_storage">C.6. On-board data storage</a></li>
+</ul>
+</li>
+<li><a href="#_updating_device_firmware">Appendix D: Updating Device Firmware</a>
+<ul class="sectlevel2">
+<li><a href="#_updating_telegps_firmware">D.1. Updating TeleGPS Firmware</a></li>
+</ul>
+</li>
+<li><a href="#_release_notes">Appendix E: Release Notes</a>
+<ul class="sectlevel2">
+<li><a href="#_release_notes_for_version_1_8_6">E.1. Release Notes for Version 1.8.6</a></li>
+<li><a href="#_release_notes_for_version_1_8_5">E.2. Release Notes for Version 1.8.5</a></li>
+<li><a href="#_release_notes_for_version_1_8_4">E.3. Release Notes for Version 1.8.4</a></li>
+<li><a href="#_release_notes_for_version_1_8_3">E.4. Release Notes for Version 1.8.3</a></li>
+<li><a href="#_release_notes_for_version_1_8_2">E.5. Release Notes for Version 1.8.2</a></li>
+<li><a href="#_release_notes_for_version_1_8_1">E.6. Release Notes for Version 1.8.1</a></li>
+<li><a href="#_release_notes_for_version_1_8">E.7. Release Notes for Version 1.8</a></li>
+<li><a href="#_release_notes_for_version_1_7">E.8. Release Notes for Version 1.7</a></li>
+<li><a href="#_release_notes_for_version_1_6_8">E.9. Release Notes for Version 1.6.8</a></li>
+<li><a href="#_release_notes_for_version_1_6_5">E.10. Release Notes for Version 1.6.5</a></li>
+<li><a href="#_release_notes_for_version_1_6_4">E.11. Release Notes for Version 1.6.4</a></li>
+<li><a href="#_release_notes_for_version_1_6_3">E.12. Release Notes for Version 1.6.3</a></li>
+<li><a href="#_release_notes_for_version_1_6_2">E.13. Release Notes for Version 1.6.2</a></li>
+<li><a href="#_release_notes_for_version_1_6_1">E.14. Release Notes for Version 1.6.1</a></li>
+<li><a href="#_release_notes_for_version_1_6">E.15. Release Notes for Version 1.6</a></li>
+<li><a href="#_release_notes_for_version_1_5">E.16. Release Notes for Version 1.5</a></li>
+<li><a href="#_release_notes_for_version_1_4_2">E.17. Release Notes for Version 1.4.2</a></li>
+<li><a href="#_release_notes_for_version_1_4_1">E.18. Release Notes for Version 1.4.1</a></li>
+<li><a href="#_release_notes_for_version_1_4">E.19. Release Notes for Version 1.4</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div id="logo" class="imageblock">
+<div class="content">
+<a class="image" href="https://altusmetrum.org"><img src="altusmetrum-oneline.svg" alt="Altus Metrum"></a>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_license">License</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright © 2018 Bdale Garbee and Keith Packard</p>
+</div>
+<div class="paragraph">
+<p>This document is released under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons ShareAlike 3.0 License</a></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_acknowledgments">Acknowledgments</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Thanks to Anthony (AJ) Towns for major contributions including
 the TeleGPS graphing and site map code and associated documentation.
 Free software means that our customers and friends can become our
 collaborators, and we certainly appreciate this level of
-contribution!</p><p>Have fun using these products, and we hope to meet all of you
-out on the rocket flight line somewhere.</p><div class="blockquote"><blockquote class="blockquote"><div class="literallayout"><p>Bdale Garbee, KB0G<br />
-NAR #87103, TRA #12201</p></div></blockquote></div><div class="blockquote"><blockquote class="blockquote"><div class="literallayout"><p>Keith Packard, KD7SQG<br />
-NAR #88757, TRA #12200</p></div></blockquote></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="#_telegps_quick_start_guide">1. TeleGPS Quick Start Guide</a></span></dt><dt><span class="chapter"><a href="#_using_telegps_hardware">2. Using TeleGPS Hardware</a></span></dt><dd><dl><dt><span class="section"><a href="#_hooking_up_lithium_polymer_batteries">2.1. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#_on_board_data_recording">2.2. On-board Data Recording</a></span></dt><dt><span class="section"><a href="#_installation">2.3. Installation</a></span></dt></dl></dd><dt><span class="chapter"><a href="#_telegps_application">3. TeleGPS Application</a></span></dt><dd><dl><dt><span class="section"><a href="#_telemetry_monitoring">3.1. Telemetry Monitoring</a></span></dt><dd><dl><dt><span class="section"><a href="#_map">3.1.1. Map</a></span></dt><dt><span class="section"><a href="#_location">3.1.2. Location</a></span></dt><dt><span class="section"><a href="#_status">3.1.3. Status</a></span></dt><dt><span class="section"><a href="#_table">3.1.4. Table</a></span></dt></dl></dd><dt><span class="section"><a href="#_telegps_menus">3.2. TeleGPS Menus</a></span></dt><dd><dl><dt><span class="section"><a href="#_new_window">3.2.1. New Window</a></span></dt></dl></dd><dt><span class="section"><a href="#_graph_data">3.3. Graph Data</a></span></dt><dd><dl><dt><span class="section"><a href="#_data_graph">3.3.1. Data Graph</a></span></dt><dt><span class="section"><a href="#_graph_configuration">3.3.2. Graph Configuration</a></span></dt><dt><span class="section"><a href="#_statistics">3.3.3. Statistics</a></span></dt><dt><span class="section"><a href="#_map_2">3.3.4. Map</a></span></dt></dl></dd><dt><span class="section"><a href="#_export_data">3.4. Export Data</a></span></dt><dd><dl><dt><span class="section"><a href="#_comma_separated_value_format">3.4.1. Comma Separated Value Format</a></span></dt><dt><span class="section"><a href="#_keyhole_markup_language_for_google_earth">3.4.2. Keyhole Markup Language (for Google Earth)</a></span></dt></dl></dd><dt><span class="section"><a href="#_load_maps">3.5. Load Maps</a></span></dt><dt><span class="section"><a href="#_preferences">3.6. Preferences</a></span></dt><dd><dl><dt><span class="section"><a href="#_voice_settings">3.6.1. Voice Settings</a></span></dt><dt><span class="section"><a href="#_log_directory">3.6.2. Log Directory</a></span></dt><dt><span class="section"><a href="#_callsign">3.6.3. Callsign</a></span></dt><dt><span class="section"><a href="#_imperial_units">3.6.4. Imperial Units</a></span></dt><dt><span class="section"><a href="#_serial_debug">3.6.5. Serial Debug</a></span></dt><dt><span class="section"><a href="#_font_size">3.6.6. Font size</a></span></dt><dt><span class="section"><a href="#_look_amp_feel">3.6.7. Look &amp; feel</a></span></dt><dt><span class="section"><a href="#_menu_position">3.6.8. Menu position</a></span></dt><dt><span class="section"><a href="#_map_cache_size">3.6.9. Map Cache Size</a></span></dt><dt><span class="section"><a href="#_manage_frequencies">3.6.10. Manage Frequencies</a></span></dt></dl></dd><dt><span class="section"><a href="#_close">3.7. Close</a></span></dt><dt><span class="section"><a href="#_exit">3.8. Exit</a></span></dt><dt><span class="section"><a href="#_connect_device">3.9. Connect Device</a></span></dt><dt><span class="section"><a href="#_disconnect">3.10. Disconnect</a></span></dt><dt><span class="section"><a href="#_scan_channels">3.11. Scan Channels</a></span></dt><dt><span class="section"><a href="#_download_data">3.12. Download Data</a></span></dt><dt><span class="section"><a href="#_configure_device">3.13. Configure Device</a></span></dt><dd><dl><dt><span class="section"><a href="#_frequency">3.13.1. Frequency</a></span></dt><dt><span class="section"><a href="#_rf_calibration">3.13.2. RF Calibration</a></span></dt><dt><span class="section"><a href="#_telemetry_rdf_aprs_enable">3.13.3. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#_telemetry_baud_rate">3.13.4. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#_aprs_interval">3.13.5. APRS Interval</a></span></dt><dt><span class="section"><a href="#_aprs_ssid">3.13.6. APRS SSID</a></span></dt><dt><span class="section"><a href="#_aprs_format">3.13.7. APRS Format</a></span></dt><dt><span class="section"><a href="#_callsign_2">3.13.8. Callsign</a></span></dt><dt><span class="section"><a href="#_logging_trigger_motion">3.13.9. Logging Trigger Motion</a></span></dt><dt><span class="section"><a href="#_position_reporting_interval">3.13.10. Position Reporting Interval</a></span></dt></dl></dd><dt><span class="section"><a href="#_flash_device">3.14. Flash Device</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_telegps_system_operation">A. TeleGPS System Operation</a></span></dt><dd><dl><dt><span class="section"><a href="#_gfsk_telemetry">A.1. GFSK Telemetry</a></span></dt><dt><span class="section"><a href="#_aprs">A.2. APRS</a></span></dt><dt><span class="section"><a href="#_configurable_parameters">A.3. Configurable Parameters</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_handling_precautions">B. Handling Precautions</a></span></dt><dt><span class="appendix"><a href="#_technical_information">C. Technical Information</a></span></dt><dd><dl><dt><span class="section"><a href="#_gps_receiver">C.1. GPS Receiver</a></span></dt><dt><span class="section"><a href="#_70cm_transmitter">C.2. 70cm Transmitter</a></span></dt><dt><span class="section"><a href="#_micro_controller">C.3. Micro-controller</a></span></dt><dt><span class="section"><a href="#_lithium_polymer_battery">C.4. Lithium Polymer Battery</a></span></dt><dt><span class="section"><a href="#_mechanical_considerations">C.5. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#_on_board_data_storage">C.6. On-board data storage</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_updating_device_firmware">D. Updating Device Firmware</a></span></dt><dd><dl><dt><span class="section"><a href="#_updating_telegps_firmware">D.1. Updating TeleGPS Firmware</a></span></dt></dl></dd><dt><span class="appendix"><a href="#_release_notes">E. Release Notes</a></span></dt><dd><dl><dt><span class="section"><a href="#_release_notes_for_version_1_8_6">E.1. Release Notes for Version 1.8.6</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos">E.1.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps">E.1.2. AltosUI, TeleGPS</a></span></dt><dt><span class="section"><a href="#_micropeak">E.1.3. MicroPeak</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_5">E.2. Release Notes for Version 1.8.5</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_2">E.2.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_2">E.2.2. AltosUI, TeleGPS</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_4">E.3. Release Notes for Version 1.8.4</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_3">E.3.1. AltOS</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_3">E.4. Release Notes for Version 1.8.3</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_4">E.4.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications">E.4.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_2">E.5. Release Notes for Version 1.8.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_5">E.5.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_2">E.5.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8_1">E.6. Release Notes for Version 1.8.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_6">E.6.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_3">E.6.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_8">E.7. Release Notes for Version 1.8</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_7">E.7.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_4">E.7.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_7">E.8. Release Notes for Version 1.7</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_8">E.8.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_5">E.8.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_8">E.9. Release Notes for Version 1.6.8</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_9">E.9.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_and_altosdroid_applications">E.9.2. AltosUI, TeleGPS and AltosDroid Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_5">E.10. Release Notes for Version 1.6.5</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_10">E.10.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_and_altosdroid_applications_2">E.10.2. AltosUI, TeleGPS and AltosDroid Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_4">E.11. Release Notes for Version 1.6.4</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_11">E.11.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_telegps_and_altosdroid_applications_3">E.11.2. AltosUI, TeleGPS and AltosDroid Applications</a></span></dt><dt><span class="section"><a href="#_documentation">E.11.3. Documentation</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_3">E.12. Release Notes for Version 1.6.3</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_12">E.12.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_6">E.12.2. AltosUI and TeleGPS Applications</a></span></dt><dt><span class="section"><a href="#_altosdroid">E.12.3. AltosDroid</a></span></dt><dt><span class="section"><a href="#_documentation_2">E.12.4. Documentation</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_2">E.13. Release Notes for Version 1.6.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_13">E.13.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_7">E.13.2. AltosUI and TeleGPS Applications</a></span></dt><dt><span class="section"><a href="#_documentation_3">E.13.3. Documentation</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6_1">E.14. Release Notes for Version 1.6.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_14">E.14.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_8">E.14.2. AltosUI and TeleGPS Applications</a></span></dt><dt><span class="section"><a href="#_altosdroid_2">E.14.3. AltosDroid</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_6">E.15. Release Notes for Version 1.6</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_15">E.15.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_9">E.15.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_5">E.16. Release Notes for Version 1.5</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_16">E.16.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_and_telegps_applications_10">E.16.2. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_4_2">E.17. Release Notes for Version 1.4.2</a></span></dt><dd><dl><dt><span class="section"><a href="#_altosui_and_telegps_applications_11">E.17.1. AltosUI and TeleGPS Applications</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_4_1">E.18. Release Notes for Version 1.4.1</a></span></dt><dd><dl><dt><span class="section"><a href="#_altosui_and_telegps_applications_12">E.18.1. AltosUI and TeleGPS Applications:</a></span></dt></dl></dd><dt><span class="section"><a href="#_release_notes_for_version_1_4">E.19. Release Notes for Version 1.4</a></span></dt><dd><dl><dt><span class="section"><a href="#_altos_17">E.19.1. AltOS</a></span></dt><dt><span class="section"><a href="#_altosui_application">E.19.2. AltosUI Application</a></span></dt><dt><span class="section"><a href="#_telegps_application_2">E.19.3. TeleGPS Application</a></span></dt><dt><span class="section"><a href="#_documentation_4">E.19.4. Documentation</a></span></dt></dl></dd></dl></dd></dl></div><div class="list-of-figures"><p><strong>List of Figures</strong></p><dl><dt>3.1. <a href="#idm133">TeleGPS Map View</a></dt><dt>3.2. <a href="#idm148">TeleGPS Location View</a></dt><dt>3.3. <a href="#idm158">TeleGPS Status View</a></dt><dt>3.4. <a href="#idm168">TeleGPS Information Table</a></dt><dt>3.5. <a href="#idm203">TeleGPS Graph</a></dt><dt>3.6. <a href="#idm212">TeleGPS Graph Configuration</a></dt><dt>3.7. <a href="#idm222">TeleGPS Statistics</a></dt><dt>3.8. <a href="#idm232">TeleGPS Map</a></dt><dt>3.9. <a href="#idm253">Load Maps Window</a></dt><dt>3.10. <a href="#idm286">TeleGPS Preferences Window</a></dt><dt>3.11. <a href="#idm345">Device Selection Dialog</a></dt><dt>3.12. <a href="#idm357">Radio Scanning Dialog</a></dt><dt>3.13. <a href="#idm375">TeleGPS Configuration Dialog</a></dt></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>A.1. <a href="#idm450">Altus Metrum APRS Comments</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_telegps_quick_start_guide"></a>Chapter 1. TeleGPS Quick Start Guide</h1></div></div></div><p>TeleGPS is designed to be easy to use. Requiring no external
-components, flying takes just a few steps.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-First, download and install the software from
-<a class="ulink" href="http://altusmetrum.org/AltOS" target="_top">http://altusmetrum.org/AltOS</a>. This will make sure that
-you have the right device drivers installed.
-</li><li class="listitem">
-Next, plug in the battery and USB cable and connect TeleGPS to
+contribution!</p>
+</div>
+<div class="paragraph">
+<p>Have fun using these products, and we hope to meet all of you
+out on the rocket flight line somewhere.</p>
+</div>
+<div class="verseblock">
+<pre class="content">Bdale Garbee, KB0G
+NAR #87103, TRA #12201</pre>
+</div>
+<div class="verseblock">
+<pre class="content">Keith Packard, KD7SQG
+NAR #88757, TRA #12200</pre>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_telegps_quick_start_guide">1. TeleGPS Quick Start Guide</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>TeleGPS is designed to be easy to use. Requiring no external
+components, flying takes just a few steps.</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>First, download and install the software from
+<a href="http://altusmetrum.org/AltOS" class="bare">http://altusmetrum.org/AltOS</a>. This will make sure that
+you have the right device drivers installed.</p>
+</li>
+<li>
+<p>Next, plug in the battery and USB cable and connect TeleGPS to
 your computer. This will charge the battery and allow you to
-configure the device.
-</li><li class="listitem">
-Start the TeleGPS application and set the callsign and frequency
-on your TeleGPS device; refer to <a class="xref" href="#_configure_device" title="3.13. Configure Device">Section 3.13, “Configure Device”</a> for instructions.
-</li><li class="listitem">
-Unplug TeleGPS when the battery charger light goes green. This
+configure the device.</p>
+</li>
+<li>
+<p>Start the TeleGPS application and set the callsign and frequency
+on your TeleGPS device; refer to <a href="#_configure_device">Configure Device</a> for instructions.</p>
+</li>
+<li>
+<p>Unplug TeleGPS when the battery charger light goes green. This
 will enable the radio and logging portions of the TeleGPS
-firmware.
-</li><li class="listitem">
-Connect TeleDongle to your computer and start TeleGPS or start
+firmware.</p>
+</li>
+<li>
+<p>Connect TeleDongle to your computer and start TeleGPS or start
 AltosDroid on your android device and connect to TeleBT. Set the
-frequency to match the TeleGPS and you should be receiving telemetry.
-</li></ol></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_using_telegps_hardware"></a>Chapter 2. Using TeleGPS Hardware</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_hooking_up_lithium_polymer_batteries"></a>2.1. Hooking Up Lithium Polymer Batteries</h2></div></div></div><p>TeleGPS has a two pin JST PH series connector to connect up
+frequency to match the TeleGPS and you should be receiving telemetry.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_using_telegps_hardware">2. Using TeleGPS Hardware</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_hooking_up_lithium_polymer_batteries">2.1. Hooking Up Lithium Polymer Batteries</h3>
+<div class="paragraph">
+<p>TeleGPS has a two pin JST PH series connector to connect up
 a single-cell Lithium Polymer cell (3.7V nominal). You can
 purchase matching batteries from the Altus Metrum store, or
 other vendors, or you can make your own. Pin 1 of the
 connector is positive, pin 2 is negative. Spark Fun sells a
 cable with the connector attached, which they call a
-<a class="ulink" href="https://www.sparkfun.com/products/9914" target="_top">JST Jumper 2 Wire Assembly</a></p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Many RC vendors also sell lithium polymer batteries with
+<a href="https://www.sparkfun.com/products/9914">JST Jumper 2 Wire Assembly</a></p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+Many RC vendors also sell lithium polymer batteries with
 this same connector. All that we have found use the opposite
 polarity, and if you use them that way, you will damage or
-destroy TeleGPS.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_on_board_data_recording"></a>2.2. On-board Data Recording</h2></div></div></div><p>TeleGPS logs GPS data at a user-configurable
+destroy TeleGPS.
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_on_board_data_recording">2.2. On-board Data Recording</h3>
+<div class="paragraph">
+<p>TeleGPS logs GPS data at a user-configurable
 rate. Data are logged to a 2MB on-board flash memory
 part, which can be partitioned into several
 equal-sized blocks, one for each flight. 64kB of this
 storage are reserved to hold configuration data,
-leaving 1984kB for flight data.</p><p>The on-board flash is partitioned into separate flight
+leaving 1984kB for flight data.</p>
+</div>
+<div class="paragraph">
+<p>The on-board flash is partitioned into separate flight
 logs, each of a fixed maximum size. Increase the
 maximum size of each log and you reduce the number of
 flights that can be stored. Decrease the size and you
-can store more flights.</p><p>To compute the amount of space needed for a single
+can store more flights.</p>
+</div>
+<div class="paragraph">
+<p>To compute the amount of space needed for a single
 log, you can divide the expected time (in seconds) by
 the sample period (by default, 1 second per sample)
 and then multiply the result by 32 bytes per
 sample. For instance, a sample period of 1 second and
 a flight lasting one hour will take 32 * 3600 = 115200
 bytes. TeleGPS does try to reduce log space used by
-not recording position information when it isnt
+not recording position information when it isn&#8217;t
 moving, so actual space consumed may be less than
-this.</p><p>The default size allows for four flights of 496kB
+this.</p>
+</div>
+<div class="paragraph">
+<p>The default size allows for four flights of 496kB
 each, which provides over four hours of logging at 1
-sample per second.</p><p>TeleGPS will not overwrite existing flight data, so be
+sample per second.</p>
+</div>
+<div class="paragraph">
+<p>TeleGPS will not overwrite existing flight data, so be
 sure to download flight data and erase it from the
 onboard flash before it fills up. TeleGPS will still
 report telemetry even if memory is full, so the only
-thing you will lose is the on-board data log.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_installation"></a>2.3. Installation</h2></div></div></div><p>The battery connectors are a standard 2-pin JST
+thing you will lose is the on-board data log.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_installation">2.3. Installation</h3>
+<div class="paragraph">
+<p>The battery connectors are a standard 2-pin JST
 connector and match batteries sold by Spark Fun. These
 batteries are single-cell Lithium Polymer batteries
 that nominally provide 3.7 volts.  Other vendors sell
@@ -77,65 +269,132 @@ generally reversed from the batteries used by Altus
 Metrum products. In particular, the Tenergy batteries
 supplied for use in Featherweight flight computers are
 not compatible with Altus Metrum flight computers or
-battery chargers.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>Check polarity and voltage before connecting any
+battery chargers.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+Check polarity and voltage before connecting any
 battery not purchased from Altus Metrum or Spark
-Fun.</p></div><p>TeleGPS uses an integrate GPS patch antenna and won’t
+Fun.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>TeleGPS uses an integrate GPS patch antenna and won&#8217;t
 receive GPS signals if installed inside a metal or
 carbon fiber compartment. Test GPS reception and
 telemetry transmission with the system installed and
 all other electronics powered up to verify signal
-reception and make sure there isn’t any interference
-from other systems.</p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="_telegps_application"></a>Chapter 3. TeleGPS Application</h1></div></div></div><p>The TeleGPS application provides a graphical user interface for
+reception and make sure there isn&#8217;t any interference
+from other systems.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_telegps_application">3. TeleGPS Application</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The TeleGPS application provides a graphical user interface for
 interacting with the Altus Metrum product family. TeleGPS can
 monitor telemetry data, configure devices and many other
 tasks. The primary interface window is for displaying data
 received over the telemetry link. There are additional
-tasks available from the main window menu bar.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_telemetry_monitoring"></a>3.1. Telemetry Monitoring</h2></div></div></div><p>This is the window brought up when you start the
+tasks available from the main window menu bar.</p>
+</div>
+<div class="sect2">
+<h3 id="_telemetry_monitoring">3.1. Telemetry Monitoring</h3>
+<div class="paragraph">
+<p>This is the window brought up when you start the
 application. If you have a TeleDongle device connected
 to the computer, it will automatically be selected for
-telemetry monitoring</p><p>All telemetry data received are automatically recorded
+telemetry monitoring</p>
+</div>
+<div class="paragraph">
+<p>All telemetry data received are automatically recorded
 in suitable log files. The name of the files includes
 the current date and TeleGPS serial and flight
-numbers.</p><p>The radio frequency being monitored by the TeleDongle
+numbers.</p>
+</div>
+<div class="paragraph">
+<p>The radio frequency being monitored by the TeleDongle
 device is displayed at the top of the window. You can
 configure the frequency by clicking on the frequency
 box and selecting the desired frequency. The TeleGPS
 application remembers the last frequency selected for
 each TeleDongle and selects that automatically the
-next time you use that device.</p><p>Below the TeleDongle frequency selector, the window
+next time you use that device.</p>
+</div>
+<div class="paragraph">
+<p>Below the TeleDongle frequency selector, the window
 contains a few significant pieces of information about
-the altimeter providing the telemetry data stream:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-The configured call-sign
-</li><li class="listitem">
-The device serial number
-</li><li class="listitem">
-The flight number. TeleGPS remembers how many times
-it has flown.
-</li><li class="listitem">
-The Received Signal Strength Indicator value. This
+the altimeter providing the telemetry data stream:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The configured call-sign</p>
+</li>
+<li>
+<p>The device serial number</p>
+</li>
+<li>
+<p>The flight number. TeleGPS remembers how many times
+it has flown.</p>
+</li>
+<li>
+<p>The Received Signal Strength Indicator value. This
 lets you know how strong a signal TeleDongle is
 receiving. The radio inside TeleDongle operates down
 to about -100dBm; weaker signals may not be
 receivable. The packet link uses error detection and
 correction techniques which prevent incorrect data
-from being reported.
-</li><li class="listitem">
-The age of the displayed data, in seconds since the
+from being reported.</p>
+</li>
+<li>
+<p>The age of the displayed data, in seconds since the
 last successfully received telemetry packet.  In
 normal operation this will stay in the low single
 digits.  If the number starts counting up, then you
 are no longer receiving data over the radio link
-from the flight computer.
-</li></ul></div><p>Finally, the largest portion of the window contains a set of
+from the flight computer.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Finally, the largest portion of the window contains a set of
 tabs, each of which contain some information about the TeleGPS
-board. The final <span class="emphasis"><em>table</em></span> tab displays many of the raw telemetry
-values in one place in a spreadsheet-like format.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_map"></a>3.1.1. Map</h3></div></div></div><p>The Map tab shows the TeleGPS track over time
+board. The final 'table' tab displays many of the raw telemetry
+values in one place in a spreadsheet-like format.</p>
+</div>
+<div class="sect3">
+<h4 id="_map">3.1.1. Map</h4>
+<div class="paragraph">
+<p>The Map tab shows the TeleGPS track over time
 on top of map data making it easy to locate
-the device.</p><div class="figure"><a id="idm133"></a><p class="title"><strong>Figure 3.1. TeleGPS Map View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-map.png" width="495" alt="telegps-map.png" /></div></div></div><br class="figure-break" /><p>The map’s default scale is approximately 3m
+the device.</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-map.png" alt="telegps map" width="400">
+</div>
+<div class="title">Figure 1. TeleGPS Map View</div>
+</div>
+<div class="paragraph">
+<p>The map&#8217;s default scale is approximately 3m
 (10ft) per pixel. The map can be dragged using
 the left mouse button. The map will attempt to
 keep the rocket roughly centered while data is
-being received.</p><p>You can adjust the style of map and the zoom
+being received.</p>
+</div>
+<div class="paragraph">
+<p>You can adjust the style of map and the zoom
 level with buttons on the right side of the
 map window. You can draw a line on the map by
 moving the mouse over the map with a button
@@ -143,55 +402,171 @@ other than the left one pressed, or by
 pressing the left button while also holding
 down the shift key. The length of the line in
 real-world units will be shown at the start of
-the line.</p><p>Images are fetched automatically via the
+the line.</p>
+</div>
+<div class="paragraph">
+<p>Images are fetched automatically via the
 Google Maps Static API, and cached on disk for
 reuse. If map images cannot be downloaded, the
-rocket’s path will be traced on a dark gray
-background instead.</p><p>You can pre-load images for your favorite
+rocket&#8217;s path will be traced on a dark gray
+background instead.</p>
+</div>
+<div class="paragraph">
+<p>You can pre-load images for your favorite
 launch sites before you leave home; check out
-<a class="xref" href="#_load_maps" title="3.5. Load Maps">Section 3.5, “Load Maps”</a>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_location"></a>3.1.2. Location</h3></div></div></div><p>The Location tab shows the raw GPS data
-received from TeleGPS.</p><div class="figure"><a id="idm148"></a><p class="title"><strong>Figure 3.2. TeleGPS Location View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-location.png" width="495" alt="telegps-location.png" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_status"></a>3.1.3. Status</h3></div></div></div><p>The Status tab shows data relative to the
+<a href="#_load_maps">Load Maps</a>.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_location">3.1.2. Location</h4>
+<div class="paragraph">
+<p>The Location tab shows the raw GPS data
+received from TeleGPS.</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-location.png" alt="telegps location" width="400">
+</div>
+<div class="title">Figure 2. TeleGPS Location View</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_status">3.1.3. Status</h4>
+<div class="paragraph">
+<p>The Status tab shows data relative to the
 location of TeleGPS when the application first
-received telemetry from it.</p><div class="figure"><a id="idm158"></a><p class="title"><strong>Figure 3.3. TeleGPS Status View</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-status.png" width="495" alt="telegps-status.png" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_table"></a>3.1.4. Table</h3></div></div></div><p>The Table tab shows detailed information about
-the GPS receiver</p><div class="figure"><a id="idm168"></a><p class="title"><strong>Figure 3.4. TeleGPS Information Table</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-table.png" width="495" alt="telegps-table.png" /></div></div></div><br class="figure-break" /></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_telegps_menus"></a>3.2. TeleGPS Menus</h2></div></div></div><p>TeleGPS has three or four menus at the top of
-the window:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-File
-</span></dt><dd>
-New Window, Graph Data, Export Data, Load Maps,
-Preferences, Close and Exit
-</dd><dt><span class="term">
-Monitor
-</span></dt><dd>
-Connect Device, Disconnect and Scan Channels
-</dd><dt><span class="term">
-Device
-</span></dt><dd>
-Download Data, Configure Device and Flash Device
-</dd><dt><span class="term">
-Frequency
-</span></dt><dd>
-This shows the current monitoring frequency with a
+received telemetry from it.</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-status.png" alt="telegps status" width="400">
+</div>
+<div class="title">Figure 3. TeleGPS Status View</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_table">3.1.4. Table</h4>
+<div class="paragraph">
+<p>The Table tab shows detailed information about
+the GPS receiver</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-table.png" alt="telegps table" width="400">
+</div>
+<div class="title">Figure 4. TeleGPS Information Table</div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_telegps_menus">3.2. TeleGPS Menus</h3>
+<div class="paragraph">
+<p>TeleGPS has three or four menus at the top of
+the window:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">File</dt>
+<dd>
+<p>New Window, Graph Data, Export Data, Load Maps,
+Preferences, Close and Exit</p>
+</dd>
+<dt class="hdlist1">Monitor</dt>
+<dd>
+<p>Connect Device, Disconnect and Scan Channels</p>
+</dd>
+<dt class="hdlist1">Device</dt>
+<dd>
+<p>Download Data, Configure Device and Flash Device</p>
+</dd>
+<dt class="hdlist1">Frequency</dt>
+<dd>
+<p>This shows the current monitoring frequency with a
 drop-down menu listing other configured
 frequencies. You can change the set of frequencies
 shown here from the Preferences dialog. This menu is
 only shown when the TeleGPS application is connected
-to a TeleDongle or TeleBT device.
-</dd></dl></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_new_window"></a>3.2.1. New Window</h3></div></div></div><p>This creates another telemetry monitoring window, in case
+to a TeleDongle or TeleBT device.</p>
+</dd>
+</dl>
+</div>
+<div class="sect3">
+<h4 id="_new_window">3.2.1. New Window</h4>
+<div class="paragraph">
+<p>This creates another telemetry monitoring window, in case
 you have multiple TeleDongle devices connected to the
-computer.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_graph_data"></a>3.3. Graph Data</h2></div></div></div><p>The Graph tab shows a plot of the the GPS data
+computer.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_graph_data">3.3. Graph Data</h3>
+<div class="paragraph">
+<p>The Graph tab shows a plot of the the GPS data
 collected. The X axis is time in seconds; there are a
 variety of Y axes available for different kinds of
 data. This window also allows you to see some
 statistics computed from the data, and an overall map
-of the entire data record.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_data_graph"></a>3.3.1. Data Graph</h3></div></div></div><div class="figure"><a id="idm203"></a><p class="title"><strong>Figure 3.5. TeleGPS Graph</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-graph-graph.png" width="495" alt="telegps-graph-graph.png" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_graph_configuration"></a>3.3.2. Graph Configuration</h3></div></div></div><div class="figure"><a id="idm212"></a><p class="title"><strong>Figure 3.6. TeleGPS Graph Configuration</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-graph-configure.png" width="495" alt="telegps-graph-configure.png" /></div></div></div><br class="figure-break" /><p>This selects which graph elements to show, and, at the
+of the entire data record.</p>
+</div>
+<div class="sect3">
+<h4 id="_data_graph">3.3.1. Data Graph</h4>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-graph-graph.png" alt="telegps graph graph" width="400">
+</div>
+<div class="title">Figure 5. TeleGPS Graph</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_graph_configuration">3.3.2. Graph Configuration</h4>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-graph-configure.png" alt="telegps graph configure" width="400">
+</div>
+<div class="title">Figure 6. TeleGPS Graph Configuration</div>
+</div>
+<div class="paragraph">
+<p>This selects which graph elements to show, and, at the
 bottom, lets you switch between metric and imperial
-units</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_statistics"></a>3.3.3. Statistics</h3></div></div></div><div class="figure"><a id="idm222"></a><p class="title"><strong>Figure 3.7. TeleGPS Statistics</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-graph-stats.png" width="495" alt="telegps-graph-stats.png" /></div></div></div><br class="figure-break" /><p>Shows overall data computed from the flight.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_map_2"></a>3.3.4. Map</h3></div></div></div><div class="figure"><a id="idm232"></a><p class="title"><strong>Figure 3.8. TeleGPS Map</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-graph-map.png" width="540" alt="telegps-graph-map.png" /></div></div></div><br class="figure-break" /><p>Shows a map of the area overlaid with the GPS track. As with
+units</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_statistics">3.3.3. Statistics</h4>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-graph-stats.png" alt="telegps graph stats" width="400">
+</div>
+<div class="title">Figure 7. TeleGPS Statistics</div>
+</div>
+<div class="paragraph">
+<p>Shows overall data computed from the flight.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_map_2">3.3.4. Map</h4>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-graph-map.png" alt="telegps graph map" width="450">
+</div>
+<div class="title">Figure 8. TeleGPS Map</div>
+</div>
+<div class="paragraph">
+<p>Shows a map of the area overlaid with the GPS track. As with
 the telemetry monitoring window, you can select the style
 of map and zoom level using buttons along the side;
 you can scroll the map by dragging within the map pressing
 the left button and you can draw a line to measure
 distances using either the left button with the shift key,
-or any other button.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_export_data"></a>3.4. Export Data</h2></div></div></div><p>This tool takes the raw data files and makes them
+or any other button.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_export_data">3.4. Export Data</h3>
+<div class="paragraph">
+<p>This tool takes the raw data files and makes them
 available for external analysis. When you select this
 button, you are prompted to select a data file, which
 can be either a .eeprom or .telem.  The .eeprom files
@@ -200,61 +575,104 @@ while .telem files contain receiver signal strength
 information.  Next, a second dialog appears which is
 used to select where to write the resulting file. It
 has a selector to choose between CSV and KML file
-formats.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_comma_separated_value_format"></a>3.4.1. Comma Separated Value Format</h3></div></div></div><p>This is a text file containing the data in a
+formats.</p>
+</div>
+<div class="sect3">
+<h4 id="_comma_separated_value_format">3.4.1. Comma Separated Value Format</h4>
+<div class="paragraph">
+<p>This is a text file containing the data in a
 form suitable for import into a spreadsheet or
 other external data analysis tool. The first
 few lines of the file contain the version and
 configuration information from TeleGPS, then
 there is a single header line which labels all
 of the fields. All of these lines start with a
-<span class="emphasis"><em>#</em></span> character which many tools can be
-configured to skip over.</p><p>The remaining lines of the file contain the
+'#' character which many tools can be
+configured to skip over.</p>
+</div>
+<div class="paragraph">
+<p>The remaining lines of the file contain the
 data, with each field separated by a comma and
 at least one space. All of the sensor values
 are converted to standard units, with the
 barometric data reported in both pressure,
-altitude and height above pad units.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_keyhole_markup_language_for_google_earth"></a>3.4.2. Keyhole Markup Language (for Google Earth)</h3></div></div></div><p>This is the format used by Google Earth to provide an overlay
+altitude and height above pad units.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_keyhole_markup_language_for_google_earth">3.4.2. Keyhole Markup Language (for Google Earth)</h4>
+<div class="paragraph">
+<p>This is the format used by Google Earth to provide an overlay
 within that application. With this, you can use Google Earth to
-see the whole path in 3D.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_load_maps"></a>3.5. Load Maps</h2></div></div></div><div class="figure"><a id="idm253"></a><p class="title"><strong>Figure 3.9. Load Maps Window</strong></p><div class="figure-contents"><div class="mediaobject"><img src="load-maps.png" width="468" alt="load-maps.png" /></div></div></div><br class="figure-break" /><p>Before heading out to a new launch site, you can use
-this to load satellite images in case you don’t have
+see the whole path in 3D.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_load_maps">3.5. Load Maps</h3>
+<div class="imageblock">
+<div class="content">
+<img src="load-maps.png" alt="load maps" width="500">
+</div>
+<div class="title">Figure 9. Load Maps Window</div>
+</div>
+<div class="paragraph">
+<p>Before heading out to a new launch site, you can use
+this to load satellite images in case you don&#8217;t have
 internet connectivity at the site.  Try not to wait
-until the last minute, though, particularly if youre
+until the last minute, though, particularly if you&#8217;re
 heading to a major launch.  If too many people are
 all trying to download map data at once, Google may
-limit access until the next day.</p><p>There’s a drop-down menu of launch sites we know
-about; if your favorites aren’t there, please let us
+limit access until the next day.</p>
+</div>
+<div class="paragraph">
+<p>There&#8217;s a drop-down menu of launch sites we know
+about; if your favorites aren&#8217;t there, please let us
 know the lat/lon and name of the site. The contents of
 this list are actually downloaded from our server at
-run-time, so as new sites are sent in, theyll get
+run-time, so as new sites are sent in, they&#8217;ll get
 automatically added to this list.  If the launch site
-isn’t in the list, you can manually enter the lat/lon
-values</p><p>There are four different kinds of maps you can view;
+isn&#8217;t in the list, you can manually enter the lat/lon
+values</p>
+</div>
+<div class="paragraph">
+<p>There are four different kinds of maps you can view;
 you can select which to download by selecting as many
-as you like from the available types:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Hybrid
-</span></dt><dd>
-A combination of satellite imagery and road data. This
-is the default view.
-</dd><dt><span class="term">
-Satellite
-</span></dt><dd>
-Just the satellite imagery without any annotation.
-</dd><dt><span class="term">
-Roadmap
-</span></dt><dd>
-Roads, political boundaries and a few geographic
-features.
-</dd><dt><span class="term">
-Terrain
-</span></dt><dd>
-Contour intervals and shading that show hills and
-valleys.
-</dd></dl></div><p>You can specify the range of zoom levels to download;
+as you like from the available types:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Hybrid</dt>
+<dd>
+<p>A combination of satellite imagery and road data. This
+is the default view.</p>
+</dd>
+<dt class="hdlist1">Satellite</dt>
+<dd>
+<p>Just the satellite imagery without any annotation.</p>
+</dd>
+<dt class="hdlist1">Roadmap</dt>
+<dd>
+<p>Roads, political boundaries and a few geographic
+features.</p>
+</dd>
+<dt class="hdlist1">Terrain</dt>
+<dd>
+<p>Contour intervals and shading that show hills and
+valleys.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>You can specify the range of zoom levels to download;
 smaller numbers show more area with less
 resolution. The default level, 0, shows about
 3m/pixel. One zoom level change doubles or halves that
 number. Larger zoom levels show more detail, smaller
-zoom levels less.</p><p>The Map Radius value sets how large an area around the
+zoom levels less.</p>
+</div>
+<div class="paragraph">
+<p>The Map Radius value sets how large an area around the
 center point to download. Select a value large enough
 to cover any plausible flight from that site. Be aware
 that loading a large area with a high maximum zoom
@@ -262,91 +680,224 @@ level can attempt to download a lot of data. Loading
 hybrid maps with a 10km radius at a minimum zoom of -2
 and a maximum zoom of 2 consumes about 120MB of
 space. Terrain and road maps consume about 1/10 as
-much space as satellite or hybrid maps.</p><p>Clicking the <span class="emphasis"><em>Load Map</em></span> button will fetch images from
+much space as satellite or hybrid maps.</p>
+</div>
+<div class="paragraph">
+<p>Clicking the 'Load Map' button will fetch images from
 Google Maps; note that Google limits how many images
 you can fetch at once, so if you load more than one
 launch site, you may get some gray areas in the map
 which indicate that Google is tired of sending data to
-you. Try again later.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_preferences"></a>3.6. Preferences</h2></div></div></div><div class="figure"><a id="idm286"></a><p class="title"><strong>Figure 3.10. TeleGPS Preferences Window</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-preferences.png" width="216" alt="telegps-preferences.png" /></div></div></div><br class="figure-break" /><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_voice_settings"></a>3.6.1. Voice Settings</h3></div></div></div><p>TeleGPS provides voice announcements during
+you. Try again later.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_preferences">3.6. Preferences</h3>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-preferences.png" alt="telegps preferences" width="230">
+</div>
+<div class="title">Figure 10. TeleGPS Preferences Window</div>
+</div>
+<div class="sect3">
+<h4 id="_voice_settings">3.6.1. Voice Settings</h4>
+<div class="paragraph">
+<p>TeleGPS provides voice announcements during
 flight so that you can keep your eyes on the
 sky and still get information about the
 current flight status. However, sometimes you
-don’t want to hear them.</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Enable
-</span></dt><dd>
-Turns all voice announcements on and off
-</dd><dt><span class="term">
-Test Voice
-</span></dt><dd>
-Plays a short message allowing you to verify
+don&#8217;t want to hear them.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Enable</dt>
+<dd>
+<p>Turns all voice announcements on and off</p>
+</dd>
+<dt class="hdlist1">Test Voice</dt>
+<dd>
+<p>Plays a short message allowing you to verify
 that the audio system is working and the volume settings
-are reasonable
-</dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_log_directory"></a>3.6.2. Log Directory</h3></div></div></div><p>TeleGPS logs all telemetry data and saves all
+are reasonable</p>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_log_directory">3.6.2. Log Directory</h4>
+<div class="paragraph">
+<p>TeleGPS logs all telemetry data and saves all
 flash data to this directory. This
 directory is also used as the staring point
 when selecting data files for display or
-export.</p><p>Click on the directory name to bring up a
+export.</p>
+</div>
+<div class="paragraph">
+<p>Click on the directory name to bring up a
 directory choosing dialog, select a new
-directory and click <span class="emphasis"><em>Select Directory</em></span> to
+directory and click 'Select Directory' to
 change where TeleGPS reads and writes data
-files.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_callsign"></a>3.6.3. Callsign</h3></div></div></div><p>This value is transmitted in each command
+files.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_callsign">3.6.3. Callsign</h4>
+<div class="paragraph">
+<p>This value is transmitted in each command
 packet sent from TeleDongle and received from
 an altimeter.  It is not used in telemetry
 mode, as the callsign configured in the
 altimeter board is included in all telemetry
 packets.  Configure this with the TeleGPS
 operators call sign as needed to comply with
-your local radio regulations.</p><p>Note that to successfully command a flight
+your local radio regulations.</p>
+</div>
+<div class="paragraph">
+<p>Note that to successfully command a flight
 computer over the radio (to configure the
 altimeter, monitor idle, or fire pyro
 charges), the callsign configured here must
 exactly match the callsign configured in the
 flight computer.  This matching is case
-sensitive.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_imperial_units"></a>3.6.4. Imperial Units</h3></div></div></div><p>This switches between metric units (meters)
+sensitive.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_imperial_units">3.6.4. Imperial Units</h4>
+<div class="paragraph">
+<p>This switches between metric units (meters)
 and imperial units (feet and miles). This
 affects the display of values use during
 flight monitoring, configuration, data
 graphing and all of the voice
 announcements. It does not change the units
 used when exporting to CSV files, those are
-always produced in metric units.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_serial_debug"></a>3.6.5. Serial Debug</h3></div></div></div><p>This causes all communication with a connected
+always produced in metric units.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_serial_debug">3.6.5. Serial Debug</h4>
+<div class="paragraph">
+<p>This causes all communication with a connected
 device to be dumped to the console from which
-TeleGPS was started. If youve started it from
+TeleGPS was started. If you&#8217;ve started it from
 an icon or menu entry, the output will simply
 be discarded. This mode can be useful to debug
-various serial communication issues.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_font_size"></a>3.6.6. Font size</h3></div></div></div><p>Selects the set of fonts used in the flight
+various serial communication issues.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_font_size">3.6.6. Font size</h4>
+<div class="paragraph">
+<p>Selects the set of fonts used in the flight
 monitor window. Choose between the small,
-medium and large sets.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_look_amp_feel"></a>3.6.7. Look &amp; feel</h3></div></div></div><p>Switches between the available Java user
+medium and large sets.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_look_feel">3.6.7. Look &amp; feel</h4>
+<div class="paragraph">
+<p>Switches between the available Java user
 interface appearances. The default selection
 is supposed to match the native window system
-appearance for the target platform.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_menu_position"></a>3.6.8. Menu position</h3></div></div></div><p>Selects the initial position for the main
+appearance for the target platform.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_menu_position">3.6.8. Menu position</h4>
+<div class="paragraph">
+<p>Selects the initial position for the main
 TeleGPS window that includes all of the
-command buttons.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_map_cache_size"></a>3.6.9. Map Cache Size</h3></div></div></div><p>Sets the number of map <span class="emphasis"><em>tiles</em></span> kept in memory
+command buttons.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_map_cache_size">3.6.9. Map Cache Size</h4>
+<div class="paragraph">
+<p>Sets the number of map 'tiles' kept in memory
 while the application is running. More tiles
 consume more memory, but will make panning
-around the map faster.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_manage_frequencies"></a>3.6.10. Manage Frequencies</h3></div></div></div><p>This brings up a dialog where you can
+around the map faster.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_manage_frequencies">3.6.10. Manage Frequencies</h4>
+<div class="paragraph">
+<p>This brings up a dialog where you can
 configure the set of frequencies shown in the
 various frequency menus. You can add as many
 as you like, or even reconfigure the default
 set. Changing this list does not affect the
 frequency settings of any devices, it only
 changes the set of frequencies shown in the
-menus.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_close"></a>3.7. Close</h2></div></div></div><p>This closes the current window, leaving any other windows
-open and the application running.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_exit"></a>3.8. Exit</h2></div></div></div><p>This closes all TeleGPS windows and terminates the
-application.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_connect_device"></a>3.9. Connect Device</h2></div></div></div><p>Selecting this item brings up a dialog box listing all
+menus.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_close">3.7. Close</h3>
+<div class="paragraph">
+<p>This closes the current window, leaving any other windows
+open and the application running.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_exit">3.8. Exit</h3>
+<div class="paragraph">
+<p>This closes all TeleGPS windows and terminates the
+application.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_connect_device">3.9. Connect Device</h3>
+<div class="paragraph">
+<p>Selecting this item brings up a dialog box listing all
 of the connected TeleDongle devices. When you choose
 one of these, AltosUI will display telemetry data as
-received by the selected TeleDongle device.</p><div class="figure"><a id="idm345"></a><p class="title"><strong>Figure 3.11. Device Selection Dialog</strong></p><div class="figure-contents"><div class="mediaobject"><img src="device-selection.png" width="279" alt="device-selection.png" /></div></div></div><br class="figure-break" /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_disconnect"></a>3.10. Disconnect</h2></div></div></div><p>Disconnects the currently connected TeleDongle or
-TeleBT</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_scan_channels"></a>3.11. Scan Channels</h2></div></div></div><div class="figure"><a id="idm357"></a><p class="title"><strong>Figure 3.12. Radio Scanning Dialog</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-scan.png" width="279" alt="telegps-scan.png" /></div></div></div><br class="figure-break" /><p>Scans the configured set of frequencies looking for
+received by the selected TeleDongle device.</p>
+</div>
+<div class="imageblock">
+<div class="content">
+<img src="device-selection.png" alt="device selection" width="300">
+</div>
+<div class="title">Figure 11. Device Selection Dialog</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_disconnect">3.10. Disconnect</h3>
+<div class="paragraph">
+<p>Disconnects the currently connected TeleDongle or
+TeleBT</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_scan_channels">3.11. Scan Channels</h3>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-scan.png" alt="telegps scan" width="300">
+</div>
+<div class="title">Figure 12. Radio Scanning Dialog</div>
+</div>
+<div class="paragraph">
+<p>Scans the configured set of frequencies looking for
 telemetry signals. A list of all of the discovered
 signals is show; selecting one of those and clicking
-on <span class="emphasis"><em>Monitor</em></span> will select that frequency in the
-associated TeleGPS application window.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_download_data"></a>3.12. Download Data</h2></div></div></div><p>TeleGPS records data to its internal flash memory.
+on 'Monitor' will select that frequency in the
+associated TeleGPS application window.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_download_data">3.12. Download Data</h3>
+<div class="paragraph">
+<p>TeleGPS records data to its internal flash memory.
 On-board data is recorded at the same rate as
 telemetry but is not subject to radio drop-outs. As
 such, it generally provides a more complete and
-precise record.  The <span class="emphasis"><em>Download Data</em></span> menu entry allows
-you to read the flash memory and write it to disk.</p><p>Select the <span class="emphasis"><em>Download Data</em></span> menu entry to bring up a
+precise record.  The 'Download Data' menu entry allows
+you to read the flash memory and write it to disk.</p>
+</div>
+<div class="paragraph">
+<p>Select the 'Download Data' menu entry to bring up a
 list of connected TeleGPS devices. After the device
 has been selected, a dialog showing the data stored in
 the device will be shown allowing you to select which
@@ -356,52 +907,103 @@ be reused by another track. This prevents accidentally
 losing data if you neglect to download data before
 starting TeleGPS again. Note that if there is no more
 space available in the device, then no data will be
-recorded.</p><p>The file name for each data log is computed
+recorded.</p>
+</div>
+<div class="paragraph">
+<p>The file name for each data log is computed
 automatically from the recorded date, altimeter serial
-number and flight number information.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_configure_device"></a>3.13. Configure Device</h2></div></div></div><div class="figure"><a id="idm375"></a><p class="title"><strong>Figure 3.13. TeleGPS Configuration Dialog</strong></p><div class="figure-contents"><div class="mediaobject"><img src="telegps-configure.png" width="324" alt="telegps-configure.png" /></div></div></div><br class="figure-break" /><p>Select this button and then select any connected TeleGPS
-device from the list provided.</p><p>The first few lines of the dialog provide information
+number and flight number information.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configure_device">3.13. Configure Device</h3>
+<div class="imageblock">
+<div class="content">
+<img src="telegps-configure.png" alt="telegps configure" width="350">
+</div>
+<div class="title">Figure 13. TeleGPS Configuration Dialog</div>
+</div>
+<div class="paragraph">
+<p>Select this button and then select any connected TeleGPS
+device from the list provided.</p>
+</div>
+<div class="paragraph">
+<p>The first few lines of the dialog provide information
 about the connected device, including the product
 name, software version and hardware serial
 number. Below that are the individual configuration
-entries.</p><p>At the bottom of the dialog, there are four buttons:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
-Save
-</span></dt><dd>
-This writes any changes to the configuration parameter
-block in flash memory. If you don’t press this button,
-any changes you make will be lost.
-</dd><dt><span class="term">
-Reset
-</span></dt><dd>
-This resets the dialog to the most recently saved
-values, erasing any changes you have made.
-</dd><dt><span class="term">
-Reboot
-</span></dt><dd>
-This reboots the device. Use this to switch from idle
+entries.</p>
+</div>
+<div class="paragraph">
+<p>At the bottom of the dialog, there are four buttons:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Save</dt>
+<dd>
+<p>This writes any changes to the configuration parameter
+block in flash memory. If you don&#8217;t press this button,
+any changes you make will be lost.</p>
+</dd>
+<dt class="hdlist1">Reset</dt>
+<dd>
+<p>This resets the dialog to the most recently saved
+values, erasing any changes you have made.</p>
+</dd>
+<dt class="hdlist1">Reboot</dt>
+<dd>
+<p>This reboots the device. Use this to switch from idle
 to pad mode by rebooting once the rocket is oriented
 for flight, or to confirm changes you think you saved
-are really saved.
-</dd><dt><span class="term">
-Close
-</span></dt><dd>
-This closes the dialog. Any unsaved changes will be
-lost.
-</dd></dl></div><p>The rest of the dialog contains the parameters to be configured.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_frequency"></a>3.13.1. Frequency</h3></div></div></div><p>This configures which of the frequencies to use for
+are really saved.</p>
+</dd>
+<dt class="hdlist1">Close</dt>
+<dd>
+<p>This closes the dialog. Any unsaved changes will be
+lost.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>The rest of the dialog contains the parameters to be configured.</p>
+</div>
+<div class="sect3">
+<h4 id="_frequency">3.13.1. Frequency</h4>
+<div class="paragraph">
+<p>This configures which of the frequencies to use for
 both telemetry and packet command mode. Note that if
 you set this value via packet command mode, the
 TeleDongle frequency will also be automatically
 reconfigured to match so that communication will
-continue afterwards.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_rf_calibration"></a>3.13.2. RF Calibration</h3></div></div></div><p>The radios in every Altus Metrum device are calibrated
+continue afterwards.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_rf_calibration">3.13.2. RF Calibration</h4>
+<div class="paragraph">
+<p>The radios in every Altus Metrum device are calibrated
 at the factory to ensure that they transmit and
 receive on the specified frequency.  If you need to
 you can adjust the calibration by changing this value.
 Do not do this without understanding what the value
 means, read the appendix on calibration and/or the
 source code for more information.  To change a
-TeleDongle’s calibration, you must reprogram the unit
-completely.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telemetry_rdf_aprs_enable"></a>3.13.3. Telemetry/RDF/APRS Enable</h3></div></div></div><p>Enables the radio for transmission during
+TeleDongle&#8217;s calibration, you must reprogram the unit
+completely.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_telemetryrdfaprs_enable">3.13.3. Telemetry/RDF/APRS Enable</h4>
+<div class="paragraph">
+<p>Enables the radio for transmission during
 flight. When disabled, the radio will not
-transmit anything during flight at all.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telemetry_baud_rate"></a>3.13.4. Telemetry baud rate</h3></div></div></div><p>This sets the modulation bit rate for data
+transmit anything during flight at all.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_telemetry_baud_rate">3.13.4. Telemetry baud rate</h4>
+<div class="paragraph">
+<p>This sets the modulation bit rate for data
 transmission for both telemetry and packet
 link mode. Lower bit rates will increase range
 while reducing the amount of data that can be
@@ -409,16 +1011,34 @@ sent and increasing battery consumption. All
 telemetry is done using a rate 1/2 constraint
 4 convolution code, so the actual data
 transmission rate is 1/2 of the modulation bit
-rate specified here.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_aprs_interval"></a>3.13.5. APRS Interval</h3></div></div></div><p>How often to transmit GPS information via APRS
+rate specified here.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_aprs_interval">3.13.5. APRS Interval</h4>
+<div class="paragraph">
+<p>How often to transmit GPS information via APRS
 (in seconds). When set to zero, APRS
 transmission is disabled.
 Note that a single APRS packet
 takes nearly a full second to transmit, so
 enabling this option will prevent sending any
-other telemetry during that time.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_aprs_ssid"></a>3.13.6. APRS SSID</h3></div></div></div><p>Which SSID to report in APRS packets. By
+other telemetry during that time.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_aprs_ssid">3.13.6. APRS SSID</h4>
+<div class="paragraph">
+<p>Which SSID to report in APRS packets. By
 default, this is set to the last digit of the
 serial number, but can be configured to any
-value from 0 to 9.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_aprs_format"></a>3.13.7. APRS Format</h3></div></div></div><p>Whether to send APRS data in Compressed or
+value from 0 to 9.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_aprs_format">3.13.7. APRS Format</h4>
+<div class="paragraph">
+<p>Whether to send APRS data in Compressed or
 Uncompressed format. Compressed format is
 smaller and more precise. Uncompressed
 format is older, but may work better with your
@@ -426,19 +1046,55 @@ device. The Kenwood TH-D72 only displays
 altitude information with Uncompressed
 format, while the Yaesu FT1D only displays
 altitude with Compressed format. Test before
-you fly to see which to use.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_callsign_2"></a>3.13.8. Callsign</h3></div></div></div><p>This sets the call sign included in each
+you fly to see which to use.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_callsign_2">3.13.8. Callsign</h4>
+<div class="paragraph">
+<p>This sets the call sign included in each
 telemetry packet. Set this as needed to
-conform to your local radio regulations.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_logging_trigger_motion"></a>3.13.9. Logging Trigger Motion</h3></div></div></div><p>This sets the amount of motion that TeleGPS
+conform to your local radio regulations.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_logging_trigger_motion">3.13.9. Logging Trigger Motion</h4>
+<div class="paragraph">
+<p>This sets the amount of motion that TeleGPS
 needs to see before logging the new
 position. Motions smaller than this are
-skipped, which saves storage space.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_position_reporting_interval"></a>3.13.10. Position Reporting Interval</h3></div></div></div><p>The interval between TeleGPS position reports,
+skipped, which saves storage space.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_position_reporting_interval">3.13.10. Position Reporting Interval</h4>
+<div class="paragraph">
+<p>The interval between TeleGPS position reports,
 both over the air and in the log. Increase
 this to reduce the frequency of radio
 transmissions and the length of time available
-in the log.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_flash_device"></a>3.14. Flash Device</h2></div></div></div><p>This reprograms TeleGPS devices with new
+in the log.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_flash_device">3.14. Flash Device</h3>
+<div class="paragraph">
+<p>This reprograms TeleGPS devices with new
 firmware. Please read the directions for flashing
-devices in <a class="xref" href="#_updating_device_firmware" title="Appendix D. Updating Device Firmware">Appendix D, <em>Updating Device Firmware</em></a>.</p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_telegps_system_operation"></a>Appendix A. TeleGPS System Operation</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_gfsk_telemetry"></a>A.1. GFSK Telemetry</h2></div></div></div><p>TeleGPS’s native telemetry system doesn’t use a
-<span class="emphasis"><em>normal packet radio</em></span> mode like APRS because it’s not
+devices in <a href="#_updating_device_firmware">Updating Device Firmware</a>.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_telegps_system_operation">Appendix A: TeleGPS System Operation</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_gfsk_telemetry">A.1. GFSK Telemetry</h3>
+<div class="paragraph">
+<p>TeleGPS&#8217;s native telemetry system doesn&#8217;t use a
+'normal packet radio' mode like APRS because it&#8217;s not
 very efficient.  The GFSK modulation we use is FSK
 with the base-band pulses passed through a Gaussian
 filter before they go into the modulator to limit the
@@ -446,59 +1102,155 @@ transmitted bandwidth.  When combined with forward
 error correction and interleaving, this allows us to
 have a very robust 19.2 kilobit data link with only
 10-40 milliwatts of transmit power, a whip antenna in
-the rocket, and a hand-held Yagi on the ground.  Weve
+the rocket, and a hand-held Yagi on the ground.  We&#8217;ve
 had flights to above 21k feet AGL with great
 reception, and calculations suggest we should be good
 to well over 40k feet AGL with a 5-element yagi on the
 ground with our 10mW units and over 100k feet AGL with
-the 40mW devices.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_aprs"></a>A.2. APRS</h2></div></div></div><p>TeleGPS can send APRS if desired, and the
+the 40mW devices.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_aprs">A.2. APRS</h3>
+<div class="paragraph">
+<p>TeleGPS can send APRS if desired, and the
 interval between APRS packets can be configured. As each APRS
 packet takes a full second to transmit, we recommend an
 interval of at least 5 seconds to avoid consuming too much
 battery power or radio channel bandwidth. You can configure
 the APRS interval using TeleGPS; that process is described in
-<a class="xref" href="#_configure_device" title="3.13. Configure Device">Section 3.13, “Configure Device”</a>.</p><p>AltOS supports both compressed and uncompressed APRS
+<a href="#_configure_device">Configure Device</a>.</p>
+</div>
+<div class="paragraph">
+<p>AltOS supports both compressed and uncompressed APRS
 position report data formats. The compressed format
 provides for higher position precision and shorter
-packets than the uncompressed APRS format. Weve found
+packets than the uncompressed APRS format. We&#8217;ve found
 some older APRS receivers that do not handle the
 compressed format. The Kenwood TH-72A requires the use
 of uncompressed format to display altitude information
 correctly. The Yaesu FT1D requires the use of
-compressed format to display altitude information.</p><p>APRS packets include an SSID (Secondary Station Identifier)
+compressed format to display altitude information.</p>
+</div>
+<div class="paragraph">
+<p>APRS packets include an SSID (Secondary Station Identifier)
 field that allows one operator to have multiple
 transmitters. AltOS allows you to set this to a single digit
 from 0 to 9, allowing you to fly multiple transmitters at the
 same time while keeping the identify of each one separate in
 the receiver. By default, the SSID is set to the last digit of
-the device serial number.</p><p>The APRS packet format includes a comment field that
+the device serial number.</p>
+</div>
+<div class="paragraph">
+<p>The APRS packet format includes a comment field that
 can have arbitrary text in it. AltOS uses this to send
-status information as shown in the following table.</p><div class="table"><a id="idm450"></a><p class="title"><strong>Table A.1. Altus Metrum APRS Comments</strong></p><div class="table-contents"><table class="table" summary="Altus Metrum APRS Comments" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><thead><tr><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Field        </th><th style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top">Example        </th><th style="border-bottom: 1px solid #78079a; " align="left" valign="top">Description</th></tr></thead><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>L</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>GPS Status U for unlocked, L for locked</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Number of Satellites in View</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>B4.0</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Altimeter Battery Voltage</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>1286</p></td><td style="" align="left" valign="top"><p>Device Serial Number</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Here’s an example of an APRS comment showing GPS lock with 6
-satellites in view and a primary battery at 4.0V from device 1876.</p><pre class="literallayout">L6 B4.0 1876</pre><p>Make sure your primary battery is above 3.8V
+status information as shown in the following table.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 1. Altus Metrum APRS Comments</caption>
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Field</th>
+<th class="tableblock halign-left valign-top">Example</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">L</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GPS Status U for unlocked, L for locked</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Number of Satellites in View</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">B4.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Altimeter Battery Voltage</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1286</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Device Serial Number</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Here&#8217;s an example of an APRS comment showing GPS lock with 6
+satellites in view and a primary battery at 4.0V from device 1876.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>L6 B4.0 1876</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Make sure your primary battery is above 3.8V
 and GPS is locked with at least 5 or 6 satellites in
 view before flying. If GPS is switching between L and
-U regularly, then it doesn’t have a good lock and you
-should wait until it becomes stable.</p><p>If the GPS receiver loses lock, the APRS data
+U regularly, then it doesn&#8217;t have a good lock and you
+should wait until it becomes stable.</p>
+</div>
+<div class="paragraph">
+<p>If the GPS receiver loses lock, the APRS data
 transmitted will contain the last position for which
 GPS lock was available. You can tell that this has
 happened by noticing that the GPS status character
-switches from <span class="emphasis"><em>L</em></span> to <span class="emphasis"><em>U</em></span>. Before GPS has locked, APRS
+switches from 'L' to 'U'. Before GPS has locked, APRS
 will transmit zero for latitude, longitude and
-altitude.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_configurable_parameters"></a>A.3. Configurable Parameters</h2></div></div></div><p>Configuring TeleGPS is very simple; the few configurable
+altitude.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_configurable_parameters">A.3. Configurable Parameters</h3>
+<div class="paragraph">
+<p>Configuring TeleGPS is very simple; the few configurable
 parameters can all be set using the TeleGPS application over
-USB. Check out <a class="xref" href="#_configure_device" title="3.13. Configure Device">Section 3.13, “Configure Device”</a>.</p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_handling_precautions"></a>Appendix B. Handling Precautions</h1></div></div></div><p>All Altus Metrum products are sophisticated electronic devices.
+USB. Check out <a href="#_configure_device">Configure Device</a>.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_handling_precautions">Appendix B: Handling Precautions</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>All Altus Metrum products are sophisticated electronic devices.
 When handled gently and properly installed in an air-frame, they
 will deliver impressive results.  However, as with all electronic
-devices, there are some precautions you must take.</p><div class="warning" style="margin-left: 0; margin-right: 10%;"><h3 class="title">Warning</h3><p>The Lithium Polymer rechargeable batteries have an
+devices, there are some precautions you must take.</p>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Warning</div>
+</td>
+<td class="content">
+The Lithium Polymer rechargeable batteries have an
 extraordinary power density.  This is great because we can fly with
 much less battery mass than if we used alkaline batteries or previous
-generation rechargeable batteries but if they are punctured
+generation rechargeable batteries&#8230;&#8203; but if they are punctured
 or their leads are allowed to short, they can and will release their
 energy very rapidly!
 Thus we recommend that you take some care when handling our batteries
 and consider giving them some extra protection in your air-frame.  We
 often wrap them in suitable scraps of closed-cell packing foam before
-strapping them down, for example.</p></div><p>The barometric sensors used on all of our flight computers are
+strapping them down, for example.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>The barometric sensors used on all of our flight computers are
 sensitive to sunlight.  In normal mounting situations, the baro sensor
 and all of the other surface mount components
 are “down” towards whatever the underlying mounting surface is, so
@@ -510,646 +1262,1562 @@ consider this with TeleMini v1.0, both because the baro sensor is on the
 use clear plastic for the payload bay!  Replacing these with an opaque
 cardboard tube, painting them, or wrapping them with a layer of masking
 tape are all reasonable approaches to keep the sensor out of direct
-sunlight.</p><p>The barometric sensor sampling port must be able to “breathe”,
+sunlight.</p>
+</div>
+<div class="paragraph">
+<p>The barometric sensor sampling port must be able to “breathe”,
 both by not being covered by foam or tape or other materials that might
 directly block the hole on the top of the sensor, and also by having a
-suitable static vent to outside air.</p><p>As with all other rocketry electronics, Altus Metrum altimeters must
+suitable static vent to outside air.</p>
+</div>
+<div class="paragraph">
+<p>As with all other rocketry electronics, Altus Metrum altimeters must
 be protected from exposure to corrosive motor exhaust and ejection
-charge gasses.</p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_technical_information"></a>Appendix C. Technical Information</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_gps_receiver"></a>C.1. GPS Receiver</h2></div></div></div><p>TeleGPS uses the u-Blox Max-7Q GPS receiver.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_70cm_transmitter"></a>C.2. 70cm Transmitter</h2></div></div></div><p>TeleGPS uses a TI CC115L transmitter. This radio
-produces 10mW of RF output.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_micro_controller"></a>C.3. Micro-controller</h2></div></div></div><p>TeleGPS uses an NXP LPC11U14 micro-controller. This
+charge gasses.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_technical_information">Appendix C: Technical Information</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_gps_receiver">C.1. GPS Receiver</h3>
+<div class="paragraph">
+<p>TeleGPS uses the u-Blox Max-7Q GPS receiver.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_70cm_transmitter">C.2. 70cm Transmitter</h3>
+<div class="paragraph">
+<p>TeleGPS uses a TI CC115L transmitter. This radio
+produces 10mW of RF output.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_micro_controller">C.3. Micro-controller</h3>
+<div class="paragraph">
+<p>TeleGPS uses an NXP LPC11U14 micro-controller. This
 tiny CPU contains 32kB of flash for the application
-and 4kB of RAM for temporary data storage.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_lithium_polymer_battery"></a>C.4. Lithium Polymer Battery</h2></div></div></div><p>Shipping restrictions may prevent us from including a
-battery battery with TeleGPS.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_mechanical_considerations"></a>C.5. Mechanical Considerations</h2></div></div></div><p>TeleGPS is designed to be rugged enough for typical
+and 4kB of RAM for temporary data storage.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_lithium_polymer_battery">C.4. Lithium Polymer Battery</h3>
+<div class="paragraph">
+<p>Shipping restrictions may prevent us from including a
+battery battery with TeleGPS.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_mechanical_considerations">C.5. Mechanical Considerations</h3>
+<div class="paragraph">
+<p>TeleGPS is designed to be rugged enough for typical
 rocketry applications.  The 4 mounting holes on the
-board are sized for use with 4-40 or M3 screws.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_on_board_data_storage"></a>C.6. On-board data storage</h2></div></div></div><p>TeleGPS has 2MB of non-volatile storage, separate from
+board are sized for use with 4-40 or M3 screws.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_on_board_data_storage">C.6. On-board data storage</h3>
+<div class="paragraph">
+<p>TeleGPS has 2MB of non-volatile storage, separate from
 the code storage memory. The TeleGPS firmware uses
-this to log information during flight.</p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_updating_device_firmware"></a>Appendix D. Updating Device Firmware</h1></div></div></div><p>TeleGPS is programmed directly over its USB connectors.</p><p>You may wish to begin by ensuring you have current firmware images.
+this to log information during flight.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_updating_device_firmware">Appendix D: Updating Device Firmware</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>TeleGPS is programmed directly over its USB connectors.</p>
+</div>
+<div class="paragraph">
+<p>You may wish to begin by ensuring you have current firmware images.
 These are distributed as part of the TeleGPS software bundle that
 also includes the TeleGPS ground station program.  Newer ground
 station versions typically work fine with older firmware versions,
-so you dont need to update your devices just to try out new
+so you don&#8217;t need to update your devices just to try out new
 software features.  You can always download the most recent
-version from <a class="ulink" href="http://www.altusmetrum.org/AltOS/" target="_top">http://www.altusmetrum.org/AltOS/</a></p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_updating_telegps_firmware"></a>D.1. Updating TeleGPS Firmware</h2></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
-Attach a battery and power switch to the target
-device. Power up the device.
-</li><li class="listitem">
-Using a Micro USB cable, connect the target device to
-your computer’s USB socket.
-</li><li class="listitem">
-Run TeleGPS, and select <span class="emphasis"><em>Flash Device</em></span> from the
-Device menu.
-</li><li class="listitem">
-Select the target device in the Device Selection
-dialog.
-</li><li class="listitem">
-Select the image you want to flash to the device,
+version from <a href="http://www.altusmetrum.org/AltOS/" class="bare">http://www.altusmetrum.org/AltOS/</a></p>
+</div>
+<div class="sect2">
+<h3 id="_updating_telegps_firmware">D.1. Updating TeleGPS Firmware</h3>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Attach a battery and power switch to the target
+device. Power up the device.</p>
+</li>
+<li>
+<p>Using a Micro USB cable, connect the target device to
+your computer&#8217;s USB socket.</p>
+</li>
+<li>
+<p>Run TeleGPS, and select 'Flash Device' from the
+Device menu.</p>
+</li>
+<li>
+<p>Select the target device in the Device Selection
+dialog.</p>
+</li>
+<li>
+<p>Select the image you want to flash to the device,
 which should have a name in the form
 &lt;product&gt;-v&lt;product-version&gt;-&lt;software-version&gt;.ihx,
-such as TeleGPS-v1.0-1.4.0.ihx.
-</li><li class="listitem">
-Make sure the configuration parameters are reasonable
+such as TeleGPS-v1.0-1.4.0.ihx.</p>
+</li>
+<li>
+<p>Make sure the configuration parameters are reasonable
 looking. If the serial number and/or RF configuration
-values aren’t right, you’ll need to change them.
-</li><li class="listitem">
-Hit the <span class="emphasis"><em>OK</em></span> button and the software should proceed
+values aren&#8217;t right, you&#8217;ll need to change them.</p>
+</li>
+<li>
+<p>Hit the 'OK' button and the software should proceed
 to flash the device with new firmware, showing a
-progress bar.
-</li><li class="listitem">
-Verify that the device is working by using the
+progress bar.</p>
+</li>
+<li>
+<p>Verify that the device is working by using the
 'Configure Device item to check over the
-configuration.
-</li></ol></div></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="_release_notes"></a>Appendix E. Release Notes</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_6"></a>E.1. Release Notes for Version 1.8.6</h2></div></div></div><p>Version 1.8.6</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos"></a>E.1.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Use maximum of 64 previous tilt values in pyro tilt tests
-</li><li class="listitem">
-Eliminate 100m height requirement for coast detection
-</li><li class="listitem">
-Change After Motor pyro check to be &gt;= instead of ==
-</li><li class="listitem">
-Change Time since Boost to be Time since launch.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps"></a>E.1.2. AltosUI, TeleGPS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Clarify pyro test phrasing
-</li><li class="listitem">
-Remove ascending/descending from pyro config UI
-</li><li class="listitem">
-Fix accel calibration in Antenna Down mode
-</li><li class="listitem">
-Add mag sensor reporting for TeleMega v3 idle monitoring.
-</li><li class="listitem">
-Fix radio parameter saving at 2400 bps telmetry rate.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_micropeak"></a>E.1.3. MicroPeak</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Report altimeter-recorded maximum height value
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_5"></a>E.2. Release Notes for Version 1.8.5</h2></div></div></div><p>Version 1.8.5 includes fixes to the ground software support
-for TeleBT v4, along with a few other minor updates.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_2"></a>E.2.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix startup beeps that indicate sensor failures.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_2"></a>E.2.2. AltosUI, TeleGPS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-When updating device firmware, make sure selected firmware
-matches target device.
-</li><li class="listitem">
-Correct Bluetooth device matching when looking for TeleBT
-devices.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_4"></a>E.3. Release Notes for Version 1.8.4</h2></div></div></div><p>Version 1.8.4 includes support for EasyMini version 2.0</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_3"></a>E.3.1. AltOS</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for EasyMini version 2.0 hardware.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_3"></a>E.4. Release Notes for Version 1.8.3</h2></div></div></div><p>Version 1.8.3 includes support for TeleMega version 3.0 along
+configuration.</p>
+</li>
+</ol>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_release_notes">Appendix E: Release Notes</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_6">E.1. Release Notes for Version 1.8.6</h3>
+<div class="paragraph">
+<p>Version 1.8.6</p>
+</div>
+<div class="sect3">
+<h4 id="_altos">E.1.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Use maximum of 64 previous tilt values in pyro tilt tests</p>
+</li>
+<li>
+<p>Eliminate 100m height requirement for coast detection</p>
+</li>
+<li>
+<p>Change After Motor pyro check to be &gt;= instead of ==</p>
+</li>
+<li>
+<p>Change Time since Boost to be Time since launch.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps">E.1.2. AltosUI, TeleGPS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Clarify pyro test phrasing</p>
+</li>
+<li>
+<p>Remove ascending/descending from pyro config UI</p>
+</li>
+<li>
+<p>Fix accel calibration in Antenna Down mode</p>
+</li>
+<li>
+<p>Add mag sensor reporting for TeleMega v3 idle monitoring.</p>
+</li>
+<li>
+<p>Fix radio parameter saving at 2400 bps telmetry rate.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_micropeak">E.1.3. MicroPeak</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Report altimeter-recorded maximum height value</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_5">E.2. Release Notes for Version 1.8.5</h3>
+<div class="paragraph">
+<p>Version 1.8.5 includes fixes to the ground software support
+for TeleBT v4, along with a few other minor updates.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_2">E.2.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix startup beeps that indicate sensor failures.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_2">E.2.2. AltosUI, TeleGPS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>When updating device firmware, make sure selected firmware
+matches target device.</p>
+</li>
+<li>
+<p>Correct Bluetooth device matching when looking for TeleBT
+devices.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_4">E.3. Release Notes for Version 1.8.4</h3>
+<div class="paragraph">
+<p>Version 1.8.4 includes support for EasyMini version 2.0</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_3">E.3.1. AltOS</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for EasyMini version 2.0 hardware.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_3">E.4. Release Notes for Version 1.8.3</h3>
+<div class="paragraph">
+<p>Version 1.8.3 includes support for TeleMega version 3.0 along
 with two important flight computer fixes. This version also
 changes KML export data to make Tripoli Record reporting
 better and some updates to graph presentation and data
-downloading.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_4"></a>E.4.1. AltOS</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altos_new_features"></a>AltOS New Features</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleMega version 3.0 hardware.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altos_bug_fixes"></a>AltOS Bug Fixes</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Ground testing EasyMega and TeleMega additional pyro
-channels could result in a sticky <span class="emphasis"><em>fired</em></span> status which would
-prevent these channels from firing on future flights.
-</li><li class="listitem">
-Corrupted flight log records could prevent future flights
-from capturing log data.
-</li><li class="listitem">
-Fixed saving of pyro configuration that ended with
-<span class="emphasis"><em>Descending</em></span>.
-</li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications"></a>E.4.2. AltosUI and TeleGPS Applications</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altosui_new_features"></a>AltosUI New Features</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleMega version 3.0.
-</li><li class="listitem">
-Graph lines have improved appearance to make them easier to
+downloading.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_4">E.4.1. AltOS</h4>
+<div class="sect4">
+<h5 id="_altos_new_features">AltOS New Features</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleMega version 3.0 hardware.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_altos_bug_fixes">AltOS Bug Fixes</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Ground testing EasyMega and TeleMega additional pyro
+channels could result in a sticky 'fired' status which would
+prevent these channels from firing on future flights.</p>
+</li>
+<li>
+<p>Corrupted flight log records could prevent future flights
+from capturing log data.</p>
+</li>
+<li>
+<p>Fixed saving of pyro configuration that ended with
+'Descending'.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications">E.4.2. AltosUI and TeleGPS Applications</h4>
+<div class="sect4">
+<h5 id="_altosui_new_features">AltosUI New Features</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleMega version 3.0.</p>
+</li>
+<li>
+<p>Graph lines have improved appearance to make them easier to
 distinguish. Markers may be placed at data points to show
-captured recorded data values.
-</li><li class="listitem">
-Graphing offers the ability to adjust the smoothing of
-computed speed and acceleration data.
-</li><li class="listitem">
-The download dialog now offers to graph new flights, checks
+captured recorded data values.</p>
+</li>
+<li>
+<p>Graphing offers the ability to adjust the smoothing of
+computed speed and acceleration data.</p>
+</li>
+<li>
+<p>The download dialog now offers to graph new flights, checks
 for existing files to avoid overwriting data and reports if
-there are checksum errors in the downloaded data.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altosui_telegps_bug_fixes"></a>AltosUI/TeleGPS Bug Fixes</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Restore TeleGPS tracking behavior.
-</li><li class="listitem">
-Display flight computer call sign and serial number in
-Monitor Idle mode instead of ground station values.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="_altosui_and_telegps_changes"></a>AltosUI and TeleGPS Changes</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-KML export now reports both barometric and GPS altitude data
-to make it more useful for Tripoli record reporting.
-</li><li class="listitem">
-CSV export now includes TeleMega/EasyMega pyro voltages and
-tilt angle.
-</li></ul></div><p></p></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_2"></a>E.5. Release Notes for Version 1.8.2</h2></div></div></div><p>Version 1.8.2 includes support for TeleGPS version 2.0 along
-with accelerometer recalibration support in AltosUI.</p><p>1.8.2 also contains a couple of minor fixes for AltosUI when
-analyzing saved data files.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_5"></a>E.5.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleGPS version 2.0 hardware.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_2"></a>E.5.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support for TeleGPS version 2.0.
-</li><li class="listitem">
-Accelerometer re-calibration user interface.
-</li></ul></div><p>AltosUI and TeleGPS Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Prevent some crashes when reading older saved flight data
-for graphing or KML export.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8_1"></a>E.6. Release Notes for Version 1.8.1</h2></div></div></div><p>Version 1.8.1 includes an important bug fix for Apogee Lockout
+there are checksum errors in the downloaded data.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_altosuitelegps_bug_fixes">AltosUI/TeleGPS Bug Fixes</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>Restore TeleGPS tracking behavior.</p>
+</li>
+<li>
+<p>Display flight computer call sign and serial number in
+Monitor Idle mode instead of ground station values.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_altosui_and_telegps_changes">AltosUI and TeleGPS Changes</h5>
+<div class="ulist">
+<ul>
+<li>
+<p>KML export now reports both barometric and GPS altitude data
+to make it more useful for Tripoli record reporting.</p>
+</li>
+<li>
+<p>CSV export now includes TeleMega/EasyMega pyro voltages and
+tilt angle.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_2">E.5. Release Notes for Version 1.8.2</h3>
+<div class="paragraph">
+<p>Version 1.8.2 includes support for TeleGPS version 2.0 along
+with accelerometer recalibration support in AltosUI.</p>
+</div>
+<div class="paragraph">
+<p>1.8.2 also contains a couple of minor fixes for AltosUI when
+analyzing saved data files.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_5">E.5.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleGPS version 2.0 hardware.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_2">E.5.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Support for TeleGPS version 2.0.</p>
+</li>
+<li>
+<p>Accelerometer re-calibration user interface.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Prevent some crashes when reading older saved flight data
+for graphing or KML export.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8_1">E.6. Release Notes for Version 1.8.1</h3>
+<div class="paragraph">
+<p>Version 1.8.1 includes an important bug fix for Apogee Lockout
 operation in all flight computers. Anyone using this option
-must update firmware.</p><p>This release also contains a change in how flight computers
+must update firmware.</p>
+</div>
+<div class="paragraph">
+<p>This release also contains a change in how flight computers
 with accelerometers deal with speeds around and above Mach
 1. In previous versions, the flight computer would completely
 disregard the barometric sensor above 330m/s (around Mach
 1). Now, the data from the barometric sensor is reduced in
 effect without ever going away entirely. This prevents early
 drogue deployment for flights which spend considerable time
-above Mach 1.</p><p>1.8.1 also contains a couple of minor fixes for AltosUI when
-analyzing saved data files.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_6"></a>E.6.1. AltOS</h3></div></div></div><p>AltOS Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Handle time value wrapping in Apogee Lockout
+above Mach 1.</p>
+</div>
+<div class="paragraph">
+<p>1.8.1 also contains a couple of minor fixes for AltosUI when
+analyzing saved data files.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_6">E.6.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Handle time value wrapping in Apogee Lockout
 correctly. Without this, apogee lockout would sometimes
-prevent any drogue charge from firing.
-</li><li class="listitem">
-Change Kalman filter on flight computers with accelerometer
+prevent any drogue charge from firing.</p>
+</li>
+<li>
+<p>Change Kalman filter on flight computers with accelerometer
 to continue using the barometric sensor even at high speeds
 to avoid unintentional drogue deployment during
-deceleration.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_3"></a>E.6.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add new <span class="emphasis"><em>Huge</em></span> font size to make text even bigger on high
-resolution monitors.
-</li></ul></div><p>AltosUI Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Prevent some crashes when reading older saved flight data
-for graphing or KML export.
-</li><li class="listitem">
-Load frequency preference at startup. The loading code was
-broken, so you’d see only the default frequencies.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_8"></a>E.7. Release Notes for Version 1.8</h2></div></div></div><p>Version 1.8 includes support for our new TeleBT v4.0 ground
+deceleration.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_3">E.6.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add new 'Huge' font size to make text even bigger on high
+resolution monitors.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Prevent some crashes when reading older saved flight data
+for graphing or KML export.</p>
+</li>
+<li>
+<p>Load frequency preference at startup. The loading code was
+broken, so you&#8217;d see only the default frequencies.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_8">E.7. Release Notes for Version 1.8</h3>
+<div class="paragraph">
+<p>Version 1.8 includes support for our new TeleBT v4.0 ground
 station, updates for data analysis in our ground station
 software and bug fixes in in the flight software for all our
-boards and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_7"></a>E.7.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleBT v4.0 boards.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_4"></a>E.7.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleBT v4.0 hardware
-</li><li class="listitem">
-Rewrite graphing and export functions. This code now handles
+boards and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_7">E.7.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleBT v4.0 boards.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_4">E.7.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleBT v4.0 hardware</p>
+</li>
+<li>
+<p>Rewrite graphing and export functions. This code now handles
 each data series separately so that graphs are drawn
 correctly. Smoothing now uses a filter that looks both
 forward and backwards in time to make computed speed and
-acceleration data more accurate.
-</li></ul></div><p>AltosUI Bug Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Correct axis labeling of magnetic sensor in TeleMega and
-EasyMega. The Y and Z axes were flipped.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_7"></a>E.8. Release Notes for Version 1.7</h2></div></div></div><p>Version 1.7 includes support for our new TeleMini v3.0
+acceleration data more accurate.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Bug Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Correct axis labeling of magnetic sensor in TeleMega and
+EasyMega. The Y and Z axes were flipped.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_7">E.8. Release Notes for Version 1.7</h3>
+<div class="paragraph">
+<p>Version 1.7 includes support for our new TeleMini v3.0
 flight computer and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_8"></a>E.8.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleMini v3.0 boards.
-</li></ul></div><p>AltOS Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix interrupt priorities on STM32L processors. Run timer
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_8">E.8.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleMini v3.0 boards.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix interrupt priorities on STM32L processors. Run timer
 interrupt at lowest priority so that device interrupts get
-serviced first.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_5"></a>E.8.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleMini v3.0 hardware
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_8"></a>E.9. Release Notes for Version 1.6.8</h2></div></div></div><p>Version 1.6.8 fixes a TeleMega and TeleMetrum v2.0 bug where
+serviced first.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_5">E.8.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleMini v3.0 hardware</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_8">E.9. Release Notes for Version 1.6.8</h3>
+<div class="paragraph">
+<p>Version 1.6.8 fixes a TeleMega and TeleMetrum v2.0 bug where
 the device could stop logging data and transmitting
 telemetry in flight. All TeleMega v1.0, v2.0 and TeleMetrum
-v2.0 users should update their flight firmware.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_9"></a>E.9.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix STM32L DMA driver to work around STM32L SoC DMA priority
+v2.0 users should update their flight firmware.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_9">E.9.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix STM32L DMA driver to work around STM32L SoC DMA priority
 issue t lock-up in the logging or radio code, either of
-which could stop data logging and telemetry.
-</li><li class="listitem">
-Avoid having TeleBT battery status values smash telemetry
-packet data by holding a lock during both operations.
-</li><li class="listitem">
-Don’t start reporting <span class="emphasis"><em>flight 0</em></span> when the log fills in
-flight.
-</li></ul></div><p>AltOS changes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Flash LEDS on all products briefly during power up so that
-they can be tested during production.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_and_altosdroid_applications"></a>E.9.2. AltosUI, TeleGPS and AltosDroid Applications</h3></div></div></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Re-enable go/no-go entries after they’ve been disabled due
+which could stop data logging and telemetry.</p>
+</li>
+<li>
+<p>Avoid having TeleBT battery status values smash telemetry
+packet data by holding a lock during both operations.</p>
+</li>
+<li>
+<p>Don&#8217;t start reporting 'flight 0' when the log fills in
+flight.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS changes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Flash LEDS on all products briefly during power up so that
+they can be tested during production.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_and_altosdroid_applications">E.9.2. AltosUI, TeleGPS and AltosDroid Applications</h4>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Re-enable go/no-go entries after they&#8217;ve been disabled due
 to lack of data. If telemetry information is delayed when
 the Ui starts up, sometimes important fields would get
-disabled to never re-appear.
-</li><li class="listitem">
-Deal with ground station failure better during Configure
-Ground Station operation by cleaning up pending operations.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_5"></a>E.10. Release Notes for Version 1.6.5</h2></div></div></div><p>Version 1.6.5 fixes a TeleMega and TeleMetrum v2.0 bug where
+disabled to never re-appear.</p>
+</li>
+<li>
+<p>Deal with ground station failure better during Configure
+Ground Station operation by cleaning up pending operations.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_5">E.10. Release Notes for Version 1.6.5</h3>
+<div class="paragraph">
+<p>Version 1.6.5 fixes a TeleMega and TeleMetrum v2.0 bug where
 the device would often stop logging data and transmitting
 telemetry in flight. All TeleMega v1.0, v2.0 and TeleMetrum
-v2.0 users should update their flight firmware.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_10"></a>E.10.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix STM32L SPI driver to prevent lock-up in the logging or
+v2.0 users should update their flight firmware.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_10">E.10.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix STM32L SPI driver to prevent lock-up in the logging or
 radio code, either of which could stop data logging and
 telemetry. Found and characterized by Chuck Haskin, who also
-tested the new firmware before release.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_and_altosdroid_applications_2"></a>E.10.2. AltosUI, TeleGPS and AltosDroid Applications</h3></div></div></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Deliver firmward for TeleMega v2.0 and TeleBT v3.0 with
-Windows package.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_4"></a>E.11. Release Notes for Version 1.6.4</h2></div></div></div><p>Version 1.6.4 fixes a bluetooth communication problem with
+tested the new firmware before release.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_and_altosdroid_applications_2">E.10.2. AltosUI, TeleGPS and AltosDroid Applications</h4>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Deliver firmward for TeleMega v2.0 and TeleBT v3.0 with
+Windows package.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_4">E.11. Release Notes for Version 1.6.4</h3>
+<div class="paragraph">
+<p>Version 1.6.4 fixes a bluetooth communication problem with
 TeleBT v1.0 devices, along with some altosui and altosdroid
-minor nits. It also now ships firmware for some newer devices.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_11"></a>E.11.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix hardware flow control on TeleBT v1.0. Hardware RTS/CTS
-doesn’t seem to work, switch from using the hardware to
-driving these pins with software.
-</li><li class="listitem">
-Fix ARM USB drivers to deal with OS restarts. Needed to
+minor nits. It also now ships firmware for some newer devices.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_11">E.11.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix hardware flow control on TeleBT v1.0. Hardware RTS/CTS
+doesn&#8217;t seem to work, switch from using the hardware to
+driving these pins with software.</p>
+</li>
+<li>
+<p>Fix ARM USB drivers to deal with OS restarts. Needed to
 reset all USB-related state when the USB bus is reset. These
-fixes affect all STM32L, STM32F0 and LPC11U14 based devices.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_telegps_and_altosdroid_applications_3"></a>E.11.2. AltosUI, TeleGPS and AltosDroid Applications</h3></div></div></div><p>AltosUI, TeleGPS and AltosDroid New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Automatically switch from meters or feet to kilometers or
-miles for distance units.
-</li><li class="listitem">
-Add Monitor Idle mode to TeleGPS application.
-</li></ul></div><p>AltosUI, TeleGPS and AltosDroid Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Abort map preloading when the preload map dialog is closed.
-</li><li class="listitem">
-In AltosDroid, Don’t reconnect to last device if the user
+fixes affect all STM32L, STM32F0 and LPC11U14 based devices.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_telegps_and_altosdroid_applications_3">E.11.2. AltosUI, TeleGPS and AltosDroid Applications</h4>
+<div class="paragraph">
+<p>AltosUI, TeleGPS and AltosDroid New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Automatically switch from meters or feet to kilometers or
+miles for distance units.</p>
+</li>
+<li>
+<p>Add Monitor Idle mode to TeleGPS application.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI, TeleGPS and AltosDroid Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Abort map preloading when the preload map dialog is closed.</p>
+</li>
+<li>
+<p>In AltosDroid, Don&#8217;t reconnect to last device if the user
 had disconnected it the last time the application was
-active.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation"></a>E.11.3. Documentation</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Mention TeleMega v2.0 in hardware specs table.
-</li><li class="listitem">
-Document TeleGPS RF output in telegps manual.
-</li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_3"></a>E.12. Release Notes for Version 1.6.3</h2></div></div></div><p>Version 1.6.3 adds idle mode to AltosDroid and has bug fixes
+active.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation">E.11.3. Documentation</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Mention TeleMega v2.0 in hardware specs table.</p>
+</li>
+<li>
+<p>Document TeleGPS RF output in telegps manual.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_3">E.12. Release Notes for Version 1.6.3</h3>
+<div class="paragraph">
+<p>Version 1.6.3 adds idle mode to AltosDroid and has bug fixes
 for our host software on desktops, laptops an android devices
-along with BlueTooth support for Windows.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_12"></a>E.12.1. AltOS</h3></div></div></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix hardware flow control on TeleBT v3.0. RTS/CTS is
+along with BlueTooth support for Windows.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_12">E.12.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix hardware flow control on TeleBT v3.0. RTS/CTS is
 wired backwards on this board, switch from using the
-hardware to driving these pins with software.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_6"></a>E.12.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add BlueTooth support for Windows operating system. This
+hardware to driving these pins with software.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_6">E.12.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add BlueTooth support for Windows operating system. This
 supports connections to TeleBT over BlueTooth rather than
-just USB.
-</li></ul></div><p>AltosUI and TeleGPS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Change Java detection and install on Windows. Detection is
-now done by looking for the <span class="emphasis"><em>javaw.exe</em></span> program, and
-installation by opening a browser on the java.com web site.
-</li><li class="listitem">
-Delay polling while the Fire Igniters is visible to allow
-for TeleMega to report back complete status over the radio.
-</li><li class="listitem">
-Disallow changing RF calibration numbers in the
-configuration UI. There’s no good reason to change this from
-the field, and recovering is really hard if you haven’t
-written down the right number.
-</li><li class="listitem">
-Fix USB device discovery on Mac OS X El Capitan. This makes
-the connected Altus Metrum USB devices appear again.
-</li><li class="listitem">
-Fix acceleration data presented in MonitorIdle mode for
-TeleMetrum v2.0 flight computers.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosdroid"></a>E.12.3. AltosDroid</h3></div></div></div><p>AltosDroid new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Monitor Idle mode. Check state of flight computer while in
-idle mode over the radio link
-</li><li class="listitem">
-Fire Igniters. Remotely fire ignires for recovery system
-ground tests.
-</li><li class="listitem">
-Remote reboot. Cause the flight computer to reboot over the
+just USB.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Change Java detection and install on Windows. Detection is
+now done by looking for the 'javaw.exe' program, and
+installation by opening a browser on the java.com web site.</p>
+</li>
+<li>
+<p>Delay polling while the Fire Igniters is visible to allow
+for TeleMega to report back complete status over the radio.</p>
+</li>
+<li>
+<p>Disallow changing RF calibration numbers in the
+configuration UI. There&#8217;s no good reason to change this from
+the field, and recovering is really hard if you haven&#8217;t
+written down the right number.</p>
+</li>
+<li>
+<p>Fix USB device discovery on Mac OS X El Capitan. This makes
+the connected Altus Metrum USB devices appear again.</p>
+</li>
+<li>
+<p>Fix acceleration data presented in MonitorIdle mode for
+TeleMetrum v2.0 flight computers.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosdroid">E.12.3. AltosDroid</h4>
+<div class="paragraph">
+<p>AltosDroid new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Monitor Idle mode. Check state of flight computer while in
+idle mode over the radio link</p>
+</li>
+<li>
+<p>Fire Igniters. Remotely fire ignires for recovery system
+ground tests.</p>
+</li>
+<li>
+<p>Remote reboot. Cause the flight computer to reboot over the
 radio link. This provides a method for switching the flight
 computer from idle to flight mode without needing to reach
-the power switch.
-</li><li class="listitem">
-Configurable frequency menu. Change the set of available
-frequencies and provide more descriptive names.
-</li></ul></div><p>AltosDroid bug fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Don’t set target location if GPS hasn’t locked yet.
-</li><li class="listitem">
-Fix saving target states so they can be reloaded when the
+the power switch.</p>
+</li>
+<li>
+<p>Configurable frequency menu. Change the set of available
+frequencies and provide more descriptive names.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosDroid bug fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Don&#8217;t set target location if GPS hasn&#8217;t locked yet.</p>
+</li>
+<li>
+<p>Fix saving target states so they can be reloaded when the
 application restarts. When the application is shut down and
 restarted, all previous target state information will be
-restored (including GPS position if available).
-</li><li class="listitem">
-Fix crash on some Android devices for offline maps when
-changing the map scale or location.
-</li><li class="listitem">
-Don’t require USB OTG support. This kept the latest
+restored (including GPS position if available).</p>
+</li>
+<li>
+<p>Fix crash on some Android devices for offline maps when
+changing the map scale or location.</p>
+</li>
+<li>
+<p>Don&#8217;t require USB OTG support. This kept the latest
 AltosDroid from being offered on devices without USB device
 support, although it can work without that just fine using
-BlueTooth.
-</li><li class="listitem">
-Don’t require bluetooth to be enabled. This allows the
+BlueTooth.</p>
+</li>
+<li>
+<p>Don&#8217;t require bluetooth to be enabled. This allows the
 application to operate with USB devices or just show old
-data without turning on the bluetooth radio.
-</li><li class="listitem">
-Recover old tracker positions when restarting
+data without turning on the bluetooth radio.</p>
+</li>
+<li>
+<p>Recover old tracker positions when restarting
 application. This finally allows you to safely stop and
 restart the application without losing the last known
-location of any tracker.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation_2"></a>E.12.4. Documentation</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Document TeleMega and EasyMega additional pyro channel
-continuity audio alert pattern.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_2"></a>E.13. Release Notes for Version 1.6.2</h2></div></div></div><p>Version 1.6.2 includes support for our updated TeleMega v2.0
+location of any tracker.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation_2">E.12.4. Documentation</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>Document TeleMega and EasyMega additional pyro channel
+continuity audio alert pattern.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_2">E.13. Release Notes for Version 1.6.2</h3>
+<div class="paragraph">
+<p>Version 1.6.2 includes support for our updated TeleMega v2.0
 product and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_13"></a>E.13.1. AltOS</h3></div></div></div><p>AltOS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleMega v2.0 boards.
-</li><li class="listitem">
-Add PWM servo driver. There’s no higher level code using
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_13">E.13.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleMega v2.0 boards.</p>
+</li>
+<li>
+<p>Add PWM servo driver. There&#8217;s no higher level code using
 this yet, but the driver allows testing of the TeleMega v2.0
-servo output connector.
-</li></ul></div><p>AltOS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Slow down telemetry packets to allow receiver to keep
-up.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_7"></a>E.13.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix post-flight orientation computation when processing
-TeleMega and EasyMega eeprom data files.
-</li><li class="listitem">
-Capture complete eeprom data even when there are invalid
+servo output connector.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Slow down telemetry packets to allow receiver to keep
+up.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_7">E.13.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix post-flight orientation computation when processing
+TeleMega and EasyMega eeprom data files.</p>
+</li>
+<li>
+<p>Capture complete eeprom data even when there are invalid
 entries in the data. This keeps reading eeprom contents and
-writing the associated .eeprom file when an error is detected.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation_3"></a>E.13.3. Documentation</h3></div></div></div><p>We spent a bunch of time trying to improve our documentation</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-HTML versions now have a table of contents on the left side.
-</li><li class="listitem">
-EasyMini now has its own shorter manual.
-</li><li class="listitem">
-Provide links between sections in each document.
-</li><li class="listitem">
-Lots of minor rewriting and restructuring to avoid
-duplication of information
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6_1"></a>E.14. Release Notes for Version 1.6.1</h2></div></div></div><p>Version 1.6.1 includes support for our updated TeleBT v3.0
+writing the associated .eeprom file when an error is detected.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation_3">E.13.3. Documentation</h4>
+<div class="paragraph">
+<p>We spent a bunch of time trying to improve our documentation</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>HTML versions now have a table of contents on the left side.</p>
+</li>
+<li>
+<p>EasyMini now has its own shorter manual.</p>
+</li>
+<li>
+<p>Provide links between sections in each document.</p>
+</li>
+<li>
+<p>Lots of minor rewriting and restructuring to avoid
+duplication of information</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6_1">E.14. Release Notes for Version 1.6.1</h3>
+<div class="paragraph">
+<p>Version 1.6.1 includes support for our updated TeleBT v3.0
 product and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_14"></a>E.14.1. AltOS</h3></div></div></div><p>AltOS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleBT v3.0 boards.
-</li><li class="listitem">
-Add support for uncompressed APRS data, providing support
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_14">E.14.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleBT v3.0 boards.</p>
+</li>
+<li>
+<p>Add support for uncompressed APRS data, providing support
 for older APRS receivers. Uncompressed APRS data is less
-precise, takes more bandwidth and doesn’t have integrated
-altitude data.
-</li></ul></div><p>AltOS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Make TeleDongle and TeleBT more tolerant of data rate
-variations from transmitting devices.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_8"></a>E.14.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add map to Monitor Idle display. It’s nice to be able to
+precise, takes more bandwidth and doesn&#8217;t have integrated
+altitude data.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Make TeleDongle and TeleBT more tolerant of data rate
+variations from transmitting devices.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_8">E.14.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add map to Monitor Idle display. It&#8217;s nice to be able to
 verify that maps are working, instead of needing to use
-Monitor Flight.
-</li></ul></div><p>AltosUI and TeleGPS Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Fix frequency configuration to round values instead of
-truncate them, avoiding a common 1kHz error in the setting.
-</li><li class="listitem">
-Turn the Windows stub into a more useful program that can
+Monitor Flight.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI and TeleGPS Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Fix frequency configuration to round values instead of
+truncate them, avoiding a common 1kHz error in the setting.</p>
+</li>
+<li>
+<p>Turn the Windows stub into a more useful program that can
 launch the application with parameters so that file manager
-icons work more reliably.
-</li><li class="listitem">
-Force KML export to use a C locale so that numbers are
-formatted with <span class="emphasis"><em>.</em></span> instead of <span class="emphasis"><em>,</em></span> for a decimal separator in
-non-US locales.
-</li><li class="listitem">
-Preload map tiles based on distance rather than number of
+icons work more reliably.</p>
+</li>
+<li>
+<p>Force KML export to use a C locale so that numbers are
+formatted with '.' instead of ',' for a decimal separator in
+non-US locales.</p>
+</li>
+<li>
+<p>Preload map tiles based on distance rather than number of
 tiles; this means you get the same resolution covering the
 entire area, rather than having high resolution near the
-center and low resolution further away.
-</li><li class="listitem">
-Allow configuration of frequency and callsign in Monitor
-Idle mode.
-</li><li class="listitem">
-Fix layout weirdness when resizing windows on
-Windows. Windows shouldn’t have giant blank spaces around
-the useful content anymore.
-</li><li class="listitem">
-Fix layout weirdness when resizing windows on
-Windows. Windows shouldn’t have giant blank spaces around
-the useful content anymore.
-</li><li class="listitem">
-Use a longer filter for descent speed values. This should
+center and low resolution further away.</p>
+</li>
+<li>
+<p>Allow configuration of frequency and callsign in Monitor
+Idle mode.</p>
+</li>
+<li>
+<p>Fix layout weirdness when resizing windows on
+Windows. Windows shouldn&#8217;t have giant blank spaces around
+the useful content anymore.</p>
+</li>
+<li>
+<p>Fix layout weirdness when resizing windows on
+Windows. Windows shouldn&#8217;t have giant blank spaces around
+the useful content anymore.</p>
+</li>
+<li>
+<p>Use a longer filter for descent speed values. This should
 provide something more useful on the display, although it
-will take longer to respond to changes now.
-</li><li class="listitem">
-Make Replay Flight run in realtime again. It had been set to
-run at 10x speed by mistake.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosdroid_2"></a>E.14.3. AltosDroid</h3></div></div></div><p>AltosDroid New Features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add offline map support using mapping code from AltosUI.
-</li><li class="listitem">
-Support TeleDongle (and TeleBT via USB) on devices
-supporting USB On-The-Go.
-</li><li class="listitem">
-Display additional TeleMega pyro channel status in Pad tab.
-</li><li class="listitem">
-Switch between metric and imperial units.
-</li><li class="listitem">
-Monitor TeleBT battery voltage.
-</li><li class="listitem">
-Track multiple devices at the same time, selecting between
-them with a menu or using the map.
-</li><li class="listitem">
-Add hybrid, satellite and terrain map types.
-</li></ul></div><p>AltosDroid Fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Use standard Android display conventions so that a menu
-button is available in the application title bar.
-</li><li class="listitem">
-Adjust layout to work on large and small screens; shrinking
+will take longer to respond to changes now.</p>
+</li>
+<li>
+<p>Make Replay Flight run in realtime again. It had been set to
+run at 10x speed by mistake.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosdroid_2">E.14.3. AltosDroid</h4>
+<div class="paragraph">
+<p>AltosDroid New Features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add offline map support using mapping code from AltosUI.</p>
+</li>
+<li>
+<p>Support TeleDongle (and TeleBT via USB) on devices
+supporting USB On-The-Go.</p>
+</li>
+<li>
+<p>Display additional TeleMega pyro channel status in Pad tab.</p>
+</li>
+<li>
+<p>Switch between metric and imperial units.</p>
+</li>
+<li>
+<p>Monitor TeleBT battery voltage.</p>
+</li>
+<li>
+<p>Track multiple devices at the same time, selecting between
+them with a menu or using the map.</p>
+</li>
+<li>
+<p>Add hybrid, satellite and terrain map types.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosDroid Fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Use standard Android display conventions so that a menu
+button is available in the application title bar.</p>
+</li>
+<li>
+<p>Adjust layout to work on large and small screens; shrinking
 the go/no-go lights in smaller environments to try and make
-everything visible.
-</li><li class="listitem">
-Make voice announcements depend on current tab.
-</li><li class="listitem">
-Compute adjustment to current travel direction while in
-motion towards rocket.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_6"></a>E.15. Release Notes for Version 1.6</h2></div></div></div><p>Version 1.6 includes support for our updated TeleDongle v3.0
+everything visible.</p>
+</li>
+<li>
+<p>Make voice announcements depend on current tab.</p>
+</li>
+<li>
+<p>Compute adjustment to current travel direction while in
+motion towards rocket.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_6">E.15. Release Notes for Version 1.6</h3>
+<div class="paragraph">
+<p>Version 1.6 includes support for our updated TeleDongle v3.0
 product and bug fixes in in the flight software for all our boards
-and ground station interfaces.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_15"></a>E.15.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleDongle v3.0 boards.
-</li></ul></div><p>AltOS Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Don’t beep out the continuity twice by accident in idle mode.
+and ground station interfaces.</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_15">E.15.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleDongle v3.0 boards.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Don&#8217;t beep out the continuity twice by accident in idle mode.
 If the battery voltage report takes longer than the initialiation
-sequence, the igniter continuity would get reported twice.
-</li><li class="listitem">
-Record all 32 bits of gyro calibration data in TeleMega and
+sequence, the igniter continuity would get reported twice.</p>
+</li>
+<li>
+<p>Record all 32 bits of gyro calibration data in TeleMega and
 EasyMega log files. This fixes computation of the gyro rates
-in AltosUI.
-</li><li class="listitem">
-Change TeleDongle LED usage. Green LED flashes when valid
+in AltosUI.</p>
+</li>
+<li>
+<p>Change TeleDongle LED usage. Green LED flashes when valid
 packet is received. Red LED flashes when invalid packet is
-received.
-</li><li class="listitem">
-Replace LPC11U14 SPI driver with non-interrupt version. The
+received.</p>
+</li>
+<li>
+<p>Replace LPC11U14 SPI driver with non-interrupt version. The
 interrupt code would occasionally wedge on long transfers
 if interrupts were blocked for too long. This affects all
 released TeleGPS products; if you have a TeleGPS device,
-you’ll want to reflash the firmware.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_9"></a>E.15.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Compute tilt angle from TeleMega and EasyMega log
+you&#8217;ll want to reflash the firmware.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_9">E.15.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Compute tilt angle from TeleMega and EasyMega log
 files. This duplicates the quaternion-based angle tracking
 code from the flight firmware inside the ground station
 software so that post-flight analysis can include evaluation
-of the tilt angle.
-</li><li class="listitem">
-Shows the tool button window when starting with a data file
+of the tilt angle.</p>
+</li>
+<li>
+<p>Shows the tool button window when starting with a data file
 specified. This means that opening a data file from the file
 manager will now bring up the main window to let you operate
-the whole application.
-</li></ul></div><p>AltosUI Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Show the <span class="emphasis"><em>Connecting</em></span> dialog when using Monitor Idle. Lets
+the whole application.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Show the 'Connecting' dialog when using Monitor Idle. Lets
 you cancel the Monitor Idle startup when connecting over the
-radio link.
-</li><li class="listitem">
-Make <span class="emphasis"><em>Monitor Idle</em></span> work for TeleGPS devices when connected
-over USB. It’s nice for testing without needing to broadcast
-over the radio.
-</li><li class="listitem">
-Use different Windows API to discover USB devices. This
+radio link.</p>
+</li>
+<li>
+<p>Make 'Monitor Idle' work for TeleGPS devices when connected
+over USB. It&#8217;s nice for testing without needing to broadcast
+over the radio.</p>
+</li>
+<li>
+<p>Use different Windows API to discover USB devices. This
 works better on my Windows 7 box, and will be used if the
-older API fails to provide the necessary information.
-</li><li class="listitem">
-Look in more places in the registry to try and identify the
+older API fails to provide the necessary information.</p>
+</li>
+<li>
+<p>Look in more places in the registry to try and identify the
 installed Java version on Windows. If you install the
 default 32-bit version of Windows on a 64-bit OS, the Java
 registry information is hiding \SOFTWARE\Wow6432Node for
-some reason.
-</li><li class="listitem">
-Fix file association on Windows by searching for the
+some reason.</p>
+</li>
+<li>
+<p>Fix file association on Windows by searching for the
 javaw.exe program instead of assuming it is in
 %SYSTEMROOT%. This makes double-clicking on Altus Metrum
-data files in the file manager work correctly.
-</li><li class="listitem">
-When replaying a file, put <span class="emphasis"><em>done</em></span> in the Age field when we
-reach the end of the file, instead of continuing to count forever.
-</li><li class="listitem">
-In the Scan Channels code, wait for five seconds if we see
+data files in the file manager work correctly.</p>
+</li>
+<li>
+<p>When replaying a file, put 'done' in the Age field when we
+reach the end of the file, instead of continuing to count forever.</p>
+</li>
+<li>
+<p>In the Scan Channels code, wait for five seconds if we see
 any packet. This is needed because AltOS now sends the
 callsign, serial number and flight number only once every
-five seconds these days.
-</li><li class="listitem">
-In the Scan Channels code, reset pending flight state
+five seconds these days.</p>
+</li>
+<li>
+<p>In the Scan Channels code, reset pending flight state
 information each time we change channels. This avoids having
-flight computers appear on multiple frequencies by accident.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_5"></a>E.16. Release Notes for Version 1.5</h2></div></div></div><p>Version 1.5 is a major release. It includes support for our new
+flight computers appear on multiple frequencies by accident.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_5">E.16. Release Notes for Version 1.5</h3>
+<div class="paragraph">
+<p>Version 1.5 is a major release. It includes support for our new
 EasyMega product, new features and bug fixes in in the flight
-software for all our boards and the AltosUI ground station</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_16"></a>E.16.1. AltOS</h3></div></div></div><p>AltOS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for EasyMega boards.
-</li><li class="listitem">
-Make the APRS SSID be configurable. This lets you track
+software for all our boards and the AltosUI ground station</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_16">E.16.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for EasyMega boards.</p>
+</li>
+<li>
+<p>Make the APRS SSID be configurable. This lets you track
 different rockets on the same receiver without getting
-things mixed up.
-</li><li class="listitem">
-Report extra pyro channel continuity state on EasyMega and
+things mixed up.</p>
+</li>
+<li>
+<p>Report extra pyro channel continuity state on EasyMega and
 TeleMega via the beeper. This lets you easily verify flight
 readiness on these boards after powering up the electronics
-on the rail.
-</li><li class="listitem">
-Add lower telemetry data rates (2400 and 9600 bps) to
+on the rail.</p>
+</li>
+<li>
+<p>Add lower telemetry data rates (2400 and 9600 bps) to
 increase telemetry radio range. This reduces the amount of
 data received as well as increasing battery consumption in
-the transmitter.
-</li><li class="listitem">
-Change TeleGPS to have only a single log, and append new
+the transmitter.</p>
+</li>
+<li>
+<p>Change TeleGPS to have only a single log, and append new
 data to it rather than using seperate per-flight logs. This
 avoids accidentally filling up log storage by turning
-TeleGPS on/off several times.
-</li></ul></div><p>AltOS Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Increase the maximum range for altitude values from +/-32767m
+TeleGPS on/off several times.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Increase the maximum range for altitude values from +/-32767m
 to +/-2147483647m, allowing the flight computers to function
-correctly above the 32km level.
-</li><li class="listitem">
-Continuously test pyro firing conditions during delay stage,
+correctly above the 32km level.</p>
+</li>
+<li>
+<p>Continuously test pyro firing conditions during delay stage,
 inhibiting the pyro channel if the test fails. This prevents
 firing pyro charges where the conditions were good before
-the delay, but become bad before the delay expires.
-</li><li class="listitem">
-Allow negative numbers in pyro configuration values. This
+the delay, but become bad before the delay expires.</p>
+</li>
+<li>
+<p>Allow negative numbers in pyro configuration values. This
 lets you specify things like descending speed or
-deceleration.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_10"></a>E.16.2. AltosUI and TeleGPS Applications</h3></div></div></div><p>AltosUI and TeleGPS New Features</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Support telemetry baud rate selection. Adds menus to
+deceleration.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_10">E.16.2. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>AltosUI and TeleGPS New Features</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Support telemetry baud rate selection. Adds menus to
 the flight monitoring and configuration for baud rate
-selection.
-</li><li class="listitem">
-Support APRS SSID configuration.
-</li><li class="listitem">
-Integrate with file managers. This provides icons for all of
+selection.</p>
+</li>
+<li>
+<p>Support APRS SSID configuration.</p>
+</li>
+<li>
+<p>Integrate with file managers. This provides icons for all of
 our file types and associates our application with the files
 so that using a file manager to open a AltOS data file
-results in launching our application.
-</li></ul></div><p>AltosUI Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Make the <span class="emphasis"><em>Graph</em></span> button on the landed tab work again.
-</li><li class="listitem">
-Make tests for Java on Windows a bit smarter, and also
+results in launching our application.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Make the 'Graph' button on the landed tab work again.</p>
+</li>
+<li>
+<p>Make tests for Java on Windows a bit smarter, and also
 provide the user with the option to skip installing Java for
-cases where we just can’t figure out what version is installed.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_4_2"></a>E.17. Release Notes for Version 1.4.2</h2></div></div></div><p>Version 1.4.2 is a minor release. It fixes Java-related install issues on
-Windows</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_11"></a>E.17.1. AltosUI and TeleGPS Applications</h3></div></div></div><p>Windows Install Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Checks for Java installation data in more registry locations.
-</li><li class="listitem">
-Allows user to bypass Java installation in case the
-detection fails.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_4_1"></a>E.18. Release Notes for Version 1.4.1</h2></div></div></div><p>Version 1.4.1 is a minor release. It fixes install issues on
+cases where we just can&#8217;t figure out what version is installed.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_4_2">E.17. Release Notes for Version 1.4.2</h3>
+<div class="paragraph">
+<p>Version 1.4.2 is a minor release. It fixes Java-related install issues on
+Windows</p>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_11">E.17.1. AltosUI and TeleGPS Applications</h4>
+<div class="paragraph">
+<p>Windows Install Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Checks for Java installation data in more registry locations.</p>
+</li>
+<li>
+<p>Allows user to bypass Java installation in case the
+detection fails.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_4_1">E.18. Release Notes for Version 1.4.1</h3>
+<div class="paragraph">
+<p>Version 1.4.1 is a minor release. It fixes install issues on
 Windows and provides the missing TeleMetrum V2.0 firmware. There
-arent any changes to the firmware or host applications at
+aren&#8217;t any changes to the firmware or host applications at
 all. All Windows users will want to upgrade to get the signed
 driver, but Mac and Linux users who do not need the TeleMetrum
-V2.0 firmware image will not need to upgrade.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_and_telegps_applications_12"></a>E.18.1. AltosUI and TeleGPS Applications:</h3></div></div></div><p>Windows Install Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Provide signed Windows driver files. This should avoid any need to
-disable driver signature checking on Windows 7 or 8.
-</li><li class="listitem">
-Fix Java version detection and download. Previously, the
+V2.0 firmware image will not need to upgrade.</p>
+</div>
+<div class="sect3">
+<h4 id="_altosui_and_telegps_applications_12">E.18.1. AltosUI and TeleGPS Applications:</h4>
+<div class="paragraph">
+<p>Windows Install Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Provide signed Windows driver files. This should avoid any need to
+disable driver signature checking on Windows 7 or 8.</p>
+</li>
+<li>
+<p>Fix Java version detection and download. Previously, the
 installer would only look for Java 6 or 7 and insist on
 downloading its own Java bits if there was something else
-installed. Furthermore, the 64-bit Java link provided didnt
+installed. Furthermore, the 64-bit Java link provided didn&#8217;t
 work for anyone other than Keith, making it impossible to
-install AltOS on any machine with Java SE 8 installed.
-</li></ul></div><p>Other Fixes</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Include 1.4 firmware for TeleMetrum V2.0. None of the
-installers shipped this file. Now it’s included in the AltOS
-packages for Linux, Mac and Windows.
-</li><li class="listitem">
-Include Google Application Key for map downloading. The 1.4
-release didn’t have this key in the released version of the
-software, making map downloading fail for most people.
-</li></ul></div><p></p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_release_notes_for_version_1_4"></a>E.19. Release Notes for Version 1.4</h2></div></div></div><p>Version 1.4 is a major release. It includes support for our new
+install AltOS on any machine with Java SE 8 installed.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Other Fixes</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Include 1.4 firmware for TeleMetrum V2.0. None of the
+installers shipped this file. Now it&#8217;s included in the AltOS
+packages for Linux, Mac and Windows.</p>
+</li>
+<li>
+<p>Include Google Application Key for map downloading. The 1.4
+release didn&#8217;t have this key in the released version of the
+software, making map downloading fail for most people.</p>
+</li>
+</ul>
+</div>
+<div style="page-break-after: always;"></div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_release_notes_for_version_1_4">E.19. Release Notes for Version 1.4</h3>
+<div class="paragraph">
+<p>Version 1.4 is a major release. It includes support for our new
 TeleGPS product, new features and bug fixes in in the flight
-software for all our boards and the AltosUI ground station</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altos_17"></a>E.19.1. AltOS</h3></div></div></div><p>AltOS new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add support for TeleGPS boards.
-</li><li class="listitem">
-Make the beeper tone configurable, making it
+software for all our boards and the AltosUI ground station</p>
+</div>
+<div class="sect3">
+<h4 id="_altos_17">E.19.1. AltOS</h4>
+<div class="paragraph">
+<p>AltOS new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add support for TeleGPS boards.</p>
+</li>
+<li>
+<p>Make the beeper tone configurable, making it
 possible to distinguish between two Altus Metrum
-products in the same ebay.
-</li><li class="listitem">
-Make the firing time for extra pyro channels
+products in the same ebay.</p>
+</li>
+<li>
+<p>Make the firing time for extra pyro channels
 configurable, allowing longer (or shorter) than the
 default 50ms.  Only relevant for TeleMega at this
-time.
-</li></ul></div><p>AltOS fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Replace the <span class="emphasis"><em>dit dit dit</em></span> tones at startup with the
+time.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltOS fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Replace the 'dit dit dit' tones at startup with the
 current battery voltage, measured in tenths of a
 volt. This lets you check the battery voltage
 without needing telemetry, which is especially
-useful on EasyMini.
-</li><li class="listitem">
-Change state beeping to "Farnsworth spacing", which
-means they’re quite a bit faster than before, and so
-they take less time to send.
-</li><li class="listitem">
-Fix bug preventing the selection of the <span class="emphasis"><em>Flight
-State After</em></span> mode in pyro configuration.
-</li><li class="listitem">
-Fix bug where erasing flights would reset the flight
-number to 2 on TeleMega and TeleMetrum v2.
-</li><li class="listitem">
-Fix u-Blox GPS driver to mark course and speed data
-as being present.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_altosui_application"></a>E.19.2. AltosUI Application</h3></div></div></div><p>AltosUI new features:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Add zooming and new content types (terrain and road
+useful on EasyMini.</p>
+</li>
+<li>
+<p>Change state beeping to "Farnsworth spacing", which
+means they&#8217;re quite a bit faster than before, and so
+they take less time to send.</p>
+</li>
+<li>
+<p>Fix bug preventing the selection of the 'Flight
+State After' mode in pyro configuration.</p>
+</li>
+<li>
+<p>Fix bug where erasing flights would reset the flight
+number to 2 on TeleMega and TeleMetrum v2.</p>
+</li>
+<li>
+<p>Fix u-Blox GPS driver to mark course and speed data
+as being present.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_altosui_application">E.19.2. AltosUI Application</h4>
+<div class="paragraph">
+<p>AltosUI new features:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Add zooming and new content types (terrain and road
 maps) to map view. Change map storage format from
 PNG to Jpeg, which saves a huge amount of disk
 space. You will need to re-download all of your
-pre-loaded map images.
-</li><li class="listitem">
-Add a distance measuring device to the maps
+pre-loaded map images.</p>
+</li>
+<li>
+<p>Add a distance measuring device to the maps
 view. Select this by using any button other than the
 left one, or by pressing shift or control on the
-keyboard while using the left button.
-</li><li class="listitem">
-Add new <span class="emphasis"><em>Ignitor</em></span> tab to the flight monitor display
-for TeleMega’s extra ignitors.
-</li><li class="listitem">
-Add additional ignitor firing marks and voltages to
+keyboard while using the left button.</p>
+</li>
+<li>
+<p>Add new 'Ignitor' tab to the flight monitor display
+for TeleMega&#8217;s extra ignitors.</p>
+</li>
+<li>
+<p>Add additional ignitor firing marks and voltages to
 the graph so you can see when the ignitors fired,
-along with the ignitor voltages.
-</li><li class="listitem">
-Add GPS course, ground speed and climb rate as
-optional graph elements.
-</li></ul></div><p>AltosUI fixes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-When flashing new firmware, re-try opening the
+along with the ignitor voltages.</p>
+</li>
+<li>
+<p>Add GPS course, ground speed and climb rate as
+optional graph elements.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>AltosUI fixes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>When flashing new firmware, re-try opening the
 device as sometimes it takes a while for the
 underlying operating system to recognize that the
 device has rebooted in preparation for the flashing
-operation.
-</li><li class="listitem">
-Hide Tilt Angle in ascent tab for devices that don’t
-have a gyro.
-</li><li class="listitem">
-Increase the width of data lines in the graphs to
-make them easier to read.
-</li><li class="listitem">
-Filter out speed and acceleration spikes caused by
+operation.</p>
+</li>
+<li>
+<p>Hide Tilt Angle in ascent tab for devices that don&#8217;t
+have a gyro.</p>
+</li>
+<li>
+<p>Increase the width of data lines in the graphs to
+make them easier to read.</p>
+</li>
+<li>
+<p>Filter out speed and acceleration spikes caused by
 ejection charge firing when computing the maximum
 values. This provides a more accurate reading of
-those maximums.
-</li><li class="listitem">
-Fix EasyMini voltage displays. Early EasyMini
+those maximums.</p>
+</li>
+<li>
+<p>Fix EasyMini voltage displays. Early EasyMini
 prototypes used a 3.0V regulator, and AltosUI still
 used that value as the basis of the
 computation. Production EasyMini boards have always
@@ -1157,27 +2825,65 @@ shipped with a 3.3V regulator. Also, purple EasyMini
 boards sensed the battery voltage past the blocking
 diode, resulting in a drop of about 150mV from the
 true battery voltage. Compensate for that when
-displaying the value.
-</li><li class="listitem">
-Display error message when trying to configure
+displaying the value.</p>
+</li>
+<li>
+<p>Display error message when trying to configure
 maximum flight log size while the flight computer
-still has flight data stored.
-</li><li class="listitem">
-Handle TeleMetrum and TeleMini eeprom files
+still has flight data stored.</p>
+</li>
+<li>
+<p>Handle TeleMetrum and TeleMini eeprom files
 generated with pre-1.0 firmware. Those ancient
-versions didn’t report the log format, so just use
-the product name instead.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telegps_application_2"></a>E.19.3. TeleGPS Application</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-New application designed for use with TeleGPS boards.
-</li><li class="listitem">
-Shares code with AltosUI, mostly just trimmed down
-to focus on TeleGPS-related functions.
-</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_documentation_4"></a>E.19.4. Documentation</h3></div></div></div><p>Documentation changes:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
-Re-create the drill template images; they should
+versions didn&#8217;t report the log format, so just use
+the product name instead.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_telegps_application_2">E.19.3. TeleGPS Application</h4>
+<div class="ulist">
+<ul>
+<li>
+<p>New application designed for use with TeleGPS boards.</p>
+</li>
+<li>
+<p>Shares code with AltosUI, mostly just trimmed down
+to focus on TeleGPS-related functions.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_documentation_4">E.19.4. Documentation</h4>
+<div class="paragraph">
+<p>Documentation changes:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Re-create the drill template images; they should
 print correctly from Firefox at least. Ship these as
-individual PDF files so they’re easy to print.
-</li><li class="listitem">
-Add a description of the <span class="emphasis"><em>Apogee Lockout</em></span> setting,
+individual PDF files so they&#8217;re easy to print.</p>
+</li>
+<li>
+<p>Add a description of the 'Apogee Lockout' setting,
 which prevents the apogee charge from firing for a
-configurable amount of time after boost.
-</li></ul></div></div></div></div></div></body></html>
\ No newline at end of file
+configurable amount of time after boost.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Version v1.8.7<br>
+Last updated 2019-01-03 00:31:55 -0700
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
index 68df68f381d9a11cbcf2c1e26771136a180a3dc2..4041767e3e3b853990c1b1c55eb3ca4e5a1d3771 100644 (file)
Binary files a/AltOS/doc/telegps.pdf and b/AltOS/doc/telegps.pdf differ
index f307a6a66d33f77f38097bdd993b413fa6b0fa90..e474c1924295484677d131c98ad55cc22d8bcdaa 100644 (file)
Binary files a/AltOS/doc/telemega-outline.pdf and b/AltOS/doc/telemega-outline.pdf differ
index 183cc5be7ff47a5ada4c8ce3a560b9da2ac507b3..6467ba8072794cbf4a56b41fedf5ec6e93377a15 100644 (file)
Binary files a/AltOS/doc/telemetrum-outline.pdf and b/AltOS/doc/telemetrum-outline.pdf differ
index ac37b9f39de3a07afebc6f1258e1839d5a0fdd4c..69bacc60ffbe2d30f7865aa584f41362d6ffd5cc 100644 (file)
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>AltOS Telemetry</title><link rel="stylesheet" type="text/css" href="am.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /></head><body><div xml:lang="en" class="article" lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="idm1"></a>AltOS Telemetry</h2></div><div><h3 class="subtitle"><em>Packet Definitions</em></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3><code class="email">&lt;<a class="email" href="mailto:keithp@keithp.com">keithp@keithp.com</a>&gt;</code></div></div><div><p class="copyright">Copyright © 2011 Keith Packard</p></div><div><div class="legalnotice"><a id="idm13"></a><p>
-    This document is released under the terms of the
-    <a class="ulink" href="http://creativecommons.org/licenses/by-sa/3.0/" target="_top">
-      Creative Commons ShareAlike 3.0
-    </a>
-    license.
-  </p></div></div><div><a href="telemetry-revhistory.html">Revision History</a></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="#_packet_format_design">1. Packet Format Design</a></span></dt><dt><span class="section"><a href="#_packet_formats">2. Packet Formats</a></span></dt><dd><dl><dt><span class="section"><a href="#_packet_header">2.1. Packet Header</a></span></dt><dt><span class="section"><a href="#_telemetrum_v1_x_telemini_v1_0_and_telenano_sensor_data">2.2. TeleMetrum v1.x, TeleMini v1.0 and TeleNano Sensor Data</a></span></dt><dt><span class="section"><a href="#_telemega_sensor_data">2.3. TeleMega Sensor Data</a></span></dt><dt><span class="section"><a href="#_telemetrum_v2_sensor_data">2.4. TeleMetrum v2 Sensor Data</a></span></dt><dt><span class="section"><a href="#_telemini_v3_0_sensor_data">2.5. TeleMini v3.0 Sensor Data</a></span></dt><dt><span class="section"><a href="#_configuration_data">2.6. Configuration Data</a></span></dt><dt><span class="section"><a href="#_gps_location">2.7. GPS Location</a></span></dt><dt><span class="section"><a href="#_gps_satellite_data">2.8. GPS Satellite Data</a></span></dt><dt><span class="section"><a href="#_companion_data">2.9. Companion Data</a></span></dt></dl></dd><dt><span class="section"><a href="#_data_transmission">3. Data Transmission</a></span></dt><dd><dl><dt><span class="section"><a href="#_modulation_scheme">3.1. Modulation Scheme</a></span></dt><dt><span class="section"><a href="#_error_correction">3.2. Error Correction</a></span></dt></dl></dd><dt><span class="section"><a href="#_teledongle_serial_packet_format">4. TeleDongle serial packet format</a></span></dt><dt><span class="section"><a href="#_history_and_motivation">5. History and Motivation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_packet_format_design"></a>1. Packet Format Design</h2></div></div></div><p>AltOS telemetry data is split into multiple different packets,
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.8">
+<meta name="author" content="Keith Packard, Bdale Garbee">
+<meta name="copyright" content="Bdale Garbee and Keith Packard 2018">
+<title>AltOS Telemetry</title>
+<link rel="stylesheet" href="./am.css">
+</head>
+<body class="article">
+<div id="header">
+<h1>AltOS Telemetry</h1>
+<div class="details">
+<span id="author" class="author">Keith Packard</span><br>
+<span id="email" class="email"><a href="mailto:keithp@keithp.com">keithp@keithp.com</a></span><br>
+<span id="author2" class="author">Bdale Garbee</span><br>
+<span id="email2" class="email"><a href="mailto:bdale@gag.com">bdale@gag.com</a></span><br>
+<span id="revnumber">version v1.8.7,</span>
+<span id="revdate">8 Oct 2018</span>
+</div>
+<div id="toc" class="toc">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_license">License</a></li>
+<li><a href="#_packet_format_design">1. Packet Format Design</a></li>
+<li><a href="#_packet_formats">2. Packet Formats</a>
+<ul class="sectlevel2">
+<li><a href="#_packet_header">2.1. Packet Header</a></li>
+<li><a href="#_telemetrum_v1_x_telemini_v1_0_and_telenano_sensor_data">2.2. TeleMetrum v1.x, TeleMini v1.0 and TeleNano Sensor Data</a></li>
+<li><a href="#_telemega_sensor_data">2.3. TeleMega Sensor Data</a></li>
+<li><a href="#_telemetrum_v2_sensor_data">2.4. TeleMetrum v2 Sensor Data</a></li>
+<li><a href="#_telemini_v3_0_sensor_data">2.5. TeleMini v3.0 Sensor Data</a></li>
+<li><a href="#_configuration_data">2.6. Configuration Data</a></li>
+<li><a href="#_gps_location">2.7. GPS Location</a></li>
+<li><a href="#_gps_satellite_data">2.8. GPS Satellite Data</a></li>
+<li><a href="#_companion_data">2.9. Companion Data</a></li>
+</ul>
+</li>
+<li><a href="#_data_transmission">3. Data Transmission</a>
+<ul class="sectlevel2">
+<li><a href="#_modulation_scheme">3.1. Modulation Scheme</a></li>
+<li><a href="#_error_correction">3.2. Error Correction</a></li>
+</ul>
+</li>
+<li><a href="#_teledongle_serial_packet_format">4. TeleDongle serial packet format</a></li>
+<li><a href="#_history_and_motivation">5. History and Motivation</a></li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div id="preamble">
+<div class="sectionbody">
+<div id="logo" class="imageblock">
+<div class="content">
+<a class="image" href="https://altusmetrum.org"><img src="altusmetrum-oneline.svg" alt="Altus Metrum"></a>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_license">License</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Copyright © 2018 Bdale Garbee and Keith Packard</p>
+</div>
+<div class="paragraph">
+<p>This document is released under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons ShareAlike 3.0 License</a></p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_packet_format_design">1. Packet Format Design</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>AltOS telemetry data is split into multiple different packets,
 all the same size, but each includs an identifier so that the
 ground station can distinguish among different types. A single
 flight board will transmit multiple packet types, each type on
 a different schedule. The ground software need look for only a
 single packet size, and then decode the information within the
 packet and merge data from multiple packets to construct the
-full flight computer state.</p><p>Each AltOS packet is 32 bytes long. This size was chosen based
+full flight computer state.</p>
+</div>
+<div class="paragraph">
+<p>Each AltOS packet is 32 bytes long. This size was chosen based
 on the known telemetry data requirements. The power of two
 size allows them to be stored easily in flash memory without
-having them split across blocks or leaving gaps at the end.</p><p>All packet types start with a five byte header which encodes
+having them split across blocks or leaving gaps at the end.</p>
+</div>
+<div class="paragraph">
+<p>All packet types start with a five byte header which encodes
 the device serial number, device clock value and the packet
-type. The remaining 27 bytes encode type-specific data.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_packet_formats"></a>2. Packet Formats</h2></div></div></div><p>This section first defines the packet header common to all packets
-and then the per-packet data layout.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_packet_header"></a>2.1. Packet Header</h3></div></div></div><div class="table"><a id="idm31"></a><p class="title"><strong>Table 1. Telemetry Packet Header</strong></p><div class="table-contents"><table class="table" summary="Telemetry Packet Header" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>serial</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Device serial Number</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>tick</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Device time in 100ths of a second</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>type</p></td><td style="" align="left" valign="top"><p>Packet type</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Each packet starts with these five bytes which serve to identify
+type. The remaining 27 bytes encode type-specific data.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_packet_formats">2. Packet Formats</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>This section first defines the packet header common to all packets
+and then the per-packet data layout.</p>
+</div>
+<div class="sect2">
+<h3 id="_packet_header">2.1. Packet Header</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 1. Telemetry Packet Header</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">serial</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Device serial Number</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">tick</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Device time in 100ths of a second</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Packet type</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Each packet starts with these five bytes which serve to identify
 which device has transmitted the packet, when it was transmitted
-and what the rest of the packet contains.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telemetrum_v1_x_telemini_v1_0_and_telenano_sensor_data"></a>2.2. TeleMetrum v1.x, TeleMini v1.0 and TeleNano Sensor Data</h3></div></div></div><div class="table"><a id="idm78"></a><p class="title"><strong>Table 2. Sensor Packet Type</strong></p><div class="table-contents"><table class="table" summary="Sensor Packet Type" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Type</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0x01</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v1.x Sensor Data</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0x02</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMini v1.0 Sensor Data</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0x03</p></td><td style="" align="left" valign="top"><p>TeleNano Sensor Data</p></td></tr></tbody></table></div></div><br class="table-break" /><p>TeleMetrum v1.x, TeleMini v1.0 and TeleNano share this same
+and what the rest of the packet contains.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_telemetrum_v1_x_telemini_v1_0_and_telenano_sensor_data">2.2. TeleMetrum v1.x, TeleMini v1.0 and TeleNano Sensor Data</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 2. Sensor Packet Type</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 75%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x01</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v1.x Sensor Data</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x02</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMini v1.0 Sensor Data</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x03</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleNano Sensor Data</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>TeleMetrum v1.x, TeleMini v1.0 and TeleNano share this same
 packet format for sensor data. Each uses a distinct
 packet type so that the receiver knows which data
-values are valid and which are undefined.</p><p>Sensor Data packets are transmitted once per second on
+values are valid and which are undefined.</p>
+</div>
+<div class="paragraph">
+<p>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</p><div class="table"><a id="idm106"></a><p class="title"><strong>Table 3. Sensor Packet Contents</strong></p><div class="table-contents"><table class="table" summary="Sensor Packet Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>state</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Flight state</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accelerometer (TM only)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pres</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pressure sensor</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>temp</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>temperature sensor</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>12</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>v_batt</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>battery voltage</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>14</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>sense_d</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>drogue continuity sense (TM/Tm)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>sense_m</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>main continuity sense (TM/Tm)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>18</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>acceleration</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m/s² * 16</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>20</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>speed</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m/s * 16</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>22</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>height</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>24</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>ground_pres</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Average barometer reading on ground</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>26</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>ground_accel</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TM</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>28</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel_plus_g</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TM</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>30</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>accel_minus_g</p></td><td style="" align="left" valign="top"><p>TM</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telemega_sensor_data"></a>2.3. TeleMega Sensor Data</h3></div></div></div><div class="table"><a id="idm251"></a><p class="title"><strong>Table 4. TeleMega Packet Type</strong></p><div class="table-contents"><table class="table" summary="TeleMega Packet Type" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Type</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0x08</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMega IMU Sensor Data</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0x09</p></td><td style="" align="left" valign="top"><p>TeleMega Kalman and Voltage Data</p></td></tr></tbody></table></div></div><br class="table-break" /><p>TeleMega has a lot of sensors, and so it splits the sensor
+per second during descent and landing</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 3. Sensor Packet Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">state</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flight state</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accelerometer (TM only)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pres</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pressure sensor</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">temp</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">temperature sensor</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">12</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">v_batt</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">battery voltage</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">14</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sense_d</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">drogue continuity sense (TM/Tm)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sense_m</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">main continuity sense (TM/Tm)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">18</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">acceleration</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m/s² * 16</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">speed</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m/s * 16</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">22</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">height</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ground_pres</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Average barometer reading on ground</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">26</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ground_accel</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TM</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">28</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel_plus_g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TM</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">30</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel_minus_g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TM</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_telemega_sensor_data">2.3. TeleMega Sensor Data</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 4. TeleMega Packet Type</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 75%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x08</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMega IMU Sensor Data</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x09</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMega Kalman and Voltage Data</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>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.</p><p>IMU Sensor Data packets are transmitted once per second on the
+the voltage values don&#8217;t change very fast, and the Kalman
+values can be reconstructed from the IMU data.</p>
+</div>
+<div class="paragraph">
+<p>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</p><p>Kalman and Voltage Data packets are transmitted once per second on the
+during descent and landing</p>
+</div>
+<div class="paragraph">
+<p>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</p><p>The high-g accelerometer is reported separately from the data
+during descent and landing</p>
+</div>
+<div class="paragraph">
+<p>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,
@@ -40,53 +335,1062 @@ 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.</p><p>The overall tilt angle of the rocket is computed by first
+rate.</p>
+</div>
+<div class="paragraph">
+<p>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.</p><div class="table"><a id="idm277"></a><p class="title"><strong>Table 5. TeleMega IMU Sensor Packet Contents</strong></p><div class="table-contents"><table class="table" summary="TeleMega IMU Sensor Packet Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>orient</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Angle from vertical in degrees</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>High G accelerometer</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int32_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pres</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pressure (Pa * 10)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>12</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>temp</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>temperature (°C * 100)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>14</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel_x</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>X axis acceleration (across)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel_y</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Y axis acceleration (along)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>18</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel_z</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Z axis acceleration (through)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>20</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>gyro_x</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>X axis rotation (across)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>22</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>gyro_y</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Y axis rotation (along)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>24</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>gyro_z</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Z axis rotation (through)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>26</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>mag_x</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>X field strength (across)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>28</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>mag_y</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Y field strength (along)</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>30</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>mag_z</p></td><td style="" align="left" valign="top"><p>Z field strength (through)</p></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idm411"></a><p class="title"><strong>Table 6. TeleMega Kalman and Voltage Data Packet Contents</strong></p><div class="table-contents"><table class="table" summary="TeleMega Kalman and Voltage Data Packet Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>state</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Flight state</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>v_batt</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>battery voltage</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>v_pyro</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pyro battery voltage</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int8_t[6]</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>sense</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pyro continuity sense</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int32_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>ground_pres</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Average barometer reading on ground</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>20</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>ground_accel</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Average accelerometer reading on ground</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>22</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel_plus_g</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Accel calibration at +1g</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>24</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel_minus_g</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Accel calibration at -1g</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>26</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>acceleration</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m/s² * 16</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>28</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>speed</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m/s * 16</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>30</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>height</p></td><td style="" align="left" valign="top"><p>m</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telemetrum_v2_sensor_data"></a>2.4. TeleMetrum v2 Sensor Data</h3></div></div></div><div class="table"><a id="idm529"></a><p class="title"><strong>Table 7. TeleMetrum v2 Packet Type</strong></p><div class="table-contents"><table class="table" summary="TeleMetrum v2 Packet Type" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Type</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0x0A</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v2 Sensor Data</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0x0B</p></td><td style="" align="left" valign="top"><p>TeleMetrum v2 Calibration Data</p></td></tr></tbody></table></div></div><br class="table-break" /><p>TeleMetrum v2 has higher resolution barometric data than
+change of the airframe since liftoff.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 5. TeleMega IMU Sensor Packet Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">orient</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Angle from vertical in degrees</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">High G accelerometer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int32_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pres</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pressure (Pa * 10)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">12</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">temp</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">temperature (°C * 100)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">14</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel_x</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">X axis acceleration (across)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel_y</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y axis acceleration (along)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">18</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel_z</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Z axis acceleration (through)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gyro_x</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">X axis rotation (across)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">22</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gyro_y</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y axis rotation (along)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">gyro_z</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Z axis rotation (through)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">26</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">mag_x</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">X field strength (across)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">28</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">mag_y</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Y field strength (along)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">30</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">mag_z</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Z field strength (through)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 6. TeleMega Kalman and Voltage Data Packet Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">state</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flight state</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">v_batt</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">battery voltage</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">v_pyro</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pyro battery voltage</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int8_t[6]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sense</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pyro continuity sense</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int32_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ground_pres</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Average barometer reading on ground</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ground_accel</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Average accelerometer reading on ground</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">22</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel_plus_g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Accel calibration at +1g</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel_minus_g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Accel calibration at -1g</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">26</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">acceleration</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m/s² * 16</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">28</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">speed</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m/s * 16</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">30</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">height</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_telemetrum_v2_sensor_data">2.4. TeleMetrum v2 Sensor Data</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 7. TeleMetrum v2 Packet Type</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 75%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x0A</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v2 Sensor Data</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x0B</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v2 Calibration Data</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>TeleMetrum v2 has higher resolution barometric data than
 TeleMetrum v1, and so the constant calibration data is
-split out into a separate packet.</p><p>TeleMetrum v2 Sensor Data packets are transmitted once per second on the
+split out into a separate packet.</p>
+</div>
+<div class="paragraph">
+<p>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</p><p>TeleMetrum v2 Calibration Data packets are always transmitted once per second.</p><div class="table"><a id="idm553"></a><p class="title"><strong>Table 8. TeleMetrum v2 Sensor Packet Contents</strong></p><div class="table-contents"><table class="table" summary="TeleMetrum v2 Sensor Packet Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>state</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Flight state</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accelerometer</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int32_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pres</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pressure sensor (Pa * 10)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>12</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>temp</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>temperature sensor (°C * 100)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>14</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>acceleration</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m/s² * 16</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>speed</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m/s * 16</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>18</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>height</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>20</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>v_batt</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>battery voltage</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>22</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>sense_d</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>drogue continuity sense</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>24</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>sense_m</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>main continuity sense</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>26</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>pad[6]</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>pad bytes</p></td><td style="" align="left" valign="top"><p></p></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idm669"></a><p class="title"><strong>Table 9. TeleMetrum v2 Calibration Data Packet Contents</strong></p><div class="table-contents"><table class="table" summary="TeleMetrum v2 Calibration Data Packet Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pad[3]</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pad bytes</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p></p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int32_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>ground_pres</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Average barometer reading on ground</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>12</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>ground_accel</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Average accelerometer reading on ground</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>14</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel_plus_g</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Accel calibration at +1g</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>accel_minus_g</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Accel calibration at -1g</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>18</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>pad[14]</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>pad bytes</p></td><td style="" align="left" valign="top"><p></p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_telemini_v3_0_sensor_data"></a>2.5. TeleMini v3.0 Sensor Data</h3></div></div></div><div class="table"><a id="idm742"></a><p class="title"><strong>Table 10. Sensor Packet Type</strong></p><div class="table-contents"><table class="table" summary="Sensor Packet Type" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Type</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0x11</p></td><td style="" align="left" valign="top"><p>TeleMini v3.0 Sensor Data</p></td></tr></tbody></table></div></div><br class="table-break" /><p>TeleMini v3.0 uses this
-packet format for sensor data.</p><p>Sensor Data packets are transmitted once per second on
+during descent and landing</p>
+</div>
+<div class="paragraph">
+<p>TeleMetrum v2 Calibration Data packets are always transmitted once per second.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 8. TeleMetrum v2 Sensor Packet Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">state</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flight state</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accelerometer</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int32_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pres</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pressure sensor (Pa * 10)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">12</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">temp</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">temperature sensor (°C * 100)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">14</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">acceleration</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m/s² * 16</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">speed</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m/s * 16</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">18</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">height</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">v_batt</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">battery voltage</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">22</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sense_d</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">drogue continuity sense</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sense_m</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">main continuity sense</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">26</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pad[6]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pad bytes</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+</tbody>
+</table>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 9. TeleMetrum v2 Calibration Data Packet Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pad[3]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pad bytes</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int32_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ground_pres</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Average barometer reading on ground</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">12</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ground_accel</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Average accelerometer reading on ground</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">14</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel_plus_g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Accel calibration at +1g</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">accel_minus_g</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Accel calibration at -1g</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">18</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pad[14]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pad bytes</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_telemini_v3_0_sensor_data">2.5. TeleMini v3.0 Sensor Data</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 10. Sensor Packet Type</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 75%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x11</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMini v3.0 Sensor Data</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>TeleMini v3.0 uses this
+packet format for sensor data.</p>
+</div>
+<div class="paragraph">
+<p>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</p><div class="table"><a id="idm760"></a><p class="title"><strong>Table 11. Sensor Packet Contents</strong></p><div class="table-contents"><table class="table" summary="Sensor Packet Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>state</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Flight state</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>v_batt</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>battery voltage</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>sense_a</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>apogee continuity sense</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>sense_m</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>main continuity sense</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>12</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int32_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pres</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pressure sensor (Pa * 10)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>temp</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>temperature sensor (°C * 100)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>18</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>acceleration</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m/s² * 16</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>20</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>speed</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m/s * 16</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>22</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>height</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>24</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>ground_pres</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Average barometer reading on ground</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>28</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>pad[4]</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>pad bytes</p></td><td style="" align="left" valign="top"><p></p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_configuration_data"></a>2.6. Configuration Data</h3></div></div></div><div class="table"><a id="idm878"></a><p class="title"><strong>Table 12. Configuration Packet Type</strong></p><div class="table-contents"><table class="table" summary="Configuration Packet Type" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Type</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0x04</p></td><td style="" align="left" valign="top"><p>Configuration Data</p></td></tr></tbody></table></div></div><br class="table-break" /><p>This provides a description of the software installed on the
-flight computer as well as any user-specified configuration data.</p><p>Configuration data packets are transmitted once per second
-during all phases of the flight</p><div class="table"><a id="idm896"></a><p class="title"><strong>Table 13. Configuration Packet Contents</strong></p><div class="table-contents"><table class="table" summary="Configuration Packet Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>type</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Device type</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>flight</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Flight number</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>config_major</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Config major version</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>9</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>config_minor</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Config minor version</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>apogee_delay</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Apogee deploy delay in seconds</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>12</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>main_deploy</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Main deploy alt in meters</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>14</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>flight_log_max</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Maximum flight log size (kB)</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>char</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>callsign[8]</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Radio operator identifier</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>24</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>char</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>version[8]</p></td><td style="" align="left" valign="top"><p>Software version identifier</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_gps_location"></a>2.7. GPS Location</h3></div></div></div><div class="table"><a id="idm996"></a><p class="title"><strong>Table 14. GPS Packet Type</strong></p><div class="table-contents"><table class="table" summary="GPS Packet Type" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Type</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0x05</p></td><td style="" align="left" valign="top"><p>GPS Location</p></td></tr></tbody></table></div></div><br class="table-break" /><p>This packet provides all of the information available from the
+per second during descent and landing</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 11. Sensor Packet Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">state</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flight state</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">v_batt</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">battery voltage</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sense_a</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">apogee continuity sense</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sense_m</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">main continuity sense</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">12</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int32_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pres</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pressure sensor (Pa * 10)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">temp</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">temperature sensor (°C * 100)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">18</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">acceleration</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m/s² * 16</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">speed</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m/s * 16</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">22</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">height</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ground_pres</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Average barometer reading on ground</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">28</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pad[4]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pad bytes</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_configuration_data">2.6. Configuration Data</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 12. Configuration Packet Type</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 75%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x04</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Configuration Data</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>This provides a description of the software installed on the
+flight computer as well as any user-specified configuration data.</p>
+</div>
+<div class="paragraph">
+<p>Configuration data packets are transmitted once per second
+during all phases of the flight</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 13. Configuration Packet Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Device type</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">flight</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Flight number</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">config_major</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Config major version</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">9</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">config_minor</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Config minor version</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">apogee_delay</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Apogee deploy delay in seconds</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">12</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">main_deploy</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Main deploy alt in meters</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">14</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">flight_log_max</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum flight log size (kB)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">char</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">callsign[8]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Radio operator identifier</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">char</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">version[8]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Software version identifier</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_gps_location">2.7. GPS Location</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 14. GPS Packet Type</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 75%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x05</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GPS Location</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>This packet provides all of the information available from the
 GPS receiver—position, time, speed and precision
-estimates.</p><p>GPS Location packets are transmitted once per second during
-all phases of the flight</p><div class="table"><a id="idm1014"></a><p class="title"><strong>Table 15. GPS Location Packet Contents</strong></p><div class="table-contents"><table class="table" summary="GPS Location Packet Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>flags</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>See GPS Flags table below</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>altitude</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>m</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int32_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>latitude</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>degrees * 107</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>12</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int32_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>longitude</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>degrees * 107</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>16</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>year</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p></p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>17</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>month</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p></p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>18</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>day</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p></p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>19</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>hour</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p></p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>20</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>minute</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p></p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>21</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>second</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p></p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>22</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>pdop</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>* 5</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>23</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>hdop</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>* 5</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>24</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>vdop</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>* 5</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>25</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>mode</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>See GPS Mode table below</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>26</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>ground_speed</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>cm/s</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>28</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>int16_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>climb_rate</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>cm/s</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>30</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>course</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>/ 2</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>31</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>unused[1]</p></td><td style="" align="left" valign="top"><p></p></td></tr></tbody></table></div></div><br class="table-break" /><p>Packed into a one byte field are status flags and the
+estimates.</p>
+</div>
+<div class="paragraph">
+<p>GPS Location packets are transmitted once per second during
+all phases of the flight</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 15. GPS Location Packet Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">flags</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">See GPS Flags table below</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">altitude</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">m</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int32_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">latitude</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">degrees * 107</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">12</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int32_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">longitude</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">degrees * 107</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">16</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">year</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">17</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">month</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">18</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">day</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">19</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">hour</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">minute</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">21</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">second</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">22</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">pdop</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">* 5</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">23</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">hdop</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">* 5</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">24</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">vdop</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">* 5</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">25</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">mode</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">See GPS Mode table below</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">26</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ground_speed</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">cm/s</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">28</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">int16_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">climb_rate</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">cm/s</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">30</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">course</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">/ 2</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">31</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">unused[1]</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Packed into a one byte field are status flags and the
 count of satellites used to compute the position
 fix. Note that this number may be lower than the
 number of satellites being tracked; the receiver will
 not use information from satellites with weak signals
 or which are close enough to the horizon to have
-significantly degraded position accuracy.</p><div class="table"><a id="idm1194"></a><p class="title"><strong>Table 16. GPS Flags</strong></p><div class="table-contents"><table class="table" summary="GPS Flags" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bits</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0-3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>nsats</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Number of satellites in solution</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>valid</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>GPS solution is valid</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>running</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>GPS receiver is operational</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>date_valid</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Reported date is valid</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>7</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>course_valid</p></td><td style="" align="left" valign="top"><p>ground speed, course and climb rates are valid</p></td></tr></tbody></table></div></div><br class="table-break" /><p>Here are all of the valid GPS operational modes. Altus
-Metrum products will only ever report <span class="emphasis"><em>N</em></span> (not valid),
-<span class="emphasis"><em>A</em></span> (Autonomous) modes or <span class="emphasis"><em>E</em></span> (Estimated). The
+significantly degraded position accuracy.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 16. GPS Flags</caption>
+<colgroup>
+<col style="width: 10%;">
+<col style="width: 20%;">
+<col style="width: 70%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bits</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0-3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">nsats</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Number of satellites in solution</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">valid</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GPS solution is valid</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">running</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GPS receiver is operational</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">date_valid</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Reported date is valid</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">7</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">course_valid</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">ground speed, course and climb rates are valid</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Here are all of the valid GPS operational modes. Altus
+Metrum products will only ever report 'N' (not valid),
+'A' (Autonomous) modes or 'E' (Estimated). The
 remaining modes are either testing modes or require
-additional data.</p><div class="table"><a id="idm1247"></a><p class="title"><strong>Table 17. GPS Mode</strong></p><div class="table-contents"><table class="table" summary="GPS Mode" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Mode</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>N</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Not Valid</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>All data are invalid</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>A</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Autonomous mode</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data are derived from satellite data</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>D</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Differential Mode</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data are augmented with differential data from a
+additional data.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 17. GPS Mode</caption>
+<colgroup>
+<col style="width: 9.0909%;">
+<col style="width: 27.2727%;">
+<col style="width: 63.6364%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Mode</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">N</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Not Valid</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">All data are invalid</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">A</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Autonomous mode</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data are derived from satellite data</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">D</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Differential Mode</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data are augmented with differential data from a
 known ground station. The SkyTraq unit in TeleMetrum
-does not support this mode</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>E</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Estimated</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data are estimated using dead reckoning from the
-last known data</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>M</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Manual</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data were entered manually</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>S</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Simulated</p></td><td style="" align="left" valign="top"><p>GPS receiver testing mode</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_gps_satellite_data"></a>2.8. GPS Satellite Data</h3></div></div></div><div class="table"><a id="idm1305"></a><p class="title"><strong>Table 18. GPS Satellite Data Packet Type</strong></p><div class="table-contents"><table class="table" summary="GPS Satellite Data Packet Type" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Type</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0x06</p></td><td style="" align="left" valign="top"><p>GPS Satellite Data</p></td></tr></tbody></table></div></div><br class="table-break" /><p>This packet provides space vehicle identifiers and
+does not support this mode</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">E</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Estimated</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data are estimated using dead reckoning from the
+last known data</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">M</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Manual</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data were entered manually</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">S</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Simulated</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GPS receiver testing mode</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_gps_satellite_data">2.8. GPS Satellite Data</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 18. GPS Satellite Data Packet Type</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 75%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x06</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">GPS Satellite Data</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>This packet provides space vehicle identifiers and
 signal quality information in the form of a C/N1
 number for up to 12 satellites. The order of the svids
-is not specified.</p><p>GPS Satellite data are transmitted once per second
-during all phases of the flight.</p><div class="table"><a id="idm1323"></a><p class="title"><strong>Table 19. GPS Satellite Data Contents</strong></p><div class="table-contents"><table class="table" summary="GPS Satellite Data Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>channels</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Number of reported satellite information</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>sat_info_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>sats[12]</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>See Per-Satellite data table below</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>30</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>unused[2]</p></td><td style="" align="left" valign="top"><p></p></td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="idm1367"></a><p class="title"><strong>Table 20. GPS Per-Satellite data (sat_info_t)</strong></p><div class="table-contents"><table class="table" summary="GPS Per-Satellite data (sat_info_t)" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>svid</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Space Vehicle Identifier</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>1</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>c_n_1</p></td><td style="" align="left" valign="top"><p>C/N1 signal quality indicator</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_companion_data"></a>2.9. Companion Data</h3></div></div></div><div class="table"><a id="idm1404"></a><p class="title"><strong>Table 21. Companion Data Packet Type</strong></p><div class="table-contents"><table class="table" summary="Companion Data Packet Type" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Type</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>0x07</p></td><td style="" align="left" valign="top"><p>Companion Data</p></td></tr></tbody></table></div></div><br class="table-break" /><p>When a companion board is attached to TeleMega or
+is not specified.</p>
+</div>
+<div class="paragraph">
+<p>GPS Satellite data are transmitted once per second
+during all phases of the flight.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 19. GPS Satellite Data Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">channels</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Number of reported satellite information</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sat_info_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">sats[12]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">See Per-Satellite data table below</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">30</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">unused[2]</p></td>
+<td class="tableblock halign-left valign-top"></td>
+</tr>
+</tbody>
+</table>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 20. GPS Per-Satellite data (sat_info_t)</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">svid</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Space Vehicle Identifier</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">c_n_1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">C/N1 signal quality indicator</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_companion_data">2.9. Companion Data</h3>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 21. Companion Data Packet Type</caption>
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 75%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0x07</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Companion Data</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>When a companion board is attached to TeleMega or
 TeleMetrum, it can provide telemetry data to be
 included in the downlink. The companion board can
-provide up to 12 16-bit data values.</p><p>The companion board itself specifies the transmission
+provide up to 12 16-bit data values.</p>
+</div>
+<div class="paragraph">
+<p>The companion board itself specifies the transmission
 rate. On the ground and during descent, that rate is
 limited to one packet per second. During ascent, that
-rate is limited to 10 packets per second.</p><div class="table"><a id="idm1422"></a><p class="title"><strong>Table 22. Companion Data Contents</strong></p><div class="table-contents"><table class="table" summary="Companion Data Contents" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Data Type</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>board_id</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Type of companion board attached</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>6</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>update_period</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>How often telemetry is sent, in 1/100ths of a second</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>7</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>uint8_t</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>channels</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Number of data channels supplied</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>8</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>uint16_t[12]</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>companion_data</p></td><td style="" align="left" valign="top"><p>Up to 12 channels of 16-bit companion data</p></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_data_transmission"></a>3. Data Transmission</h2></div></div></div><p>Altus Metrum devices use Texas Instruments sub-GHz digital
+rate is limited to 10 packets per second.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 22. Companion Data Contents</caption>
+<colgroup>
+<col style="width: 11.7647%;">
+<col style="width: 17.647%;">
+<col style="width: 17.647%;">
+<col style="width: 52.9413%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Offset</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Type</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">board_id</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Type of companion board attached</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">update_period</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">How often telemetry is sent, in 1/100ths of a second</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">7</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint8_t</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">channels</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Number of data channels supplied</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">8</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">uint16_t[12]</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">companion_data</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Up to 12 channels of 16-bit companion data</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_data_transmission">3. Data Transmission</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Altus Metrum devices use Texas Instruments sub-GHz digital
 radio products. Ground stations use parts with HW FEC while
 some flight computers perform FEC in software. TeleGPS is
-transmit-only.</p><div class="table"><a id="idm1478"></a><p class="title"><strong>Table 23. Altus Metrum Radio Parts</strong></p><div class="table-contents"><table class="table" summary="Altus Metrum Radio Parts" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Part Number</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Used in</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>CC1111</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>10mW transceiver with integrated SoC</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleDongle v0.2, TeleBT v1.0, TeleMetrum v1.x, TeleMini</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>CC1120</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>35mW transceiver with SW FEC</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleMetrum v2, TeleMega</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>CC1200</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>35mW transceiver with HW FEC</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>TeleDongle v3.0, TeleBT v3.0</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>CC115L</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>14mW transmitter with SW FEC</p></td><td style="" align="left" valign="top"><p>TeleGPS</p></td></tr></tbody></table></div></div><br class="table-break" /><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_modulation_scheme"></a>3.1. Modulation Scheme</h3></div></div></div><p>Texas Instruments provides a tool for computing
+transmit-only.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 23. Altus Metrum Radio Parts</caption>
+<colgroup>
+<col style="width: 11.1111%;">
+<col style="width: 44.4444%;">
+<col style="width: 44.4445%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Part Number</th>
+<th class="tableblock halign-left valign-top">Description</th>
+<th class="tableblock halign-left valign-top">Used in</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CC1111</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">10mW transceiver with integrated SoC</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleDongle v0.2, TeleBT v1.0, TeleMetrum v1.x, TeleMini</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CC1120</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">35mW transceiver with SW FEC</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleMetrum v2, TeleMega</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CC1200</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">35mW transceiver with HW FEC</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleDongle v3.0, TeleBT v3.0</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">CC115L</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">14mW transmitter with SW FEC</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">TeleGPS</p></td>
+</tr>
+</tbody>
+</table>
+<div class="sect2">
+<h3 id="_modulation_scheme">3.1. Modulation Scheme</h3>
+<div class="paragraph">
+<p>Texas Instruments provides a tool for computing
 modulation parameters given a desired modulation
-format and basic bit rate.</p><p>While we might like to use something with better
+format and basic bit rate.</p>
+</div>
+<div class="paragraph">
+<p>While we might like to use something with better
 low-signal performance like BPSK, the radios we use
-dont support that, but do support Gaussian frequency
+don&#8217;t support that, but do support Gaussian frequency
 shift keying (GFSK). Regular frequency shift keying
 (FSK) encodes the signal by switching the carrier
 between two frequencies. The Gaussian version is
@@ -94,24 +1398,169 @@ essentially the same, but the shift between
 frequencies gently follows a gaussian curve, rather
 than switching immediately. This tames the bandwidth
 of the signal without affecting the ability to
-transmit data.</p><p>For AltOS, there are three available bit rates,
+transmit data.</p>
+</div>
+<div class="paragraph">
+<p>For AltOS, there are three available bit rates,
 38.4kBaud, 9.6kBaud and 2.4kBaud resulting in the
-following signal parmeters:</p><div class="table"><a id="idm1525"></a><p class="title"><strong>Table 24. Modulation Scheme</strong></p><div class="table-contents"><table class="table" summary="Modulation Scheme" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Rate</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Deviation</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Receiver Bandwidth</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>38.4kBaud</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>20.5kHz</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>100kHz</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>9.6kBaud</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>5.125kHz</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>25kHz</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>2.4kBaud</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>1.5kHz</p></td><td style="" align="left" valign="top"><p>5kHz</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="_error_correction"></a>3.2. Error Correction</h3></div></div></div><p>The cc1111 and cc1200 provide forward error correction
-in hardware; on the cc1120 and cc115l that’s done in
+following signal parmeters:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 24. Modulation Scheme</caption>
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Rate</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Deviation</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Receiver Bandwidth</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">38.4kBaud</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">20.5kHz</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">100kHz</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">9.6kBaud</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5.125kHz</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">25kHz</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2.4kBaud</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.5kHz</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">5kHz</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_error_correction">3.2. Error Correction</h3>
+<div class="paragraph">
+<p>The cc1111 and cc1200 provide forward error correction
+in hardware; on the cc1120 and cc115l that&#8217;s done in
 software. AltOS uses this to improve reception of weak
-signals. As its a rate 1/2 encoding, each bit of data
+signals. As it&#8217;s a rate 1/2 encoding, each bit of data
 takes two bits when transmitted, so the effective data
-rate is half of the raw transmitted bit rate.</p><div class="table"><a id="idm1563"></a><p class="title"><strong>Table 25. Error Correction</strong></p><div class="table-contents"><table class="table" summary="Error Correction" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Parameter</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Value</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Error Correction</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Convolutional coding</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1/2 rate, constraint length m=4</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Interleaving</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4 x 4</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Reduce effect of noise burst</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>Data Whitening</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>XOR with 9-bit PNR</p></td><td style="" align="left" valign="top"><p>Rotate right with bit 8 = bit 0 xor bit 5, initial value 111111111</p></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_teledongle_serial_packet_format"></a>4. TeleDongle serial packet format</h2></div></div></div><p>TeleDongle does not do any interpretation of the packet data,
+rate is half of the raw transmitted bit rate.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 25. Error Correction</caption>
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 33.3333%;">
+<col style="width: 33.3334%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Parameter</th>
+<th class="tableblock halign-left valign-top">Value</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Error Correction</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Convolutional coding</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1/2 rate, constraint length m=4</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Interleaving</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4 x 4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Reduce effect of noise burst</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Data Whitening</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">XOR with 9-bit PNR</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Rotate right with bit 8 = bit 0 xor bit 5, initial value 111111111</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_teledongle_serial_packet_format">4. TeleDongle serial packet format</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>TeleDongle does not do any interpretation of the packet data,
 instead it is configured to receive packets of a specified
 length (32 bytes in this case). For each received packet,
 TeleDongle produces a single line of text. This line starts with
 the string "TELEM " and is followed by a list of hexadecimal
-encoded bytes.</p><pre class="literallayout">TELEM 224f01080b05765e00701f1a1bbeb8d7b60b070605140c000600000000000000003fa988</pre><p>The hexadecimal encoded string of bytes contains a length byte,
+encoded bytes.</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>TELEM 224f01080b05765e00701f1a1bbeb8d7b60b070605140c000600000000000000003fa988</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The hexadecimal encoded string of bytes contains a length byte,
 the packet data, two bytes added by the cc1111 radio receiver
 hardware and finally a checksum so that the host software can
-validate that the line was transmitted without any errors.</p><div class="table"><a id="idm1603"></a><p class="title"><strong>Table 26. TeleDongle serial Packet Format</strong></p><div class="table-contents"><table class="table" summary="TeleDongle serial Packet Format" cellpadding="4px" style="border-collapse: collapse;border-top: 1px solid #78079a; border-bottom: 1px solid #78079a; border-left: 1px solid #78079a; border-right: 1px solid #78079a; "><colgroup><col class="col_1" /><col class="col_2" /><col class="col_3" /><col class="col_4" /></colgroup><tbody><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Offset</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Name</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Example</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Description</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>0</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>length</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>22</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Total length of data bytes in the line. Note that
-this includes the added RSSI and status bytes</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>1 ·· length-3</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>packet</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>4f ·· 00</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Bytes of actual packet data</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>length-2</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>rssi</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>3f</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Received signal strength. dBm = rssi / 2 - 74</p></td></tr><tr><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>length-1</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>lqi</p></td><td style="border-right: 1px solid #78079a; border-bottom: 1px solid #78079a; " align="left" valign="top"><p>a9</p></td><td style="border-bottom: 1px solid #78079a; " align="left" valign="top"><p>Link Quality Indicator and CRC status. Bit 7
-is set when the CRC is correct</p></td></tr><tr><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>length</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>checksum</p></td><td style="border-right: 1px solid #78079a; " align="left" valign="top"><p>88</p></td><td style="" align="left" valign="top"><p>(0x5a + sum(bytes 1 ·· length-1)) % 256</p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="_history_and_motivation"></a>5. History and Motivation</h2></div></div></div><p>The original AltoOS telemetry mechanism encoded everything
+validate that the line was transmitted without any errors.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<caption class="title">Table 26. TeleDongle serial Packet Format</caption>
+<colgroup>
+<col style="width: 22.2222%;">
+<col style="width: 11.1111%;">
+<col style="width: 11.1111%;">
+<col style="width: 55.5556%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Offset</th>
+<th class="tableblock halign-left valign-top">Name</th>
+<th class="tableblock halign-left valign-top">Example</th>
+<th class="tableblock halign-left valign-top">Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">length</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">22</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Total length of data bytes in the line. Note that
+this includes the added RSSI and status bytes</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1 ·· length-3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">packet</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">4f ·· 00</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Bytes of actual packet data</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">length-2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">rssi</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">3f</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Received signal strength. dBm = rssi / 2 - 74</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">length-1</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">lqi</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">a9</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Link Quality Indicator and CRC status. Bit 7
+is set when the CRC is correct</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">length</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">checksum</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">88</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">(0x5a + sum(bytes 1 ·· length-1)) % 256</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_history_and_motivation">5. History and Motivation</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The original AltoOS telemetry mechanism encoded everything
 available piece of information on the TeleMetrum hardware into a
 single unified packet. Initially, the packets contained very
 little data—some raw sensor readings along with the current GPS
@@ -119,15 +1568,33 @@ coordinates when a GPS receiver was connected. Over time, the
 amount of data grew to include sensor calibration data, GPS
 satellite information and a host of internal state information
 designed to help diagnose flight failures in case of a loss of
-the on-board flight data.</p><p>Because every packet contained all of the data, packets were
+the on-board flight data.</p>
+</div>
+<div class="paragraph">
+<p>Because every packet contained all of the data, packets were
 huge—95 bytes long. Much of the information was also specific to
 the TeleMetrum hardware. With the introduction of the TeleMini
 flight computer, most of the data contained in the telemetry
 packets was unavailable. Initially, a shorter, but still
 comprehensive packet was implemented. This required that the
 ground station be pre-configured as to which kind of packet to
-expect.</p><p>The development of several companion boards also made the
+expect.</p>
+</div>
+<div class="paragraph">
+<p>The development of several companion boards also made the
 shortcomings evident—each companion board would want to include
 telemetry data in the radio link; with the original design, the
 packet would have to hold the new data as well, requiring
-additional TeleMetrum and ground station changes.</p></div></div></body></html>
\ No newline at end of file
+additional TeleMetrum and ground station changes.</p>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Version v1.8.7<br>
+Last updated 2019-01-03 00:31:56 -0700
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file
index dd81e7d31be1b7d7c15cd431a503f092347d0146..6ae6b7500693b3b18e0f4d4a367c2432e4192cca 100644 (file)
Binary files a/AltOS/doc/telemetry.pdf and b/AltOS/doc/telemetry.pdf differ
index 2e9083de7a80f00177cdf06ab4a9e90a77bb553c..e0c81f8e13ec81305a24c2ae3886c84674b52234 100644 (file)
Binary files a/AltOS/doc/telemini-v1-outline.pdf and b/AltOS/doc/telemini-v1-outline.pdf differ
index 5fafd1c733cc9a166ba972b18c875548965fb384..89a46e3a5ff7fd654a8bf7bf52e80ee539caa77d 100644 (file)
Binary files a/AltOS/doc/telemini-v3-outline.pdf and b/AltOS/doc/telemini-v3-outline.pdf differ