update docs
authorBdale Garbee <bdale@gag.com>
Thu, 16 Jul 2015 20:46:05 +0000 (14:46 -0600)
committerBdale Garbee <bdale@gag.com>
Thu, 16 Jul 2015 20:46:05 +0000 (14:46 -0600)
19 files changed:
AltOS/doc/altos.html
AltOS/doc/altos.pdf
AltOS/doc/altusmetrum.html
AltOS/doc/altusmetrum.pdf
AltOS/doc/companion.html
AltOS/doc/companion.pdf
AltOS/doc/easymega-outline.pdf
AltOS/doc/easymini-outline.pdf
AltOS/doc/load-maps.png
AltOS/doc/micropeak.html
AltOS/doc/micropeak.pdf
AltOS/doc/monitor-idle.png [new file with mode: 0644]
AltOS/doc/release-notes-1.6.1.html [new file with mode: 0644]
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

index 48eca8def0d8bead619c471d9a418175108814ef..421fb2e47000c525ab5490691cfef6ccceb481a6 100644 (file)
@@ -1,11 +1,11 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AltOS</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="idp22295904"></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></div></div><div><p class="copyright">Copyright © 2010 Keith Packard</p></div><div><div class="legalnotice"><a name="idp48885072"></a><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AltOS</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302637457168"></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></div></div><div><p class="copyright">Copyright © 2010 Keith Packard</p></div><div><div class="legalnotice"><a name="idm46302611036384"></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><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision 1.1</td><td align="left">05 November 2012</td></tr><tr><td align="left" colspan="2">Portable version</td></tr><tr><td align="left">Revision 0.1</td><td align="left">22 November 2010</td></tr><tr><td align="left" colspan="2">Initial content</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="#idp49692816">1. Overview</a></span></dt><dt><span class="chapter"><a href="#idp48980224">2. AltOS Porting Layer</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48981728">1. Low-level CPU operations</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48982912">1.1. ao_arch_block_interrupts/ao_arch_release_interrupts</a></span></dt><dt><span class="section"><a href="#idp48984960">1.2. ao_arch_save_regs, ao_arch_save_stack,
-       ao_arch_restore_stack</a></span></dt><dt><span class="section"><a href="#idp48987360">1.3. ao_arch_wait_interupt</a></span></dt></dl></dd><dt><span class="section"><a href="#idp48989904">2. GPIO operations</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48991072">2.1. GPIO setup</a></span></dt><dt><span class="section"><a href="#idp48812016">2.2. Reading and writing GPIO pins</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idp48817264">3. Programming the 8051 with SDCC</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48819360">1. 8051 memory spaces</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48821296">1.1. __data</a></span></dt><dt><span class="section"><a href="#idp48823472">1.2. __idata</a></span></dt><dt><span class="section"><a href="#idp48824912">1.3. __xdata</a></span></dt><dt><span class="section"><a href="#idp48826320">1.4. __pdata</a></span></dt><dt><span class="section"><a href="#idp48827824">1.5. __code</a></span></dt><dt><span class="section"><a href="#idp48829264">1.6. __bit</a></span></dt><dt><span class="section"><a href="#idp48830768">1.7. __sfr, __sfr16, __sfr32, __sbit</a></span></dt></dl></dd><dt><span class="section"><a href="#idp48832304">2. Function calls on the 8051</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48833776">2.1. __reentrant functions</a></span></dt><dt><span class="section"><a href="#idp48835968">2.2. Non __reentrant functions</a></span></dt><dt><span class="section"><a href="#idp48838112">2.3. __interrupt functions</a></span></dt><dt><span class="section"><a href="#idp48839680">2.4. __critical functions and statements</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idp48841744">4. Task functions</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48842800">1. ao_add_task</a></span></dt><dt><span class="section"><a href="#idp48845056">2. ao_exit</a></span></dt><dt><span class="section"><a href="#idp54325680">3. ao_sleep</a></span></dt><dt><span class="section"><a href="#idp54329280">4. ao_wakeup</a></span></dt><dt><span class="section"><a href="#idp54332272">5. ao_alarm</a></span></dt><dt><span class="section"><a href="#idp54335552">6. ao_start_scheduler</a></span></dt><dt><span class="section"><a href="#idp54337520">7. ao_clock_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp54339536">5. Timer Functions</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54341040">1. ao_time</a></span></dt><dt><span class="section"><a href="#idp54343072">2. ao_delay</a></span></dt><dt><span class="section"><a href="#idp54344992">3. ao_timer_set_adc_interval</a></span></dt><dt><span class="section"><a href="#idp54347120">4. ao_timer_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp54349312">6. AltOS Mutexes</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54351184">1. ao_mutex_get</a></span></dt><dt><span class="section"><a href="#idp54353024">2. ao_mutex_put</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp54355088">7. DMA engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54358528">1. CC1111 DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54359200">1.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#idp54361376">1.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#idp54363648">1.3. ao_dma_start</a></span></dt><dt><span class="section"><a href="#idp54365664">1.4. ao_dma_trigger</a></span></dt><dt><span class="section"><a href="#idp54367584">1.5. ao_dma_abort</a></span></dt></dl></dd><dt><span class="section"><a href="#idp54369728">2. STM32L DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54370400">2.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#idp54372400">2.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#idp54374656">2.3. ao_dma_set_isr</a></span></dt><dt><span class="section"><a href="#idp54376816">2.4. ao_dma_start</a></span></dt><dt><span class="section"><a href="#idp54379120">2.5. ao_dma_done_transfer</a></span></dt><dt><span class="section"><a href="#idp54381104">2.6. ao_dma_abort</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idp54383376">8. Stdio interface</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54384880">1. putchar</a></span></dt><dt><span class="section"><a href="#idp54386848">2. getchar</a></span></dt><dt><span class="section"><a href="#idp54388944">3. flush</a></span></dt><dt><span class="section"><a href="#idp54390976">4. ao_add_stdio</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp54395008">9. Command line interface</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54396416">1. ao_cmd_register</a></span></dt><dt><span class="section"><a href="#idp54405152">2. ao_cmd_lex</a></span></dt><dt><span class="section"><a href="#idp54407232">3. ao_cmd_put16</a></span></dt><dt><span class="section"><a href="#idp54409072">4. ao_cmd_put8</a></span></dt><dt><span class="section"><a href="#idp54410960">5. ao_cmd_white</a></span></dt><dt><span class="section"><a href="#idp54413024">6. ao_cmd_hex</a></span></dt><dt><span class="section"><a href="#idp54415072">7. ao_cmd_decimal</a></span></dt><dt><span class="section"><a href="#idp54417168">8. ao_match_word</a></span></dt><dt><span class="section"><a href="#idp54419248">9. ao_cmd_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp54421472">10. USB target device</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54423696">1. ao_usb_flush</a></span></dt><dt><span class="section"><a href="#idp54425840">2. ao_usb_putchar</a></span></dt><dt><span class="section"><a href="#idp54428016">3. ao_usb_pollchar</a></span></dt><dt><span class="section"><a href="#idp54430160">4. ao_usb_getchar</a></span></dt><dt><span class="section"><a href="#idp54432176">5. ao_usb_disable</a></span></dt><dt><span class="section"><a href="#idp54435008">6. ao_usb_enable</a></span></dt><dt><span class="section"><a href="#idp54437120">7. ao_usb_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp52093056">11. Serial peripherals</a></span></dt><dd><dl><dt><span class="section"><a href="#idp52051552">1. ao_serial_getchar</a></span></dt><dt><span class="section"><a href="#idp52741648">2. ao_serial_putchar</a></span></dt><dt><span class="section"><a href="#idp52199424">3. ao_serial_drain</a></span></dt><dt><span class="section"><a href="#idp51533776">4. ao_serial_set_speed</a></span></dt><dt><span class="section"><a href="#idp52667488">5. ao_serial_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp51418608">12. CC1111 Radio peripheral</a></span></dt><dd><dl><dt><span class="section"><a href="#idp52370480">1. Radio Introduction</a></span></dt><dt><span class="section"><a href="#idp54446048">2. ao_radio_set_telemetry</a></span></dt><dt><span class="section"><a href="#idp54448144">3. ao_radio_set_packet</a></span></dt><dt><span class="section"><a href="#idp54450240">4. ao_radio_set_rdf</a></span></dt><dt><span class="section"><a href="#idp54452368">5. ao_radio_idle</a></span></dt><dt><span class="section"><a href="#idp54454304">6. ao_radio_get</a></span></dt><dt><span class="section"><a href="#idp54456224">7. ao_radio_put</a></span></dt><dt><span class="section"><a href="#idp54458000">8. ao_radio_abort</a></span></dt><dt><span class="section"><a href="#idp54459952">9. Radio Telemetry</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54461216">9.1. ao_radio_send</a></span></dt><dt><span class="section"><a href="#idp54463376">9.2. ao_radio_recv</a></span></dt></dl></dd><dt><span class="section"><a href="#idp54465776">10. Radio Direction Finding</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54466896">10.1. ao_radio_rdf</a></span></dt></dl></dd><dt><span class="section"><a href="#idp54468928">11. Radio Packet Mode</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54470208">11.1. ao_packet_putchar</a></span></dt><dt><span class="section"><a href="#idp54472320">11.2. ao_packet_pollchar</a></span></dt><dt><span class="section"><a href="#idp54474288">11.3. ao_packet_slave_start</a></span></dt><dt><span class="section"><a href="#idp54476176">11.4. ao_packet_slave_stop</a></span></dt><dt><span class="section"><a href="#idp54478032">11.5. ao_packet_slave_init</a></span></dt><dt><span class="section"><a href="#idp54480000">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 name="idp49692816"></a>Chapter 1. Overview</h1></div></div></div><p>
+      </p></div></div><div><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision 1.1</td><td align="left">05 November 2012</td></tr><tr><td align="left" colspan="2">Portable version</td></tr><tr><td align="left">Revision 0.1</td><td align="left">22 November 2010</td></tr><tr><td align="left" colspan="2">Initial content</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="#idm46302610177888">1. Overview</a></span></dt><dt><span class="chapter"><a href="#idm46302610940496">2. AltOS Porting Layer</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302610938992">1. Low-level CPU operations</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302610937760">1.1. ao_arch_block_interrupts/ao_arch_release_interrupts</a></span></dt><dt><span class="section"><a href="#idm46302610935712">1.2. ao_arch_save_regs, ao_arch_save_stack,
+       ao_arch_restore_stack</a></span></dt><dt><span class="section"><a href="#idm46302610933424">1.3. ao_arch_wait_interupt</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302610930880">2. GPIO operations</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302610929712">2.1. GPIO setup</a></span></dt><dt><span class="section"><a href="#idm46302611109712">2.2. Reading and writing GPIO pins</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idm46302611104464">3. Programming the 8051 with SDCC</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302611102368">1. 8051 memory spaces</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302611100432">1.1. __data</a></span></dt><dt><span class="section"><a href="#idm46302611098256">1.2. __idata</a></span></dt><dt><span class="section"><a href="#idm46302611096816">1.3. __xdata</a></span></dt><dt><span class="section"><a href="#idm46302611095408">1.4. __pdata</a></span></dt><dt><span class="section"><a href="#idm46302611093904">1.5. __code</a></span></dt><dt><span class="section"><a href="#idm46302611092464">1.6. __bit</a></span></dt><dt><span class="section"><a href="#idm46302611090960">1.7. __sfr, __sfr16, __sfr32, __sbit</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302611089424">2. Function calls on the 8051</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302611087952">2.1. __reentrant functions</a></span></dt><dt><span class="section"><a href="#idm46302611085760">2.2. Non __reentrant functions</a></span></dt><dt><span class="section"><a href="#idm46302611083616">2.3. __interrupt functions</a></span></dt><dt><span class="section"><a href="#idm46302611082048">2.4. __critical functions and statements</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idm46302611079984">4. Task functions</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302611078928">1. ao_add_task</a></span></dt><dt><span class="section"><a href="#idm46302611076672">2. ao_exit</a></span></dt><dt><span class="section"><a href="#idm46302605188160">3. ao_sleep</a></span></dt><dt><span class="section"><a href="#idm46302605184560">4. ao_wakeup</a></span></dt><dt><span class="section"><a href="#idm46302605181568">5. ao_alarm</a></span></dt><dt><span class="section"><a href="#idm46302605178288">6. ao_start_scheduler</a></span></dt><dt><span class="section"><a href="#idm46302605176320">7. ao_clock_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46302605174224">5. Timer Functions</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605172720">1. ao_time</a></span></dt><dt><span class="section"><a href="#idm46302605170688">2. ao_delay</a></span></dt><dt><span class="section"><a href="#idm46302605168768">3. ao_timer_set_adc_interval</a></span></dt><dt><span class="section"><a href="#idm46302605166640">4. ao_timer_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46302605164448">6. AltOS Mutexes</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605162576">1. ao_mutex_get</a></span></dt><dt><span class="section"><a href="#idm46302605160736">2. ao_mutex_put</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46302605158672">7. DMA engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605155232">1. CC1111 DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605154560">1.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#idm46302605152384">1.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#idm46302605150112">1.3. ao_dma_start</a></span></dt><dt><span class="section"><a href="#idm46302605148096">1.4. ao_dma_trigger</a></span></dt><dt><span class="section"><a href="#idm46302605146176">1.5. ao_dma_abort</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302605144032">2. STM32L DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605143360">2.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#idm46302605141360">2.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#idm46302605139104">2.3. ao_dma_set_isr</a></span></dt><dt><span class="section"><a href="#idm46302605136944">2.4. ao_dma_start</a></span></dt><dt><span class="section"><a href="#idm46302605134640">2.5. ao_dma_done_transfer</a></span></dt><dt><span class="section"><a href="#idm46302605132656">2.6. ao_dma_abort</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idm46302605130384">8. Stdio interface</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605128880">1. putchar</a></span></dt><dt><span class="section"><a href="#idm46302605126912">2. getchar</a></span></dt><dt><span class="section"><a href="#idm46302605124816">3. flush</a></span></dt><dt><span class="section"><a href="#idm46302605122784">4. ao_add_stdio</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46302605118752">9. Command line interface</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605117344">1. ao_cmd_register</a></span></dt><dt><span class="section"><a href="#idm46302605108608">2. ao_cmd_lex</a></span></dt><dt><span class="section"><a href="#idm46302605106528">3. ao_cmd_put16</a></span></dt><dt><span class="section"><a href="#idm46302605104688">4. ao_cmd_put8</a></span></dt><dt><span class="section"><a href="#idm46302605102800">5. ao_cmd_white</a></span></dt><dt><span class="section"><a href="#idm46302605100736">6. ao_cmd_hex</a></span></dt><dt><span class="section"><a href="#idm46302605098688">7. ao_cmd_decimal</a></span></dt><dt><span class="section"><a href="#idm46302605096592">8. ao_match_word</a></span></dt><dt><span class="section"><a href="#idm46302605094512">9. ao_cmd_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46302605092288">10. USB target device</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605090064">1. ao_usb_flush</a></span></dt><dt><span class="section"><a href="#idm46302605087920">2. ao_usb_putchar</a></span></dt><dt><span class="section"><a href="#idm46302605085744">3. ao_usb_pollchar</a></span></dt><dt><span class="section"><a href="#idm46302605083600">4. ao_usb_getchar</a></span></dt><dt><span class="section"><a href="#idm46302605081584">5. ao_usb_disable</a></span></dt><dt><span class="section"><a href="#idm46302605078752">6. ao_usb_enable</a></span></dt><dt><span class="section"><a href="#idm46302605076640">7. ao_usb_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46302605074416">11. Serial peripherals</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605072400">1. ao_serial_getchar</a></span></dt><dt><span class="section"><a href="#idm46302605070368">2. ao_serial_putchar</a></span></dt><dt><span class="section"><a href="#idm46302605068400">3. ao_serial_drain</a></span></dt><dt><span class="section"><a href="#idm46302605066400">4. ao_serial_set_speed</a></span></dt><dt><span class="section"><a href="#idm46302605064368">5. ao_serial_init</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46302605062176">12. CC1111 Radio peripheral</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605061504">1. Radio Introduction</a></span></dt><dt><span class="section"><a href="#idm46302605054896">2. ao_radio_set_telemetry</a></span></dt><dt><span class="section"><a href="#idm46302605052800">3. ao_radio_set_packet</a></span></dt><dt><span class="section"><a href="#idm46302605050704">4. ao_radio_set_rdf</a></span></dt><dt><span class="section"><a href="#idm46302605048576">5. ao_radio_idle</a></span></dt><dt><span class="section"><a href="#idm46302605046640">6. ao_radio_get</a></span></dt><dt><span class="section"><a href="#idm46302605044720">7. ao_radio_put</a></span></dt><dt><span class="section"><a href="#idm46302605042944">8. ao_radio_abort</a></span></dt><dt><span class="section"><a href="#idm46302605040992">9. Radio Telemetry</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605039728">9.1. ao_radio_send</a></span></dt><dt><span class="section"><a href="#idm46302605037568">9.2. ao_radio_recv</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302605035168">10. Radio Direction Finding</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605034048">10.1. ao_radio_rdf</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302605032016">11. Radio Packet Mode</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605030736">11.1. ao_packet_putchar</a></span></dt><dt><span class="section"><a href="#idm46302605028624">11.2. ao_packet_pollchar</a></span></dt><dt><span class="section"><a href="#idm46302605026656">11.3. ao_packet_slave_start</a></span></dt><dt><span class="section"><a href="#idm46302605024768">11.4. ao_packet_slave_stop</a></span></dt><dt><span class="section"><a href="#idm46302605022912">11.5. ao_packet_slave_init</a></span></dt><dt><span class="section"><a href="#idm46302605020944">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 name="idm46302610177888"></a>Chapter 1. Overview</h1></div></div></div><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
@@ -85,8 +85,8 @@
       </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 name="idp48980224"></a>Chapter 2. AltOS Porting Layer</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp48981728">1. Low-level CPU operations</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48982912">1.1. ao_arch_block_interrupts/ao_arch_release_interrupts</a></span></dt><dt><span class="section"><a href="#idp48984960">1.2. ao_arch_save_regs, ao_arch_save_stack,
-       ao_arch_restore_stack</a></span></dt><dt><span class="section"><a href="#idp48987360">1.3. ao_arch_wait_interupt</a></span></dt></dl></dd><dt><span class="section"><a href="#idp48989904">2. GPIO operations</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48991072">2.1. GPIO setup</a></span></dt><dt><span class="section"><a href="#idp48812016">2.2. Reading and writing GPIO pins</a></span></dt></dl></dd></dl></div><p>
+    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302610940496"></a>Chapter 2. AltOS Porting Layer</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302610938992">1. Low-level CPU operations</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302610937760">1.1. ao_arch_block_interrupts/ao_arch_release_interrupts</a></span></dt><dt><span class="section"><a href="#idm46302610935712">1.2. ao_arch_save_regs, ao_arch_save_stack,
+       ao_arch_restore_stack</a></span></dt><dt><span class="section"><a href="#idm46302610933424">1.3. ao_arch_wait_interupt</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302610930880">2. GPIO operations</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302610929712">2.1. GPIO setup</a></span></dt><dt><span class="section"><a href="#idm46302611109712">2.2. Reading and writing GPIO pins</a></span></dt></dl></dd></dl></div><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
       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 name="idp48981728"></a>1. Low-level CPU operations</h2></div></div></div><p>
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302610938992"></a>1. Low-level CPU operations</h2></div></div></div><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 name="idp48982912"></a>1.1. ao_arch_block_interrupts/ao_arch_release_interrupts</h3></div></div></div><pre class="programlisting">
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302610937760"></a>1.1. ao_arch_block_interrupts/ao_arch_release_interrupts</h3></div></div></div><pre class="programlisting">
          static inline void
          ao_arch_block_interrupts(void);
          
          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 name="idp48984960"></a>1.2. ao_arch_save_regs, ao_arch_save_stack,
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302610935712"></a>1.2. ao_arch_save_regs, ao_arch_save_stack,
        ao_arch_restore_stack</h3></div></div></div><pre class="programlisting">
          static inline void
          ao_arch_save_regs(void);
          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 name="idp48987360"></a>1.3. ao_arch_wait_interupt</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302610933424"></a>1.3. ao_arch_wait_interupt</h3></div></div></div><pre class="programlisting">
          #define ao_arch_wait_interrupt()
        </pre><p>
          This stops the CPU, leaving clocks and interrupts
          disable interrupts again. If the CPU doesn'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 name="idp48989904"></a>2. GPIO operations</h2></div></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302610930880"></a>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 name="idp48991072"></a>2.1. GPIO setup</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302610929712"></a>2.1. GPIO setup</h3></div></div></div><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 specific
          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 name="idp48993040"></a>2.1.1. ao_enable_output</h4></div></div></div><pre class="programlisting">
+       </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm46302610927744"></a>2.1.1. ao_enable_output</h4></div></div></div><pre class="programlisting">
            #define ao_enable_output(port, bit, pin, value)
          </pre><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 name="idp48806624"></a>2.1.2. ao_enable_input</h4></div></div></div><pre class="programlisting">
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm46302611115152"></a>2.1.2. ao_enable_input</h4></div></div></div><pre class="programlisting">
            #define ao_enable_input(port, bit, mode)
          </pre><p>
            Sets the specified port/bit to be an input pin. 'mode' is
                0. Don't apply either a pull-up or pull-down. A
                disconnected pin will read an undetermined value.
 </p></li></ul></div><p>
-         </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp48812016"></a>2.2. Reading and writing GPIO pins</h3></div></div></div><p>
+         </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611109712"></a>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 name="idp48813088"></a>2.2.1. ao_gpio_set</h4></div></div></div><pre class="programlisting">
+       </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm46302611108640"></a>2.2.1. ao_gpio_set</h4></div></div></div><pre class="programlisting">
            #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 name="idp48814928"></a>2.2.2. ao_gpio_get</h4></div></div></div><pre class="programlisting">
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm46302611106800"></a>2.2.2. ao_gpio_get</h4></div></div></div><pre class="programlisting">
            #define ao_gpio_get(port, bit, pin)
          </pre><p>
            Returns either 1 or 0 depending on whether the input to
            the pin is high or low.
-         </p></div></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp48817264"></a>Chapter 3. Programming the 8051 with SDCC</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp48819360">1. 8051 memory spaces</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48821296">1.1. __data</a></span></dt><dt><span class="section"><a href="#idp48823472">1.2. __idata</a></span></dt><dt><span class="section"><a href="#idp48824912">1.3. __xdata</a></span></dt><dt><span class="section"><a href="#idp48826320">1.4. __pdata</a></span></dt><dt><span class="section"><a href="#idp48827824">1.5. __code</a></span></dt><dt><span class="section"><a href="#idp48829264">1.6. __bit</a></span></dt><dt><span class="section"><a href="#idp48830768">1.7. __sfr, __sfr16, __sfr32, __sbit</a></span></dt></dl></dd><dt><span class="section"><a href="#idp48832304">2. Function calls on the 8051</a></span></dt><dd><dl><dt><span class="section"><a href="#idp48833776">2.1. __reentrant functions</a></span></dt><dt><span class="section"><a href="#idp48835968">2.2. Non __reentrant functions</a></span></dt><dt><span class="section"><a href="#idp48838112">2.3. __interrupt functions</a></span></dt><dt><span class="section"><a href="#idp48839680">2.4. __critical functions and statements</a></span></dt></dl></dd></dl></div><p>
+         </p></div></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302611104464"></a>Chapter 3. Programming the 8051 with SDCC</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302611102368">1. 8051 memory spaces</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302611100432">1.1. __data</a></span></dt><dt><span class="section"><a href="#idm46302611098256">1.2. __idata</a></span></dt><dt><span class="section"><a href="#idm46302611096816">1.3. __xdata</a></span></dt><dt><span class="section"><a href="#idm46302611095408">1.4. __pdata</a></span></dt><dt><span class="section"><a href="#idm46302611093904">1.5. __code</a></span></dt><dt><span class="section"><a href="#idm46302611092464">1.6. __bit</a></span></dt><dt><span class="section"><a href="#idm46302611090960">1.7. __sfr, __sfr16, __sfr32, __sbit</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302611089424">2. Function calls on the 8051</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302611087952">2.1. __reentrant functions</a></span></dt><dt><span class="section"><a href="#idm46302611085760">2.2. Non __reentrant functions</a></span></dt><dt><span class="section"><a href="#idm46302611083616">2.3. __interrupt functions</a></span></dt><dt><span class="section"><a href="#idm46302611082048">2.4. __critical functions and statements</a></span></dt></dl></dd></dl></div><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
     </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 class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp48819360"></a>1. 8051 memory spaces</h2></div></div></div><p>
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302611102368"></a>1. 8051 memory spaces</h2></div></div></div><p>
        The __data/__xdata/__code memory spaces below were completely
        separate in the original 8051 design. In the cc1111, this
        isn't true&#8212;they all live in a single unified 64kB address
        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 name="idp48821296"></a>1.1. __data</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611100432"></a>1.1. __data</h3></div></div></div><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
          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 name="idp48823472"></a>1.2. __idata</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611098256"></a>1.2. __idata</h3></div></div></div><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 name="idp48824912"></a>1.3. __xdata</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611096816"></a>1.3. __xdata</h3></div></div></div><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 name="idp48826320"></a>1.4. __pdata</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611095408"></a>1.4. __pdata</h3></div></div></div><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 name="idp48827824"></a>1.5. __code</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611093904"></a>1.5. __code</h3></div></div></div><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 'code'
          access opcodes. Anything read-only should live in this space.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp48829264"></a>1.6. __bit</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611092464"></a>1.6. __bit</h3></div></div></div><p>
          The 8051 has 128 bits of bit-addressible memory that
          lives in the __data segment from 0x20 through
          0x2f. Special instructions access these bits
          in a single atomic operation. This isn't so much a
          separate address space as a special addressing mode for
          a few bytes in the __data segment.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp48830768"></a>1.7. __sfr, __sfr16, __sfr32, __sbit</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611090960"></a>1.7. __sfr, __sfr16, __sfr32, __sbit</h3></div></div></div><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 name="idp48832304"></a>2. Function calls on the 8051</h2></div></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302611089424"></a>2. Function calls on the 8051</h2></div></div></div><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
        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 name="idp48833776"></a>2.1. __reentrant functions</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611087952"></a>2.1. __reentrant functions</h3></div></div></div><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
          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 name="idp48835968"></a>2.2. Non __reentrant functions</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611085760"></a>2.2. Non __reentrant functions</h3></div></div></div><p>
          All parameters and locals in non-reentrant functions can
          have data space decoration so that they are allocated in
          __xdata, __pdata or __data space as desired. This can avoid
          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 name="idp48838112"></a>2.3. __interrupt functions</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611083616"></a>2.3. __interrupt functions</h3></div></div></div><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 '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 name="idp48839680"></a>2.4. __critical functions and statements</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302611082048"></a>2.4. __critical functions and statements</h3></div></div></div><p>
          SDCC has built-in support for suspending interrupts during
          critical code. Functions marked as __critical will have
          interrupts suspended for the whole period of
          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 name="idp48841744"></a>Chapter 4. Task functions</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp48842800">1. ao_add_task</a></span></dt><dt><span class="section"><a href="#idp48845056">2. ao_exit</a></span></dt><dt><span class="section"><a href="#idp54325680">3. ao_sleep</a></span></dt><dt><span class="section"><a href="#idp54329280">4. ao_wakeup</a></span></dt><dt><span class="section"><a href="#idp54332272">5. ao_alarm</a></span></dt><dt><span class="section"><a href="#idp54335552">6. ao_start_scheduler</a></span></dt><dt><span class="section"><a href="#idp54337520">7. ao_clock_init</a></span></dt></dl></div><p>
+       </p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302611079984"></a>Chapter 4. Task functions</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302611078928">1. ao_add_task</a></span></dt><dt><span class="section"><a href="#idm46302611076672">2. ao_exit</a></span></dt><dt><span class="section"><a href="#idm46302605188160">3. ao_sleep</a></span></dt><dt><span class="section"><a href="#idm46302605184560">4. ao_wakeup</a></span></dt><dt><span class="section"><a href="#idm46302605181568">5. ao_alarm</a></span></dt><dt><span class="section"><a href="#idm46302605178288">6. ao_start_scheduler</a></span></dt><dt><span class="section"><a href="#idm46302605176320">7. ao_clock_init</a></span></dt></dl></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 name="idp48842800"></a>1. ao_add_task</h2></div></div></div><pre class="programlisting">
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302611078928"></a>1. ao_add_task</h2></div></div></div><pre class="programlisting">
        void
        ao_add_task(__xdata struct ao_task * task,
                    void (*start)(void),
        display), and the start address. It does not switch to the
        new task. 'start' 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 name="idp48845056"></a>2. ao_exit</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302611076672"></a>2. ao_exit</h2></div></div></div><pre class="programlisting">
        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 name="idp54325680"></a>3. ao_sleep</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605188160"></a>3. ao_sleep</h2></div></div></div><pre class="programlisting">
        void
        ao_sleep(__xdata void *wchan)
       </pre><p>
                  ao_sleep(&amp;ao_radio_done);
          ao_arch_release_interrupts();
        </pre><p>
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp54329280"></a>4. ao_wakeup</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605184560"></a>4. ao_wakeup</h2></div></div></div><pre class="programlisting">
        void
        ao_wakeup(__xdata void *wchan)
       </pre><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 name="idp54332272"></a>5. ao_alarm</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605181568"></a>5. ao_alarm</h2></div></div></div><pre class="programlisting">
        void
        ao_alarm(uint16_t delay);
 
        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 name="idp54335552"></a>6. ao_start_scheduler</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605178288"></a>6. ao_start_scheduler</h2></div></div></div><pre class="programlisting">
        void
        ao_start_scheduler(void);
       </pre><p>
        This is called from 'main' 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 name="idp54337520"></a>7. ao_clock_init</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605176320"></a>7. ao_clock_init</h2></div></div></div><pre class="programlisting">
        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 name="idp54339536"></a>Chapter 5. Timer Functions</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp54341040">1. ao_time</a></span></dt><dt><span class="section"><a href="#idp54343072">2. ao_delay</a></span></dt><dt><span class="section"><a href="#idp54344992">3. ao_timer_set_adc_interval</a></span></dt><dt><span class="section"><a href="#idp54347120">4. ao_timer_init</a></span></dt></dl></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302605174224"></a>Chapter 5. Timer Functions</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302605172720">1. ao_time</a></span></dt><dt><span class="section"><a href="#idm46302605170688">2. ao_delay</a></span></dt><dt><span class="section"><a href="#idm46302605168768">3. ao_timer_set_adc_interval</a></span></dt><dt><span class="section"><a href="#idm46302605166640">4. ao_timer_init</a></span></dt></dl></div><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
       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 name="idp54341040"></a>1. ao_time</h2></div></div></div><pre class="programlisting">
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605172720"></a>1. ao_time</h2></div></div></div><pre class="programlisting">
        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 name="idp54343072"></a>2. ao_delay</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605170688"></a>2. ao_delay</h2></div></div></div><pre class="programlisting">
        void
        ao_delay(uint16_t ticks);
       </pre><p>
        Suspend the current task for at least 'ticks' clock units.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp54344992"></a>3. ao_timer_set_adc_interval</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605168768"></a>3. ao_timer_set_adc_interval</h2></div></div></div><pre class="programlisting">
        void
        ao_timer_set_adc_interval(uint8_t interval);
       </pre><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 name="idp54347120"></a>4. ao_timer_init</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605166640"></a>4. ao_timer_init</h2></div></div></div><pre class="programlisting">
        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 'main'
        before ao_start_scheduler.
-      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp54349312"></a>Chapter 6. AltOS Mutexes</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp54351184">1. ao_mutex_get</a></span></dt><dt><span class="section"><a href="#idp54353024">2. ao_mutex_put</a></span></dt></dl></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302605164448"></a>Chapter 6. AltOS Mutexes</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302605162576">1. ao_mutex_get</a></span></dt><dt><span class="section"><a href="#idm46302605160736">2. ao_mutex_put</a></span></dt></dl></div><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&#8212;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 name="idp54351184"></a>1. ao_mutex_get</h2></div></div></div><pre class="programlisting">
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605162576"></a>1. ao_mutex_get</h2></div></div></div><pre class="programlisting">
        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 name="idp54353024"></a>2. ao_mutex_put</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605160736"></a>2. ao_mutex_put</h2></div></div></div><pre class="programlisting">
        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 name="idp54355088"></a>Chapter 7. DMA engine</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp54358528">1. CC1111 DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54359200">1.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#idp54361376">1.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#idp54363648">1.3. ao_dma_start</a></span></dt><dt><span class="section"><a href="#idp54365664">1.4. ao_dma_trigger</a></span></dt><dt><span class="section"><a href="#idp54367584">1.5. ao_dma_abort</a></span></dt></dl></dd><dt><span class="section"><a href="#idp54369728">2. STM32L DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54370400">2.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#idp54372400">2.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#idp54374656">2.3. ao_dma_set_isr</a></span></dt><dt><span class="section"><a href="#idp54376816">2.4. ao_dma_start</a></span></dt><dt><span class="section"><a href="#idp54379120">2.5. ao_dma_done_transfer</a></span></dt><dt><span class="section"><a href="#idp54381104">2.6. ao_dma_abort</a></span></dt></dl></dd></dl></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302605158672"></a>Chapter 7. DMA engine</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302605155232">1. CC1111 DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605154560">1.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#idm46302605152384">1.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#idm46302605150112">1.3. ao_dma_start</a></span></dt><dt><span class="section"><a href="#idm46302605148096">1.4. ao_dma_trigger</a></span></dt><dt><span class="section"><a href="#idm46302605146176">1.5. ao_dma_abort</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302605144032">2. STM32L DMA Engine</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605143360">2.1. ao_dma_alloc</a></span></dt><dt><span class="section"><a href="#idm46302605141360">2.2. ao_dma_set_transfer</a></span></dt><dt><span class="section"><a href="#idm46302605139104">2.3. ao_dma_set_isr</a></span></dt><dt><span class="section"><a href="#idm46302605136944">2.4. ao_dma_start</a></span></dt><dt><span class="section"><a href="#idm46302605134640">2.5. ao_dma_done_transfer</a></span></dt><dt><span class="section"><a href="#idm46302605132656">2.6. ao_dma_abort</a></span></dt></dl></dd></dl></div><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
       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 name="idp54358528"></a>1. CC1111 DMA Engine</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp54359200"></a>1.1. ao_dma_alloc</h3></div></div></div><pre class="programlisting">
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605155232"></a>1. CC1111 DMA Engine</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605154560"></a>1.1. ao_dma_alloc</h3></div></div></div><pre class="programlisting">
          uint8_t
          ao_dma_alloc(__xdata uint8_t *done)
        </pre><p>
          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 name="idp54361376"></a>1.2. ao_dma_set_transfer</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605152384"></a>1.2. ao_dma_set_transfer</h3></div></div></div><pre class="programlisting">
          void
          ao_dma_set_transfer(uint8_t id,
          void __xdata *srcaddr,
          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 name="idp54363648"></a>1.3. ao_dma_start</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605150112"></a>1.3. ao_dma_start</h3></div></div></div><pre class="programlisting">
          void
          ao_dma_start(uint8_t id);
        </pre><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 name="idp54365664"></a>1.4. ao_dma_trigger</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605148096"></a>1.4. ao_dma_trigger</h3></div></div></div><pre class="programlisting">
          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 name="idp54367584"></a>1.5. ao_dma_abort</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605146176"></a>1.5. ao_dma_abort</h3></div></div></div><pre class="programlisting">
          void
          ao_dma_abort(uint8_t id)
        </pre><p>
          Terminate any in-progress DMA transaction, marking its
          'done' 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 name="idp54369728"></a>2. STM32L DMA Engine</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp54370400"></a>2.1. ao_dma_alloc</h3></div></div></div><pre class="programlisting">
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605144032"></a>2. STM32L DMA Engine</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605143360"></a>2.1. ao_dma_alloc</h3></div></div></div><pre class="programlisting">
          uint8_t ao_dma_done[];
 
          void
        </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 name="idp54372400"></a>2.2. ao_dma_set_transfer</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605141360"></a>2.2. ao_dma_set_transfer</h3></div></div></div><pre class="programlisting">
          void
          ao_dma_set_transfer(uint8_t id,
          void *peripheral,
          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 name="idp54374656"></a>2.3. ao_dma_set_isr</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605139104"></a>2.3. ao_dma_set_isr</h3></div></div></div><pre class="programlisting">
          void
          ao_dma_set_isr(uint8_t index, void (*isr)(int))
        </pre><p>
          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 name="idp54376816"></a>2.4. ao_dma_start</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605136944"></a>2.4. ao_dma_start</h3></div></div></div><pre class="programlisting">
          void
          ao_dma_start(uint8_t id);
        </pre><p>
          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 name="idp54379120"></a>2.5. ao_dma_done_transfer</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605134640"></a>2.5. ao_dma_done_transfer</h3></div></div></div><pre class="programlisting">
          void
          ao_dma_done_transfer(uint8_t id);
        </pre><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 name="idp54381104"></a>2.6. ao_dma_abort</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605132656"></a>2.6. ao_dma_abort</h3></div></div></div><pre class="programlisting">
          void
          ao_dma_abort(uint8_t id)
        </pre><p>
          Terminate any in-progress DMA transaction, marking its
          'done' variable with the AO_DMA_ABORTED bit.
-       </p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp54383376"></a>Chapter 8. Stdio interface</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp54384880">1. putchar</a></span></dt><dt><span class="section"><a href="#idp54386848">2. getchar</a></span></dt><dt><span class="section"><a href="#idp54388944">3. flush</a></span></dt><dt><span class="section"><a href="#idp54390976">4. ao_add_stdio</a></span></dt></dl></div><p>
+       </p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302605130384"></a>Chapter 8. Stdio interface</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302605128880">1. putchar</a></span></dt><dt><span class="section"><a href="#idm46302605126912">2. getchar</a></span></dt><dt><span class="section"><a href="#idm46302605124816">3. flush</a></span></dt><dt><span class="section"><a href="#idm46302605122784">4. ao_add_stdio</a></span></dt></dl></div><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
       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 name="idp54384880"></a>1. putchar</h2></div></div></div><pre class="programlisting">
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605128880"></a>1. putchar</h2></div></div></div><pre class="programlisting">
        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 name="idp54386848"></a>2. getchar</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605126912"></a>2. getchar</h2></div></div></div><pre class="programlisting">
        char
        getchar(void)
       </pre><p>
        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 name="idp54388944"></a>3. flush</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605124816"></a>3. flush</h2></div></div></div><pre class="programlisting">
        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 name="idp54390976"></a>4. ao_add_stdio</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605122784"></a>4. ao_add_stdio</h2></div></div></div><pre class="programlisting">
        void
        ao_add_stdio(char (*pollchar)(void),
                           void (*putchar)(char),
        '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 name="idp54395008"></a>Chapter 9. Command line interface</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp54396416">1. ao_cmd_register</a></span></dt><dt><span class="section"><a href="#idp54405152">2. ao_cmd_lex</a></span></dt><dt><span class="section"><a href="#idp54407232">3. ao_cmd_put16</a></span></dt><dt><span class="section"><a href="#idp54409072">4. ao_cmd_put8</a></span></dt><dt><span class="section"><a href="#idp54410960">5. ao_cmd_white</a></span></dt><dt><span class="section"><a href="#idp54413024">6. ao_cmd_hex</a></span></dt><dt><span class="section"><a href="#idp54415072">7. ao_cmd_decimal</a></span></dt><dt><span class="section"><a href="#idp54417168">8. ao_match_word</a></span></dt><dt><span class="section"><a href="#idp54419248">9. ao_cmd_init</a></span></dt></dl></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302605118752"></a>Chapter 9. Command line interface</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302605117344">1. ao_cmd_register</a></span></dt><dt><span class="section"><a href="#idm46302605108608">2. ao_cmd_lex</a></span></dt><dt><span class="section"><a href="#idm46302605106528">3. ao_cmd_put16</a></span></dt><dt><span class="section"><a href="#idm46302605104688">4. ao_cmd_put8</a></span></dt><dt><span class="section"><a href="#idm46302605102800">5. ao_cmd_white</a></span></dt><dt><span class="section"><a href="#idm46302605100736">6. ao_cmd_hex</a></span></dt><dt><span class="section"><a href="#idm46302605098688">7. ao_cmd_decimal</a></span></dt><dt><span class="section"><a href="#idm46302605096592">8. ao_match_word</a></span></dt><dt><span class="section"><a href="#idm46302605094512">9. ao_cmd_init</a></span></dt></dl></div><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 name="idp54396416"></a>1. ao_cmd_register</h2></div></div></div><pre class="programlisting">
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605117344"></a>1. ao_cmd_register</h2></div></div></div><pre class="programlisting">
        void
        ao_cmd_register(__code struct ao_cmds *cmds)
       </pre><p>
                The command line is invalid for some reason other
                than invalid tokens.
              </p></dd></dl></div><p>
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp54405152"></a>2. ao_cmd_lex</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605108608"></a>2. ao_cmd_lex</h2></div></div></div><pre class="programlisting">
        void
        ao_cmd_lex(void);
       </pre><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 ('\n') character.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp54407232"></a>3. ao_cmd_put16</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605106528"></a>3. ao_cmd_put16</h2></div></div></div><pre class="programlisting">
        void
        ao_cmd_put16(uint16_t v);
       </pre><p>
        Writes 'v' as four hexadecimal characters.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp54409072"></a>4. ao_cmd_put8</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605104688"></a>4. ao_cmd_put8</h2></div></div></div><pre class="programlisting">
        void
        ao_cmd_put8(uint8_t v);
       </pre><p>
        Writes 'v' as two hexadecimal characters.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp54410960"></a>5. ao_cmd_white</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605102800"></a>5. ao_cmd_white</h2></div></div></div><pre class="programlisting">
        void
        ao_cmd_white(void)
       </pre><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 name="idp54413024"></a>6. ao_cmd_hex</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605100736"></a>6. ao_cmd_hex</h2></div></div></div><pre class="programlisting">
        void
        ao_cmd_hex(void)
       </pre><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 name="idp54415072"></a>7. ao_cmd_decimal</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605098688"></a>7. ao_cmd_decimal</h2></div></div></div><pre class="programlisting">
        void
        ao_cmd_decimal(void)
       </pre><p>
        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 name="idp54417168"></a>8. ao_match_word</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605096592"></a>8. ao_match_word</h2></div></div></div><pre class="programlisting">
        uint8_t
        ao_match_word(__code char *word)
       </pre><p>
        line. It does not skip leading white space. If '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 name="idp54419248"></a>9. ao_cmd_init</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605094512"></a>9. ao_cmd_init</h2></div></div></div><pre class="programlisting">
        void
        ao_cmd_init(void
       </pre><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 'main' before ao_start_scheduler.
-      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp54421472"></a>Chapter 10. USB target device</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp54423696">1. ao_usb_flush</a></span></dt><dt><span class="section"><a href="#idp54425840">2. ao_usb_putchar</a></span></dt><dt><span class="section"><a href="#idp54428016">3. ao_usb_pollchar</a></span></dt><dt><span class="section"><a href="#idp54430160">4. ao_usb_getchar</a></span></dt><dt><span class="section"><a href="#idp54432176">5. ao_usb_disable</a></span></dt><dt><span class="section"><a href="#idp54435008">6. ao_usb_enable</a></span></dt><dt><span class="section"><a href="#idp54437120">7. ao_usb_init</a></span></dt></dl></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302605092288"></a>Chapter 10. USB target device</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302605090064">1. ao_usb_flush</a></span></dt><dt><span class="section"><a href="#idm46302605087920">2. ao_usb_putchar</a></span></dt><dt><span class="section"><a href="#idm46302605085744">3. ao_usb_pollchar</a></span></dt><dt><span class="section"><a href="#idm46302605083600">4. ao_usb_getchar</a></span></dt><dt><span class="section"><a href="#idm46302605081584">5. ao_usb_disable</a></span></dt><dt><span class="section"><a href="#idm46302605078752">6. ao_usb_enable</a></span></dt><dt><span class="section"><a href="#idm46302605076640">7. ao_usb_init</a></span></dt></dl></div><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
       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 name="idp54423696"></a>1. ao_usb_flush</h2></div></div></div><pre class="programlisting">
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605090064"></a>1. ao_usb_flush</h2></div></div></div><pre class="programlisting">
        void
        ao_usb_flush(void);
       </pre><p>
        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 name="idp54425840"></a>2. ao_usb_putchar</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605087920"></a>2. ao_usb_putchar</h2></div></div></div><pre class="programlisting">
        void
        ao_usb_putchar(char c);
       </pre><p>
        adds a byte to the pending IN packet for delivery to the
        USB host. If the USB packet is full, this queues the 'IN'
        packet for delivery.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp54428016"></a>3. ao_usb_pollchar</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605085744"></a>3. ao_usb_pollchar</h2></div></div></div><pre class="programlisting">
        char
        ao_usb_pollchar(void);
       </pre><p>
        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 name="idp54430160"></a>4. ao_usb_getchar</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605083600"></a>4. ao_usb_getchar</h2></div></div></div><pre class="programlisting">
        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 name="idp54432176"></a>5. ao_usb_disable</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605081584"></a>5. ao_usb_disable</h2></div></div></div><pre class="programlisting">
        void
        ao_usb_disable(void);
       </pre><p>
        after disabling the USB device, it'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 name="idp54435008"></a>6. ao_usb_enable</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605078752"></a>6. ao_usb_enable</h2></div></div></div><pre class="programlisting">
        void
        ao_usb_enable(void);
       </pre><p>
        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 name="idp54437120"></a>7. ao_usb_init</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605076640"></a>7. ao_usb_init</h2></div></div></div><pre class="programlisting">
        void
        ao_usb_init(void);
       </pre><p>
        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 name="idp52093056"></a>Chapter 11. Serial peripherals</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp52051552">1. ao_serial_getchar</a></span></dt><dt><span class="section"><a href="#idp52741648">2. ao_serial_putchar</a></span></dt><dt><span class="section"><a href="#idp52199424">3. ao_serial_drain</a></span></dt><dt><span class="section"><a href="#idp51533776">4. ao_serial_set_speed</a></span></dt><dt><span class="section"><a href="#idp52667488">5. ao_serial_init</a></span></dt></dl></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302605074416"></a>Chapter 11. Serial peripherals</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302605072400">1. ao_serial_getchar</a></span></dt><dt><span class="section"><a href="#idm46302605070368">2. ao_serial_putchar</a></span></dt><dt><span class="section"><a href="#idm46302605068400">3. ao_serial_drain</a></span></dt><dt><span class="section"><a href="#idm46302605066400">4. ao_serial_set_speed</a></span></dt><dt><span class="section"><a href="#idm46302605064368">5. ao_serial_init</a></span></dt></dl></div><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
     </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 name="idp52051552"></a>1. ao_serial_getchar</h2></div></div></div><pre class="programlisting">
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605072400"></a>1. ao_serial_getchar</h2></div></div></div><pre class="programlisting">
        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 name="idp52741648"></a>2. ao_serial_putchar</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605070368"></a>2. ao_serial_putchar</h2></div></div></div><pre class="programlisting">
        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 name="idp52199424"></a>3. ao_serial_drain</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605068400"></a>3. ao_serial_drain</h2></div></div></div><pre class="programlisting">
        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 name="idp51533776"></a>4. ao_serial_set_speed</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605066400"></a>4. ao_serial_set_speed</h2></div></div></div><pre class="programlisting">
        void
        ao_serial_set_speed(uint8_t speed);
       </pre><p>
        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 name="idp52667488"></a>5. ao_serial_init</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605064368"></a>5. ao_serial_init</h2></div></div></div><pre class="programlisting">
        void
        ao_serial_init(void)
       </pre><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 name="idp51418608"></a>Chapter 12. CC1111 Radio peripheral</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp52370480">1. Radio Introduction</a></span></dt><dt><span class="section"><a href="#idp54446048">2. ao_radio_set_telemetry</a></span></dt><dt><span class="section"><a href="#idp54448144">3. ao_radio_set_packet</a></span></dt><dt><span class="section"><a href="#idp54450240">4. ao_radio_set_rdf</a></span></dt><dt><span class="section"><a href="#idp54452368">5. ao_radio_idle</a></span></dt><dt><span class="section"><a href="#idp54454304">6. ao_radio_get</a></span></dt><dt><span class="section"><a href="#idp54456224">7. ao_radio_put</a></span></dt><dt><span class="section"><a href="#idp54458000">8. ao_radio_abort</a></span></dt><dt><span class="section"><a href="#idp54459952">9. Radio Telemetry</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54461216">9.1. ao_radio_send</a></span></dt><dt><span class="section"><a href="#idp54463376">9.2. ao_radio_recv</a></span></dt></dl></dd><dt><span class="section"><a href="#idp54465776">10. Radio Direction Finding</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54466896">10.1. ao_radio_rdf</a></span></dt></dl></dd><dt><span class="section"><a href="#idp54468928">11. Radio Packet Mode</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54470208">11.1. ao_packet_putchar</a></span></dt><dt><span class="section"><a href="#idp54472320">11.2. ao_packet_pollchar</a></span></dt><dt><span class="section"><a href="#idp54474288">11.3. ao_packet_slave_start</a></span></dt><dt><span class="section"><a href="#idp54476176">11.4. ao_packet_slave_stop</a></span></dt><dt><span class="section"><a href="#idp54478032">11.5. ao_packet_slave_init</a></span></dt><dt><span class="section"><a href="#idp54480000">11.6. ao_packet_master_init</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp52370480"></a>1. Radio Introduction</h2></div></div></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46302605062176"></a>Chapter 12. CC1111 Radio peripheral</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46302605061504">1. Radio Introduction</a></span></dt><dt><span class="section"><a href="#idm46302605054896">2. ao_radio_set_telemetry</a></span></dt><dt><span class="section"><a href="#idm46302605052800">3. ao_radio_set_packet</a></span></dt><dt><span class="section"><a href="#idm46302605050704">4. ao_radio_set_rdf</a></span></dt><dt><span class="section"><a href="#idm46302605048576">5. ao_radio_idle</a></span></dt><dt><span class="section"><a href="#idm46302605046640">6. ao_radio_get</a></span></dt><dt><span class="section"><a href="#idm46302605044720">7. ao_radio_put</a></span></dt><dt><span class="section"><a href="#idm46302605042944">8. ao_radio_abort</a></span></dt><dt><span class="section"><a href="#idm46302605040992">9. Radio Telemetry</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605039728">9.1. ao_radio_send</a></span></dt><dt><span class="section"><a href="#idm46302605037568">9.2. ao_radio_recv</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302605035168">10. Radio Direction Finding</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605034048">10.1. ao_radio_rdf</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46302605032016">11. Radio Packet Mode</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46302605030736">11.1. ao_packet_putchar</a></span></dt><dt><span class="section"><a href="#idm46302605028624">11.2. ao_packet_pollchar</a></span></dt><dt><span class="section"><a href="#idm46302605026656">11.3. ao_packet_slave_start</a></span></dt><dt><span class="section"><a href="#idm46302605024768">11.4. ao_packet_slave_stop</a></span></dt><dt><span class="section"><a href="#idm46302605022912">11.5. ao_packet_slave_init</a></span></dt><dt><span class="section"><a href="#idm46302605020944">11.6. ao_packet_master_init</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605061504"></a>1. Radio Introduction</h2></div></div></div><p>
        The CC1111 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
              receiver. This is designed to provide a beacon to track
              the device when other location mechanisms fail.
            </p></li></ol></div><p>
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp54446048"></a>2. ao_radio_set_telemetry</h2></div></div></div><pre class="programlisting">
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605054896"></a>2. ao_radio_set_telemetry</h2></div></div></div><pre class="programlisting">
          void
          ao_radio_set_telemetry(void);
        </pre><p>
          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 name="idp54448144"></a>3. ao_radio_set_packet</h2></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605052800"></a>3. ao_radio_set_packet</h2></div></div></div><pre class="programlisting">
          void
          ao_radio_set_packet(void);
        </pre><p>
          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 name="idp54450240"></a>4. ao_radio_set_rdf</h2></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605050704"></a>4. ao_radio_set_rdf</h2></div></div></div><pre class="programlisting">
          void
          ao_radio_set_rdf(void);
        </pre><p>
          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 name="idp54452368"></a>5. ao_radio_idle</h2></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605048576"></a>5. ao_radio_idle</h2></div></div></div><pre class="programlisting">
          void
          ao_radio_idle(void);
        </pre><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 name="idp54454304"></a>6. ao_radio_get</h2></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605046640"></a>6. ao_radio_get</h2></div></div></div><pre class="programlisting">
          void
          ao_radio_get(void);
        </pre><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 name="idp54456224"></a>7. ao_radio_put</h2></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605044720"></a>7. ao_radio_put</h2></div></div></div><pre class="programlisting">
          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 name="idp54458000"></a>8. ao_radio_abort</h2></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605042944"></a>8. ao_radio_abort</h2></div></div></div><pre class="programlisting">
          void
          ao_radio_abort(void);
        </pre><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 name="idp54459952"></a>9. Radio Telemetry</h2></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605040992"></a>9. Radio Telemetry</h2></div></div></div><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 name="idp54461216"></a>9.1. ao_radio_send</h3></div></div></div><pre class="programlisting">
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605039728"></a>9.1. ao_radio_send</h3></div></div></div><pre class="programlisting">
          void
          ao_radio_send(__xdata struct ao_telemetry *telemetry);
        </pre><p>
          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 name="idp54463376"></a>9.2. ao_radio_recv</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605037568"></a>9.2. ao_radio_recv</h3></div></div></div><pre class="programlisting">
          void
          ao_radio_recv(__xdata struct ao_radio_recv *radio);
        </pre><p>
          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 name="idp54465776"></a>10. Radio Direction Finding</h2></div></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605035168"></a>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 name="idp54466896"></a>10.1. ao_radio_rdf</h3></div></div></div><pre class="programlisting">
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605034048"></a>10.1. ao_radio_rdf</h3></div></div></div><pre class="programlisting">
          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 name="idp54468928"></a>11. Radio Packet Mode</h2></div></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46302605032016"></a>11. Radio Packet Mode</h2></div></div></div><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 name="idp54470208"></a>11.1. ao_packet_putchar</h3></div></div></div><pre class="programlisting">
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605030736"></a>11.1. ao_packet_putchar</h3></div></div></div><pre class="programlisting">
          void
          ao_packet_putchar(char c);
        </pre><p>
          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 name="idp54472320"></a>11.2. ao_packet_pollchar</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605028624"></a>11.2. ao_packet_pollchar</h3></div></div></div><pre class="programlisting">
          char
          ao_packet_pollchar(void);
        </pre><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 name="idp54474288"></a>11.3. ao_packet_slave_start</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605026656"></a>11.3. ao_packet_slave_start</h3></div></div></div><pre class="programlisting">
          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 name="idp54476176"></a>11.4. ao_packet_slave_stop</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605024768"></a>11.4. ao_packet_slave_stop</h3></div></div></div><pre class="programlisting">
          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 name="idp54478032"></a>11.5. ao_packet_slave_init</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605022912"></a>11.5. ao_packet_slave_init</h3></div></div></div><pre class="programlisting">
          void
          ao_packet_slave_init(void);
        </pre><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 name="idp54480000"></a>11.6. ao_packet_master_init</h3></div></div></div><pre class="programlisting">
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46302605020944"></a>11.6. ao_packet_master_init</h3></div></div></div><pre class="programlisting">
          void
          ao_packet_master_init(void);
        </pre><p>
index 02dedeb7a0a52d2a14731f88409fd16227936e62..0fabebef3d279187d82652138c7fabd854580670 100644 (file)
Binary files a/AltOS/doc/altos.pdf and b/AltOS/doc/altos.pdf differ
index bbf73d41ded7908927e35fef5f35f8f49dab3296..df2f2b30751775f15a1e65a38157d1f8881ae624 100644 (file)
@@ -1,10 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>The Altus Metrum System</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="idp4969824"></a>The Altus Metrum System</h1></div><div><h2 class="subtitle">An Owner's Manual for Altus Metrum Rocketry Electronics</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Bdale</span> <span class="surname">Garbee</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></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 © 2015 Bdale Garbee and Keith Packard</p></div><div><div class="legalnotice"><a name="idp32366224"></a><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>The Altus Metrum System</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789057122240"></a>The Altus Metrum System</h1></div><div><h2 class="subtitle">An Owner's Manual for Altus Metrum Rocketry Electronics</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Bdale</span> <span class="surname">Garbee</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></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 © 2015 Bdale Garbee and Keith Packard</p></div><div><div class="legalnotice"><a name="idm46789029905184"></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><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision 1.6</td><td align="left">8 January 2015</td></tr><tr><td align="left" colspan="2">
+      </p></div></div><div><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision 1.6.1</td><td align="left">15 July 2015</td></tr><tr><td align="left" colspan="2">
+         Minor release adding TeleBT v3.0 support.
+       </td></tr><tr><td align="left">Revision 1.6</td><td align="left">8 January 2015</td></tr><tr><td align="left" colspan="2">
          Major release adding TeleDongle v3.0 support.
        </td></tr><tr><td align="left">Revision 1.5</td><td align="left">6 September 2014</td></tr><tr><td align="left" colspan="2">
          Major release adding EasyMega support.
@@ -43,7 +45,7 @@
          Updated for software version 0.9.  Note that 0.9 represents a
          telemetry format change, meaning both ends of a link (TeleMetrum and
          TeleDongle) must be updated or communications will fail.
-       </td></tr><tr><td align="left">Revision 0.8</td><td align="left">24 November 2010</td></tr><tr><td align="left" colspan="2">Updated for software version 0.8 </td></tr></table></div></div></div><hr></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a name="idp31667056"></a>Acknowledgments</h1></div></div></div><p>
+       </td></tr><tr><td align="left">Revision 0.8</td><td align="left">24 November 2010</td></tr><tr><td align="left" colspan="2">Updated for software version 0.8 </td></tr></table></div></div></div><hr></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789030789808"></a>Acknowledgments</h1></div></div></div><p>
       Thanks to Bob Finch, W9YA, NAR 12965, TRA 12350 for writing &#8220;The
       Mere-Mortals Quick Start/Usage Guide to the Altus Metrum Starter
       Kit&#8221; which formed the basis of the original Getting Started chapter 
@@ -66,22 +68,22 @@ NAR
 Keith Packard, KD7SQG<br>
 NAR #88757, TRA #12200<br>
       </p></div><p>
-    </p></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="#idp31483344">1. Introduction and Overview</a></span></dt><dt><span class="chapter"><a href="#idp31491792">2. Getting Started</a></span></dt><dt><span class="chapter"><a href="#idp31501248">3. Handling Precautions</a></span></dt><dt><span class="chapter"><a href="#idp31506736">4. Altus Metrum Hardware</a></span></dt><dd><dl><dt><span class="section"><a href="#idp31507408">1. General Usage Instructions</a></span></dt><dd><dl><dt><span class="section"><a href="#idp31509696">1.1. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#idp31512656">1.2. Hooking Up Pyro Charges</a></span></dt><dt><span class="section"><a href="#idp31514736">1.3. Hooking Up a Power Switch</a></span></dt><dt><span class="section"><a href="#idp31517952">1.4. Using a Separate Pyro Battery</a></span></dt><dt><span class="section"><a href="#idp36999216">1.5. Using a Different Kind of Battery</a></span></dt></dl></dd><dt><span class="section"><a href="#idp34636960">2. Specifications</a></span></dt><dt><span class="section"><a href="#idp37090320">3. TeleMetrum</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37095216">3.1. TeleMetrum Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37114432">3.2. Using a Separate Pyro Battery with TeleMetrum</a></span></dt><dt><span class="section"><a href="#idp37117680">3.3. Using an Active Switch with TeleMetrum</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37119808">4. TeleMini v1.0</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37124704">4.1. TeleMini v1.0 Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37144048">4.2. Using a Separate Pyro Battery with TeleMini v1.0</a></span></dt><dt><span class="section"><a href="#idp37147424">4.3. Using an Active Switch with TeleMini v1.0</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37149632">5. TeleMini v2.0</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37153648">5.1. TeleMini v2.0 Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37176032">5.2. Using a Separate Pyro Battery with TeleMini v2.0</a></span></dt><dt><span class="section"><a href="#idp37179232">5.3. Using an Active Switch with TeleMini v2.0</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37181328">6. EasyMini</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37185184">6.1. EasyMini Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37207568">6.2. Using a Separate Pyro Battery with EasyMini</a></span></dt><dt><span class="section"><a href="#idp37210752">6.3. Using an Active Switch with EasyMini</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37212848">7. TeleMega</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37216816">7.1. TeleMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37254320">7.2. Using a Separate Pyro Battery with TeleMega</a></span></dt><dt><span class="section"><a href="#idp37255920">7.3. Using Only One Battery With TeleMega</a></span></dt><dt><span class="section"><a href="#idp37257840">7.4. Using an Active Switch with TeleMega</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37259888">8. EasyMega</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37263856">8.1. EasyMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37301456">8.2. Using a Separate Pyro Battery with EasyMega</a></span></dt><dt><span class="section"><a href="#idp37303056">8.3. Using Only One Battery With EasyMega</a></span></dt><dt><span class="section"><a href="#idp37304976">8.4. Using an Active Switch with EasyMega</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37307024">9. Flight Data Recording</a></span></dt><dt><span class="section"><a href="#idp37337792">10. Installation</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp37344528">5. System Operation</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37345168">1. Firmware Modes </a></span></dt><dt><span class="section"><a href="#idp37413664">2. GPS </a></span></dt><dt><span class="section"><a href="#idp37416448">3. Controlling An Altimeter Over The Radio Link</a></span></dt><dt><span class="section"><a href="#idp37427744">4. Ground Testing </a></span></dt><dt><span class="section"><a href="#idp37430496">5. Radio Link </a></span></dt><dt><span class="section"><a href="#idp37434496">6. APRS</a></span></dt><dt><span class="section"><a href="#idp37458816">7. Configurable Parameters</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37460736">7.1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idp37462784">7.2. Callsign</a></span></dt><dt><span class="section"><a href="#idp37464320">7.3. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idp37465616">7.4. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#idp37467184">7.5. APRS Interval</a></span></dt><dt><span class="section"><a href="#idp37468656">7.6. APRS SSID</a></span></dt><dt><span class="section"><a href="#idp37470000">7.7. Apogee Delay</a></span></dt><dt><span class="section"><a href="#idp37472592">7.8. Apogee Lockout</a></span></dt><dt><span class="section"><a href="#idp37474320">7.9. Main Deployment Altitude</a></span></dt><dt><span class="section"><a href="#idp37476016">7.10. Maximum Flight Log</a></span></dt><dt><span class="section"><a href="#idp37478160">7.11. Ignite Mode</a></span></dt><dt><span class="section"><a href="#idp37480272">7.12. Pad Orientation</a></span></dt><dt><span class="section"><a href="#idp37481968">7.13. Configurable Pyro Channels</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idp37504576">6. AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37508192">1. Monitor Flight</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37521120">1.1. Launch Pad</a></span></dt><dt><span class="section"><a href="#idp37536752">1.2. Ascent</a></span></dt><dt><span class="section"><a href="#idp37542208">1.3. Descent</a></span></dt><dt><span class="section"><a href="#idp37549072">1.4. Landed</a></span></dt><dt><span class="section"><a href="#idp37555504">1.5. Table</a></span></dt><dt><span class="section"><a href="#idp37559088">1.6. Site Map</a></span></dt><dt><span class="section"><a href="#idp37565408">1.7. Ignitor</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37569184">2. Save Flight Data</a></span></dt><dt><span class="section"><a href="#idp37573136">3. Replay Flight</a></span></dt><dt><span class="section"><a href="#idp37575168">4. Graph Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37577552">4.1. Flight Graph</a></span></dt><dt><span class="section"><a href="#idp37582000">4.2. Configure Graph</a></span></dt><dt><span class="section"><a href="#idp37585664">4.3. Flight Statistics</a></span></dt><dt><span class="section"><a href="#idp37589184">4.4. Map</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37593040">5. Export Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37594608">5.1. Comma Separated Value Format</a></span></dt><dt><span class="section"><a href="#idp37596960">5.2. Keyhole Markup Language (for Google Earth)</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37598448">6. Configure Altimeter</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37610752">6.1. Main Deploy Altitude</a></span></dt><dt><span class="section"><a href="#idp37612320">6.2. Apogee Delay</a></span></dt><dt><span class="section"><a href="#idp37613936">6.3. Apogee Lockoug</a></span></dt><dt><span class="section"><a href="#idp37616240">6.4. Frequency</a></span></dt><dt><span class="section"><a href="#idp37617744">6.5. RF Calibration</a></span></dt><dt><span class="section"><a href="#idp37619392">6.6. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idp37620688">6.7. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#idp37622256">6.8. APRS Interval</a></span></dt><dt><span class="section"><a href="#idp37623824">6.9. APRS SSID</a></span></dt><dt><span class="section"><a href="#idp37625152">6.10. Callsign</a></span></dt><dt><span class="section"><a href="#idp37626464">6.11. Maximum Flight Log Size</a></span></dt><dt><span class="section"><a href="#idp37627904">6.12. Ignitor Firing Mode</a></span></dt><dt><span class="section"><a href="#idp37634816">6.13. Pad Orientation</a></span></dt><dt><span class="section"><a href="#idp37640048">6.14. Beeper Frequency</a></span></dt><dt><span class="section"><a href="#idp37641504">6.15. Configure Pyro Channels</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37647888">7. Configure AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37651392">7.1. Voice Settings</a></span></dt><dt><span class="section"><a href="#idp37656416">7.2. Log Directory</a></span></dt><dt><span class="section"><a href="#idp37658416">7.3. Callsign</a></span></dt><dt><span class="section"><a href="#idp37660656">7.4. Imperial Units</a></span></dt><dt><span class="section"><a href="#idp37662160">7.5. Font Size</a></span></dt><dt><span class="section"><a href="#idp37663440">7.6. Serial Debug</a></span></dt><dt><span class="section"><a href="#idp37664944">7.7. Manage Frequencies</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37666576">8. Configure Groundstation</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37678080">8.1. Frequency</a></span></dt><dt><span class="section"><a href="#idp37679648">8.2. RF Calibration</a></span></dt><dt><span class="section"><a href="#idp37681168">8.3. Telemetry Rate</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37682640">9. Flash Image</a></span></dt><dt><span class="section"><a href="#idp37684304">10. Fire Igniter</a></span></dt><dt><span class="section"><a href="#idp37689936">11. Scan Channels</a></span></dt><dt><span class="section"><a href="#idp37693808">12. Load Maps</a></span></dt><dt><span class="section"><a href="#idp37707856">13. Monitor Idle</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp37709952">7. AltosDroid</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37712336">1. Installing AltosDroid</a></span></dt><dt><span class="section"><a href="#idp37714272">2. Connecting to TeleBT</a></span></dt><dt><span class="section"><a href="#idp37716272">3. Configuring AltosDroid</a></span></dt><dt><span class="section"><a href="#idp37717728">4. AltosDroid Flight Monitoring</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37719040">4.1. Pad</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37732592">5. Downloading Flight Logs</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp37734256">8. Using Altus Metrum Products</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37734896">1. Being Legal</a></span></dt><dt><span class="section"><a href="#idp37736800">2. In the Rocket</a></span></dt><dt><span class="section"><a href="#idp37739328">3. On the Ground</a></span></dt><dt><span class="section"><a href="#idp37753120">4. Data Analysis</a></span></dt><dt><span class="section"><a href="#idp37756432">5. Future Plans</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp37760272">9. Altimeter Installation Recommendations</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37761728">1. Mounting the Altimeter</a></span></dt><dt><span class="section"><a href="#idp37766560">2. Dealing with the Antenna</a></span></dt><dt><span class="section"><a href="#idp37772128">3. Preserving GPS Reception</a></span></dt><dt><span class="section"><a href="#idp37776912">4. Radio Frequency Interference</a></span></dt><dt><span class="section"><a href="#idp37784480">5. The Barometric Sensor</a></span></dt><dt><span class="section"><a href="#idp37787280">6. Ground Testing</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp37790448">10. Updating Device Firmware</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37794528">1. 
+    </p></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="#idm46789030785712">1. Introduction and Overview</a></span></dt><dt><span class="chapter"><a href="#idm46789030776640">2. Getting Started</a></span></dt><dt><span class="chapter"><a href="#idm46789027405184">3. Handling Precautions</a></span></dt><dt><span class="chapter"><a href="#idm46789028904096">4. Altus Metrum Hardware</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789028066704">1. General Usage Instructions</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789028582128">1.1. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#idm46789027787840">1.2. Hooking Up Pyro Charges</a></span></dt><dt><span class="section"><a href="#idm46789027264112">1.3. Hooking Up a Power Switch</a></span></dt><dt><span class="section"><a href="#idm46789030826864">1.4. Using a Separate Pyro Battery</a></span></dt><dt><span class="section"><a href="#idm46789030824352">1.5. Using a Different Kind of Battery</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025273872">2. Specifications</a></span></dt><dt><span class="section"><a href="#idm46789025180848">3. TeleMetrum</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025175952">3.1. TeleMetrum Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025156736">3.2. Using a Separate Pyro Battery with TeleMetrum</a></span></dt><dt><span class="section"><a href="#idm46789025153488">3.3. Using an Active Switch with TeleMetrum</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025151360">4. TeleMini v1.0</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025146464">4.1. TeleMini v1.0 Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025127120">4.2. Using a Separate Pyro Battery with TeleMini v1.0</a></span></dt><dt><span class="section"><a href="#idm46789025123744">4.3. Using an Active Switch with TeleMini v1.0</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025121536">5. TeleMini v2.0</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025117520">5.1. TeleMini v2.0 Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025095136">5.2. Using a Separate Pyro Battery with TeleMini v2.0</a></span></dt><dt><span class="section"><a href="#idm46789025091936">5.3. Using an Active Switch with TeleMini v2.0</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025089840">6. EasyMini</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025085984">6.1. EasyMini Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025063600">6.2. Using a Separate Pyro Battery with EasyMini</a></span></dt><dt><span class="section"><a href="#idm46789025060416">6.3. Using an Active Switch with EasyMini</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025058320">7. TeleMega</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025054352">7.1. TeleMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025016848">7.2. Using a Separate Pyro Battery with TeleMega</a></span></dt><dt><span class="section"><a href="#idm46789025015248">7.3. Using Only One Battery With TeleMega</a></span></dt><dt><span class="section"><a href="#idm46789025013328">7.4. Using an Active Switch with TeleMega</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025011280">8. EasyMega</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025007312">8.1. EasyMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789024969808">8.2. Using a Separate Pyro Battery with EasyMega</a></span></dt><dt><span class="section"><a href="#idm46789024968208">8.3. Using Only One Battery With EasyMega</a></span></dt><dt><span class="section"><a href="#idm46789024966288">8.4. Using an Active Switch with EasyMega</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024964240">9. Flight Data Recording</a></span></dt><dt><span class="section"><a href="#idm46789024933472">10. Installation</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46789024926304">5. System Operation</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024925664">1. Firmware Modes </a></span></dt><dt><span class="section"><a href="#idm46789024857168">2. GPS </a></span></dt><dt><span class="section"><a href="#idm46789024854384">3. Controlling An Altimeter Over The Radio Link</a></span></dt><dt><span class="section"><a href="#idm46789024843088">4. Ground Testing </a></span></dt><dt><span class="section"><a href="#idm46789024840336">5. Radio Link </a></span></dt><dt><span class="section"><a href="#idm46789024836336">6. APRS</a></span></dt><dt><span class="section"><a href="#idm46789024812016">7. Configurable Parameters</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024810096">7.1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024808048">7.2. Callsign</a></span></dt><dt><span class="section"><a href="#idm46789024806512">7.3. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idm46789024805216">7.4. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#idm46789024803648">7.5. APRS Interval</a></span></dt><dt><span class="section"><a href="#idm46789024802176">7.6. APRS SSID</a></span></dt><dt><span class="section"><a href="#idm46789024800832">7.7. Apogee Delay</a></span></dt><dt><span class="section"><a href="#idm46789024798240">7.8. Apogee Lockout</a></span></dt><dt><span class="section"><a href="#idm46789024796512">7.9. Main Deployment Altitude</a></span></dt><dt><span class="section"><a href="#idm46789024794816">7.10. Maximum Flight Log</a></span></dt><dt><span class="section"><a href="#idm46789024792672">7.11. Ignite Mode</a></span></dt><dt><span class="section"><a href="#idm46789024790560">7.12. Pad Orientation</a></span></dt><dt><span class="section"><a href="#idm46789024788864">7.13. Configurable Pyro Channels</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idm46789024766256">6. AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024762640">1. Monitor Flight</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024749312">1.1. Launch Pad</a></span></dt><dt><span class="section"><a href="#idm46789024733680">1.2. Ascent</a></span></dt><dt><span class="section"><a href="#idm46789024728224">1.3. Descent</a></span></dt><dt><span class="section"><a href="#idm46789024721360">1.4. Landed</a></span></dt><dt><span class="section"><a href="#idm46789024714928">1.5. Table</a></span></dt><dt><span class="section"><a href="#idm46789024711344">1.6. Site Map</a></span></dt><dt><span class="section"><a href="#idm46789024704592">1.7. Ignitor</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024700816">2. Save Flight Data</a></span></dt><dt><span class="section"><a href="#idm46789024696864">3. Replay Flight</a></span></dt><dt><span class="section"><a href="#idm46789024694832">4. Graph Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024692448">4.1. Flight Graph</a></span></dt><dt><span class="section"><a href="#idm46789024688000">4.2. Configure Graph</a></span></dt><dt><span class="section"><a href="#idm46789024684336">4.3. Flight Statistics</a></span></dt><dt><span class="section"><a href="#idm46789024680816">4.4. Map</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024676960">5. Export Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024675392">5.1. Comma Separated Value Format</a></span></dt><dt><span class="section"><a href="#idm46789024673040">5.2. Keyhole Markup Language (for Google Earth)</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024671552">6. Configure Altimeter</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024659248">6.1. Main Deploy Altitude</a></span></dt><dt><span class="section"><a href="#idm46789024657680">6.2. Apogee Delay</a></span></dt><dt><span class="section"><a href="#idm46789024656064">6.3. Apogee Lockoug</a></span></dt><dt><span class="section"><a href="#idm46789024653760">6.4. Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024652256">6.5. RF Calibration</a></span></dt><dt><span class="section"><a href="#idm46789024650608">6.6. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idm46789024649312">6.7. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#idm46789024647744">6.8. APRS Interval</a></span></dt><dt><span class="section"><a href="#idm46789024646176">6.9. APRS SSID</a></span></dt><dt><span class="section"><a href="#idm46789024644848">6.10. Callsign</a></span></dt><dt><span class="section"><a href="#idm46789024643536">6.11. Maximum Flight Log Size</a></span></dt><dt><span class="section"><a href="#idm46789024642096">6.12. Ignitor Firing Mode</a></span></dt><dt><span class="section"><a href="#idm46789024635184">6.13. Pad Orientation</a></span></dt><dt><span class="section"><a href="#idm46789024629952">6.14. Beeper Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024628496">6.15. Configure Pyro Channels</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024622112">7. Configure AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024618608">7.1. Voice Settings</a></span></dt><dt><span class="section"><a href="#idm46789024613584">7.2. Log Directory</a></span></dt><dt><span class="section"><a href="#idm46789024611584">7.3. Callsign</a></span></dt><dt><span class="section"><a href="#idm46789024609344">7.4. Imperial Units</a></span></dt><dt><span class="section"><a href="#idm46789024607840">7.5. Font Size</a></span></dt><dt><span class="section"><a href="#idm46789024606560">7.6. Serial Debug</a></span></dt><dt><span class="section"><a href="#idm46789024605056">7.7. Manage Frequencies</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024603424">8. Configure Groundstation</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024592304">8.1. Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024590736">8.2. RF Calibration</a></span></dt><dt><span class="section"><a href="#idm46789024589216">8.3. Telemetry Rate</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024587744">9. Flash Image</a></span></dt><dt><span class="section"><a href="#idm46789024586080">10. Fire Igniter</a></span></dt><dt><span class="section"><a href="#idm46789024580448">11. Scan Channels</a></span></dt><dt><span class="section"><a href="#idm46789024576576">12. Load Maps</a></span></dt><dt><span class="section"><a href="#idm46789024562512">13. Monitor Idle</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46789024557472">7. AltosDroid</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024554880">1. Installing AltosDroid</a></span></dt><dt><span class="section"><a href="#idm46789024552944">2. Connecting to TeleBT over Bluetooth&#8482;</a></span></dt><dt><span class="section"><a href="#idm46789024550848">3. Connecting to TeleDongle or TeleBT over USB</a></span></dt><dt><span class="section"><a href="#idm46789024549264">4. Configuring AltosDroid</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024548128">4.1. Select radio frequency</a></span></dt><dt><span class="section"><a href="#idm46789024546816">4.2. Select data rate</a></span></dt><dt><span class="section"><a href="#idm46789024545424">4.3. Change units</a></span></dt><dt><span class="section"><a href="#idm46789024544272">4.4. Load maps</a></span></dt><dt><span class="section"><a href="#idm46789024542928">4.5. Map type</a></span></dt><dt><span class="section"><a href="#idm46789024541440">4.6. Toggle Online/Offline maps</a></span></dt><dt><span class="section"><a href="#idm46789024540032">4.7. Select Tracker</a></span></dt><dt><span class="section"><a href="#idm46789024538592">4.8. Delete Track</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024537232">5. AltosDroid Flight Monitoring</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024535920">5.1. Pad</a></span></dt><dt><span class="section"><a href="#idm46789024518464">5.2. Flight</a></span></dt><dt><span class="section"><a href="#idm46789024497344">5.3. Recover</a></span></dt><dt><span class="section"><a href="#idm46789024482000">5.4. Map</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024478928">6. Downloading Flight Logs</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46789024477280">8. Using Altus Metrum Products</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024476640">1. Being Legal</a></span></dt><dt><span class="section"><a href="#idm46789024474736">2. In the Rocket</a></span></dt><dt><span class="section"><a href="#idm46789024472208">3. On the Ground</a></span></dt><dt><span class="section"><a href="#idm46789024458400">4. Data Analysis</a></span></dt><dt><span class="section"><a href="#idm46789024455856">5. Future Plans</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46789024451664">9. Altimeter Installation Recommendations</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024450208">1. Mounting the Altimeter</a></span></dt><dt><span class="section"><a href="#idm46789024445376">2. Dealing with the Antenna</a></span></dt><dt><span class="section"><a href="#idm46789024439280">3. Preserving GPS Reception</a></span></dt><dt><span class="section"><a href="#idm46789024434496">4. Radio Frequency Interference</a></span></dt><dt><span class="section"><a href="#idm46789024426928">5. The Barometric Sensor</a></span></dt><dt><span class="section"><a href="#idm46789024424128">6. Ground Testing</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46789024420960">10. Updating Device Firmware</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024416880">1. 
        Updating TeleMega, TeleMetrum v2, EasyMega, EasyMini or
        TeleDongle v3 Firmware
-      </a></span></dt><dd><dl><dt><span class="section"><a href="#idp37803664">1.1. Recovering From Self-Flashing Failure</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37824016">2. Pair Programming</a></span></dt><dt><span class="section"><a href="#idp37825472">3. Updating TeleMetrum v1.x Firmware</a></span></dt><dt><span class="section"><a href="#idp37838736">4. Updating TeleMini Firmware</a></span></dt><dt><span class="section"><a href="#idp37852352">5. Updating TeleDongle v0.2 Firmware</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp37869568">11. Hardware Specifications</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37870208">1. 
+      </a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024407744">1.1. Recovering From Self-Flashing Failure</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024387392">2. Pair Programming</a></span></dt><dt><span class="section"><a href="#idm46789024385936">3. Updating TeleMetrum v1.x Firmware</a></span></dt><dt><span class="section"><a href="#idm46789024372672">4. Updating TeleMini Firmware</a></span></dt><dt><span class="section"><a href="#idm46789024359056">5. Updating TeleDongle v0.2 Firmware</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46789024342288">11. Hardware Specifications</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024341648">1. 
        TeleMega Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37881680">2. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024330176">2. 
        EasyMega Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37891424">3. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024320432">3. 
        TeleMetrum v2 Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37901984">4. TeleMetrum v1 Specifications</a></span></dt><dt><span class="section"><a href="#idp37912544">5. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024309872">4. TeleMetrum v1 Specifications</a></span></dt><dt><span class="section"><a href="#idm46789024299312">5. 
        TeleMini v2.0 Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37921376">6. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024290480">6. 
        TeleMini v1.0 Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37930176">7. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024281680">7. 
        EasyMini Specifications
-      </a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp37938288">12. FAQ</a></span></dt><dt><span class="appendix"><a href="#idp37947888">A. Notes for Older Software</a></span></dt><dt><span class="appendix"><a href="#idp37969232">B. Drill Templates</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37970400">1. TeleMega template</a></span></dt><dt><span class="section"><a href="#idp37987088">2. EasyMega template</a></span></dt><dt><span class="section"><a href="#idp37991472">3. TeleMetrum template</a></span></dt><dt><span class="section"><a href="#idp37995856">4. TeleMini v2/EasyMini template</a></span></dt><dt><span class="section"><a href="#idp38000256">5. TeleMini v1 template</a></span></dt></dl></dd><dt><span class="appendix"><a href="#idp38004768">C. Calibration</a></span></dt><dd><dl><dt><span class="section"><a href="#idp38006320">1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idp38011520">2. TeleMetrum, TeleMega and EasyMega Accelerometers</a></span></dt></dl></dd><dt><span class="appendix"><a href="#idp38016624">D. Igniter Current</a></span></dt><dd><dl><dt><span class="section"><a href="#idp38017888">1. Current Products</a></span></dt><dt><span class="section"><a href="#idp38021328">2. Version 1 Products</a></span></dt></dl></dd><dt><span class="appendix"><a href="#idp38023664">E. Release Notes</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>4.1. <a href="#idp33882000">Altus Metrum Electronics</a></dt><dt>4.2. <a href="#idp37049568">Altus Metrum Boards</a></dt><dt>4.3. <a href="#idp37096528">TeleMetrum Screw Terminals</a></dt><dt>4.4. <a href="#idp37126144">TeleMini v1.0 Connections</a></dt><dt>4.5. <a href="#idp37155056">TeleMini v2.0 Connections</a></dt><dt>4.6. <a href="#idp37186592">EasyMini Connections</a></dt><dt>4.7. <a href="#idp37217984">TeleMega Screw Terminals</a></dt><dt>4.8. <a href="#idp37265024">EasyMega Screw Terminals</a></dt><dt>4.9. <a href="#idp37308432">Data Storage on Altus Metrum altimeters</a></dt><dt>5.1. <a href="#idp37350528">AltOS Modes</a></dt><dt>5.2. <a href="#idp37387712">Pad/Idle Indications</a></dt><dt>5.3. <a href="#idp37438304">Altus Metrum APRS Comments</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp31483344"></a>Chapter 1. Introduction and Overview</h1></div></div></div><p>
+      </a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm46789024273568">12. FAQ</a></span></dt><dt><span class="appendix"><a href="#idm46789024264720">A. Notes for Older Software</a></span></dt><dt><span class="appendix"><a href="#idm46789024241856">B. Drill Templates</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024240688">1. TeleMega template</a></span></dt><dt><span class="section"><a href="#idm46789024224000">2. EasyMega template</a></span></dt><dt><span class="section"><a href="#idm46789024219616">3. TeleMetrum template</a></span></dt><dt><span class="section"><a href="#idm46789024215232">4. TeleMini v2/EasyMini template</a></span></dt><dt><span class="section"><a href="#idm46789024210832">5. TeleMini v1 template</a></span></dt></dl></dd><dt><span class="appendix"><a href="#idm46789024206320">C. Calibration</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024204768">1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024200224">2. TeleMetrum, TeleMega and EasyMega Accelerometers</a></span></dt></dl></dd><dt><span class="appendix"><a href="#idm46789024194544">D. Igniter Current</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024193280">1. Current Products</a></span></dt><dt><span class="section"><a href="#idm46789024189840">2. Version 1 Products</a></span></dt></dl></dd><dt><span class="appendix"><a href="#idm46789024187504">E. Release Notes</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>4.1. <a href="#idm46789025272848">Altus Metrum Electronics</a></dt><dt>4.2. <a href="#idm46789025221600">Altus Metrum Boards</a></dt><dt>4.3. <a href="#idm46789025174640">TeleMetrum Screw Terminals</a></dt><dt>4.4. <a href="#idm46789025145024">TeleMini v1.0 Connections</a></dt><dt>4.5. <a href="#idm46789025116112">TeleMini v2.0 Connections</a></dt><dt>4.6. <a href="#idm46789025084576">EasyMini Connections</a></dt><dt>4.7. <a href="#idm46789025053184">TeleMega Screw Terminals</a></dt><dt>4.8. <a href="#idm46789025006144">EasyMega Screw Terminals</a></dt><dt>4.9. <a href="#idm46789024962832">Data Storage on Altus Metrum altimeters</a></dt><dt>5.1. <a href="#idm46789024920304">AltOS Modes</a></dt><dt>5.2. <a href="#idm46789024883120">Pad/Idle Indications</a></dt><dt>5.3. <a href="#idm46789024832528">Altus Metrum APRS Comments</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789030785712"></a>Chapter 1. Introduction and Overview</h1></div></div></div><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
@@ -134,7 +136,7 @@ NAR
       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 name="idp31491792"></a>Chapter 2. Getting Started</h1></div></div></div><p>
+    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789030776640"></a>Chapter 2. Getting Started</h1></div></div></div><p>
       The first thing to do after you check the inventory of parts in your
       &#8220;starter kit&#8221; is to charge the battery.
     </p><p>
@@ -204,7 +206,7 @@ NAR
       over USB with your laptop computer; it acts exactly like a
       TeleDongle. Anywhere this manual talks about TeleDongle, you can
       also read that as 'and TeleBT when connected via USB'.
-    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp31501248"></a>Chapter 3. Handling Precautions</h1></div></div></div><p>
+    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789027405184"></a>Chapter 3. Handling Precautions</h1></div></div></div><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 
@@ -243,7 +245,7 @@ NAR
       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="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp31506736"></a>Chapter 4. Altus Metrum Hardware</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp31507408">1. General Usage Instructions</a></span></dt><dd><dl><dt><span class="section"><a href="#idp31509696">1.1. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#idp31512656">1.2. Hooking Up Pyro Charges</a></span></dt><dt><span class="section"><a href="#idp31514736">1.3. Hooking Up a Power Switch</a></span></dt><dt><span class="section"><a href="#idp31517952">1.4. Using a Separate Pyro Battery</a></span></dt><dt><span class="section"><a href="#idp36999216">1.5. Using a Different Kind of Battery</a></span></dt></dl></dd><dt><span class="section"><a href="#idp34636960">2. Specifications</a></span></dt><dt><span class="section"><a href="#idp37090320">3. TeleMetrum</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37095216">3.1. TeleMetrum Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37114432">3.2. Using a Separate Pyro Battery with TeleMetrum</a></span></dt><dt><span class="section"><a href="#idp37117680">3.3. Using an Active Switch with TeleMetrum</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37119808">4. TeleMini v1.0</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37124704">4.1. TeleMini v1.0 Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37144048">4.2. Using a Separate Pyro Battery with TeleMini v1.0</a></span></dt><dt><span class="section"><a href="#idp37147424">4.3. Using an Active Switch with TeleMini v1.0</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37149632">5. TeleMini v2.0</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37153648">5.1. TeleMini v2.0 Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37176032">5.2. Using a Separate Pyro Battery with TeleMini v2.0</a></span></dt><dt><span class="section"><a href="#idp37179232">5.3. Using an Active Switch with TeleMini v2.0</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37181328">6. EasyMini</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37185184">6.1. EasyMini Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37207568">6.2. Using a Separate Pyro Battery with EasyMini</a></span></dt><dt><span class="section"><a href="#idp37210752">6.3. Using an Active Switch with EasyMini</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37212848">7. TeleMega</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37216816">7.1. TeleMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37254320">7.2. Using a Separate Pyro Battery with TeleMega</a></span></dt><dt><span class="section"><a href="#idp37255920">7.3. Using Only One Battery With TeleMega</a></span></dt><dt><span class="section"><a href="#idp37257840">7.4. Using an Active Switch with TeleMega</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37259888">8. EasyMega</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37263856">8.1. EasyMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#idp37301456">8.2. Using a Separate Pyro Battery with EasyMega</a></span></dt><dt><span class="section"><a href="#idp37303056">8.3. Using Only One Battery With EasyMega</a></span></dt><dt><span class="section"><a href="#idp37304976">8.4. Using an Active Switch with EasyMega</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37307024">9. Flight Data Recording</a></span></dt><dt><span class="section"><a href="#idp37337792">10. Installation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp31507408"></a>1. General Usage Instructions</h2></div></div></div><p>
+    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789028904096"></a>Chapter 4. Altus Metrum Hardware</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789028066704">1. General Usage Instructions</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789028582128">1.1. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#idm46789027787840">1.2. Hooking Up Pyro Charges</a></span></dt><dt><span class="section"><a href="#idm46789027264112">1.3. Hooking Up a Power Switch</a></span></dt><dt><span class="section"><a href="#idm46789030826864">1.4. Using a Separate Pyro Battery</a></span></dt><dt><span class="section"><a href="#idm46789030824352">1.5. Using a Different Kind of Battery</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025273872">2. Specifications</a></span></dt><dt><span class="section"><a href="#idm46789025180848">3. TeleMetrum</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025175952">3.1. TeleMetrum Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025156736">3.2. Using a Separate Pyro Battery with TeleMetrum</a></span></dt><dt><span class="section"><a href="#idm46789025153488">3.3. Using an Active Switch with TeleMetrum</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025151360">4. TeleMini v1.0</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025146464">4.1. TeleMini v1.0 Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025127120">4.2. Using a Separate Pyro Battery with TeleMini v1.0</a></span></dt><dt><span class="section"><a href="#idm46789025123744">4.3. Using an Active Switch with TeleMini v1.0</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025121536">5. TeleMini v2.0</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025117520">5.1. TeleMini v2.0 Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025095136">5.2. Using a Separate Pyro Battery with TeleMini v2.0</a></span></dt><dt><span class="section"><a href="#idm46789025091936">5.3. Using an Active Switch with TeleMini v2.0</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025089840">6. EasyMini</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025085984">6.1. EasyMini Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025063600">6.2. Using a Separate Pyro Battery with EasyMini</a></span></dt><dt><span class="section"><a href="#idm46789025060416">6.3. Using an Active Switch with EasyMini</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025058320">7. TeleMega</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025054352">7.1. TeleMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789025016848">7.2. Using a Separate Pyro Battery with TeleMega</a></span></dt><dt><span class="section"><a href="#idm46789025015248">7.3. Using Only One Battery With TeleMega</a></span></dt><dt><span class="section"><a href="#idm46789025013328">7.4. Using an Active Switch with TeleMega</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789025011280">8. EasyMega</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789025007312">8.1. EasyMega Screw Terminals</a></span></dt><dt><span class="section"><a href="#idm46789024969808">8.2. Using a Separate Pyro Battery with EasyMega</a></span></dt><dt><span class="section"><a href="#idm46789024968208">8.3. Using Only One Battery With EasyMega</a></span></dt><dt><span class="section"><a href="#idm46789024966288">8.4. Using an Active Switch with EasyMega</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024964240">9. Flight Data Recording</a></span></dt><dt><span class="section"><a href="#idm46789024933472">10. Installation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789028066704"></a>1. General Usage Instructions</h2></div></div></div><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.
@@ -253,7 +255,7 @@ NAR
        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 class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp31509696"></a>1.1. Hooking Up Lithium Polymer Batteries</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789028582128"></a>1.1. Hooking Up Lithium Polymer Batteries</h3></div></div></div><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
@@ -267,7 +269,7 @@ NAR
          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 class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp31512656"></a>1.2. Hooking Up Pyro Charges</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789027787840"></a>1.2. Hooking Up Pyro Charges</h3></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
          wires into a screw terminal or connect leads from pyro
@@ -278,13 +280,13 @@ NAR
          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><h3 class="title"><a name="idp31514736"></a>1.3. Hooking Up a Power Switch</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789027264112"></a>1.3. Hooking Up a Power Switch</h3></div></div></div><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 class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp31516112"></a>1.3.1. Using an External Active Switch Circuit</h4></div></div></div><p>
+       </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm46789027475824"></a>1.3.1. Using an External Active Switch Circuit</h4></div></div></div><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
@@ -293,7 +295,7 @@ NAR
            hook these up for each flight computer below. The follow
            the instructions that come with your active switch to
            connect it up.
-         </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp31517952"></a>1.4. Using a Separate Pyro Battery</h3></div></div></div><p>
+         </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789030826864"></a>1.4. Using a Separate Pyro Battery</h3></div></div></div><p>
          As mentioned above in the section on hooking up pyro
          charges, one lead for each of the pyro charges is connected
          through the power switch directly to the positive battery
@@ -310,7 +312,7 @@ NAR
          circuit between the negative pyro terminal and the ground
          terminal, firing the igniter. Specific instructions on how
          to hook this up will be found in each section below.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp36999216"></a>1.5. Using a Different Kind of Battery</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789030824352"></a>1.5. Using a Different Kind of Battery</h3></div></div></div><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
@@ -318,10 +320,10 @@ NAR
          and must only be powered by a lithium polymer battery. Find
          instructions on how to use other batteries in the EasyMini
          and TeleMini sections below.
-       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp34636960"></a>2. Specifications</h2></div></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789025273872"></a>2. Specifications</h2></div></div></div><p>
        Here's the full set of Altus Metrum products, both in
        production and retired.
-      </p><div class="table"><a name="idp33882000"></a><p class="title"><b>Table 4.1. Altus Metrum Electronics</b></p><div class="table-contents"><table summary="Altus Metrum Electronics" border="1"><colgroup><col align="center" class="Device"><col align="center" class="Barometer"><col align="center" class="Z-axis accelerometer"><col align="center" class="GPS"><col align="center" class="3D sensors"><col align="center" class="Storage"><col align="center" class="RF"><col align="center" class="Battery"></colgroup><thead><tr><th align="center">Device</th><th align="center">Barometer</th><th align="center">Z-axis accelerometer</th><th align="center">GPS</th><th align="center">3D sensors</th><th align="center">Storage</th><th align="center">RF Output</th><th align="center">Battery</th></tr></thead><tbody><tr><td align="center">TeleMetrum v1.0</td><td align="center"><p>MP3H6115 10km (33k')</p></td><td align="center"><p>MMA2202 50g</p></td><td align="center">SkyTraq</td><td align="center">-</td><td align="center">1MB</td><td align="center">10mW</td><td align="center">3.7V</td></tr><tr><td align="center">TeleMetrum v1.1</td><td align="center"><p>MP3H6115 10km (33k')</p></td><td align="center"><p>MMA2202 50g</p></td><td align="center">SkyTraq</td><td align="center">-</td><td align="center">2MB</td><td align="center">10mW</td><td align="center">3.7V</td></tr><tr><td align="center">TeleMetrum v1.2</td><td align="center"><p>MP3H6115 10km (33k')</p></td><td align="center"><p>ADXL78 70g</p></td><td align="center">SkyTraq</td><td align="center">-</td><td align="center">2MB</td><td align="center">10mW</td><td align="center">3.7V</td></tr><tr><td align="center">TeleMetrum v2.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center"><p>MMA6555 102g</p></td><td align="center">uBlox Max-7Q</td><td align="center">-</td><td align="center">8MB</td><td align="center">40mW</td><td align="center">3.7V</td></tr><tr><td align="center"><p>TeleMini v1.0</p></td><td align="center"><p>MP3H6115 10km (33k')</p></td><td align="center">-</td><td align="center">-</td><td align="center">-</td><td align="center">5kB</td><td align="center">10mW</td><td align="center">3.7V</td></tr><tr><td align="center">TeleMini v2.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center">-</td><td align="center">-</td><td align="center">-</td><td align="center">1MB</td><td align="center">10mW</td><td align="center">3.7-12V</td></tr><tr><td align="center">EasyMini v1.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center">-</td><td align="center">-</td><td align="center">-</td><td align="center">1MB</td><td align="center">-</td><td align="center">3.7-12V</td></tr><tr><td align="center">TeleMega v1.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center"><p>MMA6555 102g</p></td><td align="center">uBlox Max-7Q</td><td align="center"><p>MPU6000 HMC5883</p></td><td align="center">8MB</td><td align="center">40mW</td><td align="center">3.7V</td></tr><tr><td align="center">EasyMega v1.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center"><p>MMA6555 102g</p></td><td align="center">-</td><td align="center"><p>MPU6000 HMC5883</p></td><td align="center">8MB</td><td align="center">-</td><td align="center">3.7V</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="idp37049568"></a><p class="title"><b>Table 4.2. Altus Metrum Boards</b></p><div class="table-contents"><table summary="Altus Metrum Boards" border="1"><colgroup><col align="center" class="Device"><col align="center" class="Connectors"><col align="center" class="Screw Terminals"><col align="center" class="Width"><col align="center" class="Length"><col align="center" class="Tube Size"></colgroup><thead><tr><th align="center">Device</th><th align="center">Connectors</th><th align="center">Screw Terminals</th><th align="center">Width</th><th align="center">Length</th><th align="center">Tube Size</th></tr></thead><tbody><tr><td align="center">TeleMetrum</td><td align="center"><p>
+      </p><div class="table"><a name="idm46789025272848"></a><p class="title"><b>Table 4.1. Altus Metrum Electronics</b></p><div class="table-contents"><table summary="Altus Metrum Electronics" border="1"><colgroup><col align="center" class="Device"><col align="center" class="Barometer"><col align="center" class="Z-axis accelerometer"><col align="center" class="GPS"><col align="center" class="3D sensors"><col align="center" class="Storage"><col align="center" class="RF"><col align="center" class="Battery"></colgroup><thead><tr><th align="center">Device</th><th align="center">Barometer</th><th align="center">Z-axis accelerometer</th><th align="center">GPS</th><th align="center">3D sensors</th><th align="center">Storage</th><th align="center">RF Output</th><th align="center">Battery</th></tr></thead><tbody><tr><td align="center">TeleMetrum v1.0</td><td align="center"><p>MP3H6115 10km (33k')</p></td><td align="center"><p>MMA2202 50g</p></td><td align="center">SkyTraq</td><td align="center">-</td><td align="center">1MB</td><td align="center">10mW</td><td align="center">3.7V</td></tr><tr><td align="center">TeleMetrum v1.1</td><td align="center"><p>MP3H6115 10km (33k')</p></td><td align="center"><p>MMA2202 50g</p></td><td align="center">SkyTraq</td><td align="center">-</td><td align="center">2MB</td><td align="center">10mW</td><td align="center">3.7V</td></tr><tr><td align="center">TeleMetrum v1.2</td><td align="center"><p>MP3H6115 10km (33k')</p></td><td align="center"><p>ADXL78 70g</p></td><td align="center">SkyTraq</td><td align="center">-</td><td align="center">2MB</td><td align="center">10mW</td><td align="center">3.7V</td></tr><tr><td align="center">TeleMetrum v2.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center"><p>MMA6555 102g</p></td><td align="center">uBlox Max-7Q</td><td align="center">-</td><td align="center">8MB</td><td align="center">40mW</td><td align="center">3.7V</td></tr><tr><td align="center"><p>TeleMini v1.0</p></td><td align="center"><p>MP3H6115 10km (33k')</p></td><td align="center">-</td><td align="center">-</td><td align="center">-</td><td align="center">5kB</td><td align="center">10mW</td><td align="center">3.7V</td></tr><tr><td align="center">TeleMini v2.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center">-</td><td align="center">-</td><td align="center">-</td><td align="center">1MB</td><td align="center">10mW</td><td align="center">3.7-12V</td></tr><tr><td align="center">EasyMini v1.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center">-</td><td align="center">-</td><td align="center">-</td><td align="center">1MB</td><td align="center">-</td><td align="center">3.7-12V</td></tr><tr><td align="center">TeleMega v1.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center"><p>MMA6555 102g</p></td><td align="center">uBlox Max-7Q</td><td align="center"><p>MPU6000 HMC5883</p></td><td align="center">8MB</td><td align="center">40mW</td><td align="center">3.7V</td></tr><tr><td align="center">EasyMega v1.0</td><td align="center"><p>MS5607 30km (100k')</p></td><td align="center"><p>MMA6555 102g</p></td><td align="center">-</td><td align="center"><p>MPU6000 HMC5883</p></td><td align="center">8MB</td><td align="center">-</td><td align="center">3.7V</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="idm46789025221600"></a><p class="title"><b>Table 4.2. Altus Metrum Boards</b></p><div class="table-contents"><table summary="Altus Metrum Boards" border="1"><colgroup><col align="center" class="Device"><col align="center" class="Connectors"><col align="center" class="Screw Terminals"><col align="center" class="Width"><col align="center" class="Length"><col align="center" class="Tube Size"></colgroup><thead><tr><th align="center">Device</th><th align="center">Connectors</th><th align="center">Screw Terminals</th><th align="center">Width</th><th align="center">Length</th><th align="center">Tube Size</th></tr></thead><tbody><tr><td align="center">TeleMetrum</td><td align="center"><p>
                Antenna
                Debug
                Companion
@@ -376,7 +378,7 @@ NAR
                Pyro A-D
                Switch
                Pyro battery
-             </p></td><td align="center">1¼ inch (3.18cm)</td><td align="center">2¼ inch (5.62cm)</td><td align="center">38mm coupler</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 name="idp37090320"></a>3. TeleMetrum</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telemetrum-v1.1-thside.jpg" width="495"></td></tr></table></div></div><p>
+             </p></td><td align="center">1¼ inch (3.18cm)</td><td align="center">2¼ inch (5.62cm)</td><td align="center">38mm coupler</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 name="idm46789025180848"></a>3. TeleMetrum</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telemetrum-v1.1-thside.jpg" width="495"></td></tr></table></div></div><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
@@ -387,13 +389,13 @@ NAR
        the e-matches for apogee and main ejection charges depart from the
        fin can end of the board, meaning an ideal &#8220;simple&#8221; avionics
        bay for TeleMetrum should have at least 10 inches of interior length.
-      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37095216"></a>3.1. TeleMetrum Screw Terminals</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025175952"></a>3.1. TeleMetrum Screw Terminals</h3></div></div></div><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 name="idp37096528"></a><p class="title"><b>Table 4.3. TeleMetrum Screw Terminals</b></p><div class="table-contents"><table summary="TeleMetrum Screw Terminals" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">2</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr><tr><td align="center">3</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">4</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">5</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to battery +</td></tr><tr><td align="center">6</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37114432"></a>3.2. Using a Separate Pyro Battery with TeleMetrum</h3></div></div></div><p>
+       </p><div class="table"><a name="idm46789025174640"></a><p class="title"><b>Table 4.3. TeleMetrum Screw Terminals</b></p><div class="table-contents"><table summary="TeleMetrum Screw Terminals" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">2</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr><tr><td align="center">3</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">4</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">5</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to battery +</td></tr><tr><td align="center">6</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025156736"></a>3.2. Using a Separate Pyro Battery with TeleMetrum</h3></div></div></div><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
@@ -412,7 +414,7 @@ NAR
          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><h3 class="title"><a name="idp37117680"></a>3.3. Using an Active Switch with TeleMetrum</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025153488"></a>3.3. Using an Active Switch with TeleMetrum</h3></div></div></div><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.
@@ -421,7 +423,7 @@ NAR
          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="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37119808"></a>4. TeleMini v1.0</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telemini-v1-top.jpg" width="495"></td></tr></table></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789025151360"></a>4. TeleMini v1.0</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telemini-v1-top.jpg" width="495"></td></tr></table></div></div><p>
        TeleMini v1.0 is ½ inches by 1½ 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
@@ -434,7 +436,7 @@ NAR
        apogee and main ejection charges depart from the other end of
        the board, meaning an ideal &#8220;simple&#8221; avionics bay for TeleMini
        should have at least 9 inches of interior length.
-      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37124704"></a>4.1. TeleMini v1.0 Screw Terminals</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025146464"></a>4.1. TeleMini v1.0 Screw Terminals</h3></div></div></div><p>
          TeleMini v1.0 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. There are also wires
@@ -442,7 +444,7 @@ NAR
          picture above and starting from the top for the terminals
          and from the left for the power switch wires, the
          connections are as follows:
-       </p><div class="table"><a name="idp37126144"></a><p class="title"><b>Table 4.4. TeleMini v1.0 Connections</b></p><div class="table-contents"><table summary="TeleMini v1.0 Connections" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">2</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to battery +</td></tr><tr><td align="center">3</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">4</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Left</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Right</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37144048"></a>4.2. Using a Separate Pyro Battery with TeleMini v1.0</h3></div></div></div><p>
+       </p><div class="table"><a name="idm46789025145024"></a><p class="title"><b>Table 4.4. TeleMini v1.0 Connections</b></p><div class="table-contents"><table summary="TeleMini v1.0 Connections" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">2</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to battery +</td></tr><tr><td align="center">3</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">4</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Left</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Right</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025127120"></a>4.2. Using a Separate Pyro Battery with TeleMini v1.0</h3></div></div></div><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
@@ -463,7 +465,7 @@ NAR
          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><h3 class="title"><a name="idp37147424"></a>4.3. Using an Active Switch with TeleMini v1.0</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025123744"></a>4.3. Using an Active Switch with TeleMini v1.0</h3></div></div></div><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,
@@ -474,21 +476,21 @@ NAR
          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><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37149632"></a>5. TeleMini v2.0</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telemini-v2-top.jpg" width="495"></td></tr></table></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789025121536"></a>5. TeleMini v2.0</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telemini-v2-top.jpg" width="495"></td></tr></table></div></div><p>
        TeleMini v2.0 is 0.8 inches by 1½ inches. It adds more
        on-board data logging memory, a built-in USB connector and
        screw terminals for the battery and power switch. The larger
        board fits in a 24mm coupler. There's also a battery connector
        for a LiPo battery if you want to use one of those.
-      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37153648"></a>5.1. TeleMini v2.0 Screw Terminals</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025117520"></a>5.1. TeleMini v2.0 Screw Terminals</h3></div></div></div><p>
          TeleMini v2.0 has two sets of four screw terminals on the end of the
          board opposite the telemetry antenna. 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 name="idp37155056"></a><p class="title"><b>Table 4.5. TeleMini v2.0 Connections</b></p><div class="table-contents"><table summary="TeleMini v2.0 Connections" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Top 1</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 2</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Top 3</td><td align="center">Battery +</td><td align="left">Positive external battery terminal</td></tr><tr><td align="center">Top 4</td><td align="center">Battery -</td><td align="left">Negative external battery terminal</td></tr><tr><td align="center">Bottom 1</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 2</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to
-               battery +</td></tr><tr><td align="center">Bottom 3</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Bottom 4</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37176032"></a>5.2. Using a Separate Pyro Battery with TeleMini v2.0</h3></div></div></div><p>
+       </p><div class="table"><a name="idm46789025116112"></a><p class="title"><b>Table 4.5. TeleMini v2.0 Connections</b></p><div class="table-contents"><table summary="TeleMini v2.0 Connections" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Top 1</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 2</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Top 3</td><td align="center">Battery +</td><td align="left">Positive external battery terminal</td></tr><tr><td align="center">Top 4</td><td align="center">Battery -</td><td align="left">Negative external battery terminal</td></tr><tr><td align="center">Bottom 1</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 2</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to
+               battery +</td></tr><tr><td align="center">Bottom 3</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Bottom 4</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025095136"></a>5.2. Using a Separate Pyro Battery with TeleMini v2.0</h3></div></div></div><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
@@ -507,7 +509,7 @@ NAR
          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><h3 class="title"><a name="idp37179232"></a>5.3. Using an Active Switch with TeleMini v2.0</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025091936"></a>5.3. Using an Active Switch with TeleMini v2.0</h3></div></div></div><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
@@ -517,20 +519,20 @@ NAR
          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="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37181328"></a>6. EasyMini</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="easymini-top.jpg" width="495"></td></tr></table></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789025089840"></a>6. EasyMini</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="easymini-top.jpg" width="495"></td></tr></table></div></div><p>
        EasyMini is built on a 0.8 inch by 1½ inch circuit board. It's
        designed to fit in a 24mm coupler tube. The connectors and
        screw terminals match TeleMini v2.0, so you can easily swap between
        EasyMini and TeleMini.
-      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37185184"></a>6.1. EasyMini Screw Terminals</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025085984"></a>6.1. EasyMini Screw Terminals</h3></div></div></div><p>
          EasyMini has two sets of four screw terminals on the end of the
          board opposite the telemetry antenna. 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 name="idp37186592"></a><p class="title"><b>Table 4.6. EasyMini Connections</b></p><div class="table-contents"><table summary="EasyMini Connections" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Top 1</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 2</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Top 3</td><td align="center">Battery +</td><td align="left">Positive external battery terminal</td></tr><tr><td align="center">Top 4</td><td align="center">Battery -</td><td align="left">Negative external battery terminal</td></tr><tr><td align="center">Bottom 1</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 2</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to
-               battery +</td></tr><tr><td align="center">Bottom 3</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Bottom 4</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37207568"></a>6.2. Using a Separate Pyro Battery with EasyMini</h3></div></div></div><p>
+       </p><div class="table"><a name="idm46789025084576"></a><p class="title"><b>Table 4.6. EasyMini Connections</b></p><div class="table-contents"><table summary="EasyMini Connections" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Top 1</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 2</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Top 3</td><td align="center">Battery +</td><td align="left">Positive external battery terminal</td></tr><tr><td align="center">Top 4</td><td align="center">Battery -</td><td align="left">Negative external battery terminal</td></tr><tr><td align="center">Bottom 1</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 2</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to
+               battery +</td></tr><tr><td align="center">Bottom 3</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Bottom 4</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025063600"></a>6.2. Using a Separate Pyro Battery with EasyMini</h3></div></div></div><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
@@ -549,7 +551,7 @@ NAR
          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><h3 class="title"><a name="idp37210752"></a>6.3. Using an Active Switch with EasyMini</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025060416"></a>6.3. Using an Active Switch with EasyMini</h3></div></div></div><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
@@ -559,19 +561,19 @@ NAR
          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="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37212848"></a>7. TeleMega</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telemega-v1.0-top.jpg" width="495"></td></tr></table></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789025058320"></a>7. TeleMega</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telemega-v1.0-top.jpg" width="495"></td></tr></table></div></div><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><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37216816"></a>7.1. TeleMega Screw Terminals</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025054352"></a>7.1. TeleMega Screw Terminals</h3></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 name="idp37217984"></a><p class="title"><b>Table 4.7. TeleMega Screw Terminals</b></p><div class="table-contents"><table summary="TeleMega Screw Terminals" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Top 1</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr><tr><td align="center">Top 2</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Top 3</td><td align="center">GND</td><td align="left">Ground connection for use with external active switch</td></tr><tr><td align="center">Top 4</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 5</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Top 6</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 7</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to battery +</td></tr><tr><td align="center">Top 8</td><td align="center">D -</td><td align="left">D pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 9</td><td align="center">D +</td><td align="left">D pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 1</td><td align="center">GND</td><td align="left">Ground connection for negative pyro battery terminal</td></tr><tr><td align="center">Bottom 2</td><td align="center">Pyro</td><td align="left">Positive pyro battery terminal</td></tr><tr><td align="center">Bottom 3</td><td align="center">Lipo</td><td align="left">
+       </p><div class="table"><a name="idm46789025053184"></a><p class="title"><b>Table 4.7. TeleMega Screw Terminals</b></p><div class="table-contents"><table summary="TeleMega Screw Terminals" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Top 1</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr><tr><td align="center">Top 2</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Top 3</td><td align="center">GND</td><td align="left">Ground connection for use with external active switch</td></tr><tr><td align="center">Top 4</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 5</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Top 6</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 7</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to battery +</td></tr><tr><td align="center">Top 8</td><td align="center">D -</td><td align="left">D pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 9</td><td align="center">D +</td><td align="left">D pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 1</td><td align="center">GND</td><td align="left">Ground connection for negative pyro battery terminal</td></tr><tr><td align="center">Bottom 2</td><td align="center">Pyro</td><td align="left">Positive pyro battery terminal</td></tr><tr><td align="center">Bottom 3</td><td align="center">Lipo</td><td align="left">
                  Power switch output. Use to connect main battery to
                  pyro battery input
-               </td></tr><tr><td align="center">Bottom 4</td><td align="center">A -</td><td align="left">A pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 5</td><td align="center">A +</td><td align="left">A pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 6</td><td align="center">B -</td><td align="left">B pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 7</td><td align="center">B +</td><td align="left">B pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 8</td><td align="center">C -</td><td align="left">C pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 9</td><td align="center">C +</td><td align="left">C pyro channel common connection to battery +</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37254320"></a>7.2. Using a Separate Pyro Battery with TeleMega</h3></div></div></div><p>
+               </td></tr><tr><td align="center">Bottom 4</td><td align="center">A -</td><td align="left">A pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 5</td><td align="center">A +</td><td align="left">A pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 6</td><td align="center">B -</td><td align="left">B pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 7</td><td align="center">B +</td><td align="left">B pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 8</td><td align="center">C -</td><td align="left">C pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 9</td><td align="center">C +</td><td align="left">C pyro channel common connection to battery +</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025016848"></a>7.2. Using a Separate Pyro Battery with TeleMega</h3></div></div></div><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
@@ -579,7 +581,7 @@ NAR
          (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><h3 class="title"><a name="idp37255920"></a>7.3. Using Only One Battery With TeleMega</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025015248"></a>7.3. Using Only One Battery With TeleMega</h3></div></div></div><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
@@ -587,7 +589,7 @@ NAR
          circuit. TeleMega has two screw terminals for this&#8212;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><h3 class="title"><a name="idp37257840"></a>7.4. Using an Active Switch with TeleMega</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025013328"></a>7.4. Using an Active Switch with TeleMega</h3></div></div></div><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.
@@ -595,19 +597,19 @@ NAR
          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="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37259888"></a>8. EasyMega</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="easymega-v1.0-top.jpg" width="405"></td></tr></table></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789025011280"></a>8. EasyMega</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="easymega-v1.0-top.jpg" width="405"></td></tr></table></div></div><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><h3 class="title"><a name="idp37263856"></a>8.1. EasyMega Screw Terminals</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789025007312"></a>8.1. EasyMega Screw Terminals</h3></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 name="idp37265024"></a><p class="title"><b>Table 4.8. EasyMega Screw Terminals</b></p><div class="table-contents"><table summary="EasyMega Screw Terminals" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Top 1</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr><tr><td align="center">Top 2</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Top 3</td><td align="center">GND</td><td align="left">Ground connection for use with external active switch</td></tr><tr><td align="center">Top 4</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 5</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Top 6</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 7</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to battery +</td></tr><tr><td align="center">Top 8</td><td align="center">D -</td><td align="left">D pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 9</td><td align="center">D +</td><td align="left">D pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 1</td><td align="center">GND</td><td align="left">Ground connection for negative pyro battery terminal</td></tr><tr><td align="center">Bottom 2</td><td align="center">Pyro</td><td align="left">Positive pyro battery terminal</td></tr><tr><td align="center">Bottom 3</td><td align="center">Lipo</td><td align="left">
+       </p><div class="table"><a name="idm46789025006144"></a><p class="title"><b>Table 4.8. EasyMega Screw Terminals</b></p><div class="table-contents"><table summary="EasyMega Screw Terminals" border="1"><colgroup><col align="center" class="Pin #"><col align="center" class="Pin Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Terminal #</th><th align="center">Terminal Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Top 1</td><td align="center">Switch Input</td><td align="left">Switch connection to positive battery terminal</td></tr><tr><td align="center">Top 2</td><td align="center">Switch Output</td><td align="left">Switch connection to flight computer</td></tr><tr><td align="center">Top 3</td><td align="center">GND</td><td align="left">Ground connection for use with external active switch</td></tr><tr><td align="center">Top 4</td><td align="center">Main -</td><td align="left">Main pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 5</td><td align="center">Main +</td><td align="left">Main pyro channel common connection to battery +</td></tr><tr><td align="center">Top 6</td><td align="center">Apogee -</td><td align="left">Apogee pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 7</td><td align="center">Apogee +</td><td align="left">Apogee pyro channel common connection to battery +</td></tr><tr><td align="center">Top 8</td><td align="center">D -</td><td align="left">D pyro channel connection to pyro circuit</td></tr><tr><td align="center">Top 9</td><td align="center">D +</td><td align="left">D pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 1</td><td align="center">GND</td><td align="left">Ground connection for negative pyro battery terminal</td></tr><tr><td align="center">Bottom 2</td><td align="center">Pyro</td><td align="left">Positive pyro battery terminal</td></tr><tr><td align="center">Bottom 3</td><td align="center">Lipo</td><td align="left">
                  Power switch output. Use to connect main battery to
                  pyro battery input
-               </td></tr><tr><td align="center">Bottom 4</td><td align="center">A -</td><td align="left">A pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 5</td><td align="center">A +</td><td align="left">A pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 6</td><td align="center">B -</td><td align="left">B pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 7</td><td align="center">B +</td><td align="left">B pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 8</td><td align="center">C -</td><td align="left">C pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 9</td><td align="center">C +</td><td align="left">C pyro channel common connection to battery +</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37301456"></a>8.2. Using a Separate Pyro Battery with EasyMega</h3></div></div></div><p>
+               </td></tr><tr><td align="center">Bottom 4</td><td align="center">A -</td><td align="left">A pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 5</td><td align="center">A +</td><td align="left">A pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 6</td><td align="center">B -</td><td align="left">B pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 7</td><td align="center">B +</td><td align="left">B pyro channel common connection to battery +</td></tr><tr><td align="center">Bottom 8</td><td align="center">C -</td><td align="left">C pyro channel connection to pyro circuit</td></tr><tr><td align="center">Bottom 9</td><td align="center">C +</td><td align="left">C pyro channel common connection to battery +</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024969808"></a>8.2. Using a Separate Pyro Battery with EasyMega</h3></div></div></div><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
@@ -615,7 +617,7 @@ NAR
          (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><h3 class="title"><a name="idp37303056"></a>8.3. Using Only One Battery With EasyMega</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024968208"></a>8.3. Using Only One Battery With EasyMega</h3></div></div></div><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
@@ -623,7 +625,7 @@ NAR
          circuit. EasyMega has two screw terminals for this&#8212;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><h3 class="title"><a name="idp37304976"></a>8.4. Using an Active Switch with EasyMega</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024966288"></a>8.4. Using an Active Switch with EasyMega</h3></div></div></div><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.
@@ -631,14 +633,14 @@ NAR
          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="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37307024"></a>9. Flight Data Recording</h2></div></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024964240"></a>9. Flight Data Recording</h2></div></div></div><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 name="idp37308432"></a><p class="title"><b>Table 4.9. Data Storage on Altus Metrum altimeters</b></p><div class="table-contents"><table summary="Data Storage on Altus Metrum altimeters" border="1"><colgroup><col align="center" class="Device"><col align="center" class="Bytes per sample"><col align="center" class="Total storage"><col align="center" class="Minutes of        full-rate"></colgroup><thead><tr><th align="center">Device</th><th align="center">Bytes per Sample</th><th align="center">Total Storage</th><th align="center">Minutes at Full Rate</th></tr></thead><tbody><tr><td align="center">TeleMetrum v1.0</td><td align="center">8</td><td align="center">1MB</td><td align="center">20</td></tr><tr><td align="center">TeleMetrum v1.1 v1.2</td><td align="center">8</td><td align="center">2MB</td><td align="center">40</td></tr><tr><td align="center">TeleMetrum v2.0</td><td align="center">16</td><td align="center">8MB</td><td align="center">80</td></tr><tr><td align="center">TeleMini v1.0</td><td align="center">2</td><td align="center">5kB</td><td align="center">4</td></tr><tr><td align="center">TeleMini v2.0</td><td align="center">16</td><td align="center">1MB</td><td align="center">10</td></tr><tr><td align="center">EasyMini</td><td align="center">16</td><td align="center">1MB</td><td align="center">10</td></tr><tr><td align="center">TeleMega</td><td align="center">32</td><td align="center">8MB</td><td align="center">40</td></tr><tr><td align="center">EasyMega</td><td align="center">32</td><td align="center">8MB</td><td align="center">40</td></tr></tbody></table></div></div><br class="table-break"><p>
+      </p><div class="table"><a name="idm46789024962832"></a><p class="title"><b>Table 4.9. Data Storage on Altus Metrum altimeters</b></p><div class="table-contents"><table summary="Data Storage on Altus Metrum altimeters" border="1"><colgroup><col align="center" class="Device"><col align="center" class="Bytes per sample"><col align="center" class="Total storage"><col align="center" class="Minutes of        full-rate"></colgroup><thead><tr><th align="center">Device</th><th align="center">Bytes per Sample</th><th align="center">Total Storage</th><th align="center">Minutes at Full Rate</th></tr></thead><tbody><tr><td align="center">TeleMetrum v1.0</td><td align="center">8</td><td align="center">1MB</td><td align="center">20</td></tr><tr><td align="center">TeleMetrum v1.1 v1.2</td><td align="center">8</td><td align="center">2MB</td><td align="center">40</td></tr><tr><td align="center">TeleMetrum v2.0</td><td align="center">16</td><td align="center">8MB</td><td align="center">80</td></tr><tr><td align="center">TeleMini v1.0</td><td align="center">2</td><td align="center">5kB</td><td align="center">4</td></tr><tr><td align="center">TeleMini v2.0</td><td align="center">16</td><td align="center">1MB</td><td align="center">10</td></tr><tr><td align="center">EasyMini</td><td align="center">16</td><td align="center">1MB</td><td align="center">10</td></tr><tr><td align="center">TeleMega</td><td align="center">32</td><td align="center">8MB</td><td align="center">40</td></tr><tr><td align="center">EasyMega</td><td align="center">32</td><td align="center">8MB</td><td align="center">40</td></tr></tbody></table></div></div><br class="table-break"><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
@@ -671,7 +673,7 @@ NAR
        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="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37337792"></a>10. Installation</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024933472"></a>10. Installation</h2></div></div></div><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 
@@ -718,7 +720,7 @@ NAR
        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><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp37344528"></a>Chapter 5. System Operation</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp37345168">1. Firmware Modes </a></span></dt><dt><span class="section"><a href="#idp37413664">2. GPS </a></span></dt><dt><span class="section"><a href="#idp37416448">3. Controlling An Altimeter Over The Radio Link</a></span></dt><dt><span class="section"><a href="#idp37427744">4. Ground Testing </a></span></dt><dt><span class="section"><a href="#idp37430496">5. Radio Link </a></span></dt><dt><span class="section"><a href="#idp37434496">6. APRS</a></span></dt><dt><span class="section"><a href="#idp37458816">7. Configurable Parameters</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37460736">7.1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idp37462784">7.2. Callsign</a></span></dt><dt><span class="section"><a href="#idp37464320">7.3. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idp37465616">7.4. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#idp37467184">7.5. APRS Interval</a></span></dt><dt><span class="section"><a href="#idp37468656">7.6. APRS SSID</a></span></dt><dt><span class="section"><a href="#idp37470000">7.7. Apogee Delay</a></span></dt><dt><span class="section"><a href="#idp37472592">7.8. Apogee Lockout</a></span></dt><dt><span class="section"><a href="#idp37474320">7.9. Main Deployment Altitude</a></span></dt><dt><span class="section"><a href="#idp37476016">7.10. Maximum Flight Log</a></span></dt><dt><span class="section"><a href="#idp37478160">7.11. Ignite Mode</a></span></dt><dt><span class="section"><a href="#idp37480272">7.12. Pad Orientation</a></span></dt><dt><span class="section"><a href="#idp37481968">7.13. Configurable Pyro Channels</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37345168"></a>1. Firmware Modes </h2></div></div></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024926304"></a>Chapter 5. System Operation</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024925664">1. Firmware Modes </a></span></dt><dt><span class="section"><a href="#idm46789024857168">2. GPS </a></span></dt><dt><span class="section"><a href="#idm46789024854384">3. Controlling An Altimeter Over The Radio Link</a></span></dt><dt><span class="section"><a href="#idm46789024843088">4. Ground Testing </a></span></dt><dt><span class="section"><a href="#idm46789024840336">5. Radio Link </a></span></dt><dt><span class="section"><a href="#idm46789024836336">6. APRS</a></span></dt><dt><span class="section"><a href="#idm46789024812016">7. Configurable Parameters</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024810096">7.1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024808048">7.2. Callsign</a></span></dt><dt><span class="section"><a href="#idm46789024806512">7.3. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idm46789024805216">7.4. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#idm46789024803648">7.5. APRS Interval</a></span></dt><dt><span class="section"><a href="#idm46789024802176">7.6. APRS SSID</a></span></dt><dt><span class="section"><a href="#idm46789024800832">7.7. Apogee Delay</a></span></dt><dt><span class="section"><a href="#idm46789024798240">7.8. Apogee Lockout</a></span></dt><dt><span class="section"><a href="#idm46789024796512">7.9. Main Deployment Altitude</a></span></dt><dt><span class="section"><a href="#idm46789024794816">7.10. Maximum Flight Log</a></span></dt><dt><span class="section"><a href="#idm46789024792672">7.11. Ignite Mode</a></span></dt><dt><span class="section"><a href="#idm46789024790560">7.12. Pad Orientation</a></span></dt><dt><span class="section"><a href="#idm46789024788864">7.13. Configurable Pyro Channels</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024925664"></a>1. Firmware Modes </h2></div></div></div><p>
         The AltOS firmware build for the altimeters has two
         fundamental modes, &#8220;idle&#8221; and &#8220;flight&#8221;.  Which of these modes
         the firmware operates in is determined at start up time. For
@@ -749,7 +751,7 @@ NAR
        mode. In the description of the beeping pattern, &#8220;dit&#8221; means a
        short beep while "dah" means a long beep (three times as
        long). &#8220;Brap&#8221; means a long dissonant tone.
-       </p><div class="table"><a name="idp37350528"></a><p class="title"><b>Table 5.1. AltOS Modes</b></p><div class="table-contents"><table summary="AltOS Modes" border="1"><colgroup><col align="center" class="Mode Name"><col align="center" class="Letter"><col align="center" class="Beeps"><col align="center" class="Description"></colgroup><thead><tr><th align="center">Mode Name</th><th align="center">Abbreviation</th><th align="center">Beeps</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Startup</td><td align="center">S</td><td align="center">battery voltage in decivolts</td><td align="center">
+       </p><div class="table"><a name="idm46789024920304"></a><p class="title"><b>Table 5.1. AltOS Modes</b></p><div class="table-contents"><table summary="AltOS Modes" border="1"><colgroup><col align="center" class="Mode Name"><col align="center" class="Letter"><col align="center" class="Beeps"><col align="center" class="Description"></colgroup><thead><tr><th align="center">Mode Name</th><th align="center">Abbreviation</th><th align="center">Beeps</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Startup</td><td align="center">S</td><td align="center">battery voltage in decivolts</td><td align="center">
                  <p>
                    Calibrating sensors, detecting orientation.
                  </p>
@@ -823,7 +825,7 @@ NAR
        slower than the &#8220;no continuity tone&#8221;)
       </p><p>
        Here's a summary of all of the &#8220;pad&#8221; and &#8220;idle&#8221; mode indications.
-       </p><div class="table"><a name="idp37387712"></a><p class="title"><b>Table 5.2. Pad/Idle Indications</b></p><div class="table-contents"><table summary="Pad/Idle Indications" border="1"><colgroup><col align="center" class="Name"><col align="center" class="Beeps"><col align="center" class="Description"></colgroup><thead><tr><th align="center">Name</th><th align="center">Beeps</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Neither</td><td align="center">brap</td><td align="center">
+       </p><div class="table"><a name="idm46789024883120"></a><p class="title"><b>Table 5.2. Pad/Idle Indications</b></p><div class="table-contents"><table summary="Pad/Idle Indications" border="1"><colgroup><col align="center" class="Name"><col align="center" class="Beeps"><col align="center" class="Description"></colgroup><thead><tr><th align="center">Name</th><th align="center">Beeps</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Neither</td><td align="center">brap</td><td align="center">
                  <p>
                    No continuity detected on either apogee or main
                    igniters.
@@ -891,7 +893,7 @@ NAR
        together, then power TeleMini up. Once the red LED is lit,
        disconnect the wire and the board should signal that it's in
        'idle' 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 name="idp37413664"></a>2. GPS </h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024857168"></a>2. GPS </h2></div></div></div><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
@@ -909,7 +911,7 @@ NAR
         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 name="idp37416448"></a>3. Controlling An Altimeter Over The Radio Link</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024854384"></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
         ability to create a two way command link between TeleDongle
         and an altimeter using the digital radio transceivers
@@ -980,7 +982,7 @@ NAR
         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 name="idp37427744"></a>4. Ground Testing </h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024843088"></a>4. 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.  Thanks
         to the bi-directional radio link central to the Altus Metrum system,
@@ -996,7 +998,7 @@ NAR
         manual command.  You can now command the altimeter to fire the apogee
         or main charges from a safe distance using your computer and 
         TeleDongle 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 name="idp37430496"></a>5. Radio Link </h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024840336"></a>5. Radio Link </h2></div></div></div><p>
         Our flight computers all incorporate an RF transceiver, but
         it'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
@@ -1029,7 +1031,7 @@ NAR
         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 name="idp37434496"></a>6. APRS</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024836336"></a>6. APRS</h2></div></div></div><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
@@ -1060,7 +1062,7 @@ NAR
        arbitrary text in it. AltOS uses this to send status
        information about the flight computer. It sends four fields as
        shown in the following table.
-      </p><div class="table"><a name="idp37438304"></a><p class="title"><b>Table 5.3. Altus Metrum APRS Comments</b></p><div class="table-contents"><table summary="Altus Metrum APRS Comments" border="1"><colgroup><col align="center" class="Field"><col align="center" class="Example"><col align="center" class="Description"></colgroup><thead><tr><th align="center">Field</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="center">L</td><td align="center">GPS Status U for unlocked, L for locked</td></tr><tr><td align="center">2</td><td align="center">6</td><td align="center">Number of Satellites in View</td></tr><tr><td align="center">3</td><td align="center">B4.0</td><td align="center">Altimeter Battery Voltage</td></tr><tr><td align="center">4</td><td align="center">A3.7</td><td align="center">Apogee Igniter Voltage</td></tr><tr><td align="center">5</td><td align="center">M3.7</td><td align="center">Main Igniter Voltage</td></tr><tr><td align="center">6</td><td align="center">1286</td><td align="center">Device Serial Number</td></tr></tbody></table></div></div><br class="table-break"><p>
+      </p><div class="table"><a name="idm46789024832528"></a><p class="title"><b>Table 5.3. Altus Metrum APRS Comments</b></p><div class="table-contents"><table summary="Altus Metrum APRS Comments" border="1"><colgroup><col align="center" class="Field"><col align="center" class="Example"><col align="center" class="Description"></colgroup><thead><tr><th align="center">Field</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="center">L</td><td align="center">GPS Status U for unlocked, L for locked</td></tr><tr><td align="center">2</td><td align="center">6</td><td align="center">Number of Satellites in View</td></tr><tr><td align="center">3</td><td align="center">B4.0</td><td align="center">Altimeter Battery Voltage</td></tr><tr><td align="center">4</td><td align="center">A3.7</td><td align="center">Apogee Igniter Voltage</td></tr><tr><td align="center">5</td><td align="center">M3.7</td><td align="center">Main Igniter Voltage</td></tr><tr><td align="center">6</td><td align="center">1286</td><td align="center">Device Serial Number</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, a primary battery at 4.0V, and
        apogee and main igniters both at 3.7V from device 1286.
@@ -1080,7 +1082,7 @@ NAR
        that the GPS status character 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 name="idp37458816"></a>7. Configurable Parameters</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024812016"></a>7. Configurable Parameters</h2></div></div></div><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
@@ -1088,7 +1090,7 @@ NAR
         using AltosUI over USB or or radio link via TeleDongle. Read
        the Configure Altimeter section in the AltosUI chapter below
        for more information.
-      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37460736"></a>7.1. Radio Frequency</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024810096"></a>7.1. Radio Frequency</h3></div></div></div><p>
          Altus Metrum boards support radio frequencies in the 70cm
          band. By default, the configuration interface provides a
          list of 10 &#8220;standard&#8221; frequencies in 100kHz channels starting at
@@ -1098,18 +1100,18 @@ NAR
          frequency will be used to avoid interference.  And of course, both
          altimeter and TeleDongle must be configured to the same
          frequency to successfully communicate with each other.
-        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37462784"></a>7.2. Callsign</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024808048"></a>7.2. Callsign</h3></div></div></div><p>
          This sets the callsign used for telemetry, APRS and the
          packet link. For telemetry and APRS, this is used to
          identify the device. For the packet link, the callsign must
          match that configured in AltosUI or the link will not
          work. This is to prevent accidental configuration of another
          Altus Metrum flight computer operating on the same frequency nearby.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37464320"></a>7.3. Telemetry/RDF/APRS Enable</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024806512"></a>7.3. Telemetry/RDF/APRS Enable</h3></div></div></div><p>
          You can completely disable the radio while in flight, if
          necessary. This doesn't disable the packet link in idle
          mode.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37465616"></a>7.4. Telemetry baud rate</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024805216"></a>7.4. Telemetry baud rate</h3></div></div></div><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
@@ -1117,17 +1119,17 @@ NAR
          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 name="idp37467184"></a>7.5. APRS Interval</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024803648"></a>7.5. APRS Interval</h3></div></div></div><p>
          This selects how often APRS packets are transmitted. Set
          this to zero to disable APRS without also disabling the
          regular telemetry and RDF transmissions. As APRS takes a
          full second to transmit a single position report, we
          recommend sending packets no more than once every 5 seconds.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37468656"></a>7.6. APRS SSID</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024802176"></a>7.6. APRS SSID</h3></div></div></div><p>
          This selects the SSID reported in APRS packets. By default,
          it is set to the last digit of the serial number, but you
          can change this to any value from 0 to 9.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37470000"></a>7.7. Apogee Delay</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024800832"></a>7.7. Apogee Delay</h3></div></div></div><p>
           Apogee delay is the number of seconds after the altimeter detects flight
           apogee that the drogue charge should be fired.  In most cases, this
           should be left at the default of 0.  However, if you are flying
@@ -1143,7 +1145,7 @@ NAR
           or 3 seconds later to avoid any chance of both charges
           firing simultaneously.  We've flown several air-frames this
           way quite happily, including Keith's successful L3 cert.
-        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37472592"></a>7.8. Apogee Lockout</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024798240"></a>7.8. Apogee Lockout</h3></div></div></div><p>
          Apogee lockout is the number of seconds after boost where
          the flight computer will not fire the apogee charge, even if
          the rocket appears to be at apogee. This is often called
@@ -1153,7 +1155,7 @@ NAR
          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><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37474320"></a>7.9. Main Deployment Altitude</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024796512"></a>7.9. Main Deployment Altitude</h3></div></div></div><p>
           By default, the altimeter will fire the main deployment charge at an
           elevation of 250 meters (about 820 feet) above ground.  We think this
           is a good elevation for most air-frames, but feel free to change this
@@ -1162,7 +1164,7 @@ NAR
           deployment elevation for the backup altimeter to be something lower
           than the primary so that both pyrotechnic charges don't fire
           simultaneously.
-        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37476016"></a>7.10. Maximum Flight Log</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024794816"></a>7.10. Maximum Flight Log</h3></div></div></div><p>
          Changing this value will set the maximum amount of flight
          log storage that an individual flight will use. The
          available storage is divided into as many flights of the
@@ -1174,7 +1176,7 @@ NAR
          Even though our flight computers (except TeleMini v1.0) can store
          multiple flights, we strongly recommend downloading and saving
          flight data after each flight.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37478160"></a>7.11. Ignite Mode</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024792672"></a>7.11. Ignite Mode</h3></div></div></div><p>
          Instead of firing one charge at apogee and another charge at
          a fixed height above the ground, you can configure the
          altimeter to fire both at apogee or both during
@@ -1185,7 +1187,7 @@ NAR
          main allows some level of redundancy without needing two
          flight computers.  In Redundant Apogee or Redundant Main
          mode, the two charges will be fired two seconds apart.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37480272"></a>7.12. Pad Orientation</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024790560"></a>7.12. Pad Orientation</h3></div></div></div><p>
          TeleMetrum, TeleMega and EasyMega measure acceleration along the axis
          of the board. Which way the board is oriented affects the
          sign of the acceleration value. Instead of trying to guess
@@ -1195,7 +1197,7 @@ NAR
          of the board connected to the 70cm antenna to be nearest the
          nose of the rocket, with the end containing the screw
          terminals nearest the tail.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37481968"></a>7.13. Configurable Pyro Channels</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024788864"></a>7.13. Configurable Pyro Channels</h3></div></div></div><p>
          In addition to the usual Apogee and Main pyro channels,
          TeleMega and EasyMega have four additional channels that can be configured
          to activate when various flight conditions are
@@ -1254,9 +1256,9 @@ NAR
              whether the speed is &lt; 0.
            </p></li><li class="listitem"><p>
              After Motor. The flight software counts each time the
-             rocket starts accelerating (presumably due to a motor or
-             motors igniting). Use this value to count ignitions for
-             multi-staged or multi-airstart launches.
+             rocket starts accelerating and then decelerating
+             (presumably due to a motor or motors burning). Use this
+             value for multi-staged or multi-airstart launches.
            </p></li><li class="listitem"><p>
              Delay. This value doesn't perform any checks, instead it
              inserts a delay between the time when the other
@@ -1295,7 +1297,7 @@ NAR
              Coast state (depending on how fast it is moving). If the
              computer detects upwards acceleration again, it will
              move back to Boost state.
-           </p></li></ul></div></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp37504576"></a>Chapter 6. AltosUI</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp37508192">1. Monitor Flight</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37521120">1.1. Launch Pad</a></span></dt><dt><span class="section"><a href="#idp37536752">1.2. Ascent</a></span></dt><dt><span class="section"><a href="#idp37542208">1.3. Descent</a></span></dt><dt><span class="section"><a href="#idp37549072">1.4. Landed</a></span></dt><dt><span class="section"><a href="#idp37555504">1.5. Table</a></span></dt><dt><span class="section"><a href="#idp37559088">1.6. Site Map</a></span></dt><dt><span class="section"><a href="#idp37565408">1.7. Ignitor</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37569184">2. Save Flight Data</a></span></dt><dt><span class="section"><a href="#idp37573136">3. Replay Flight</a></span></dt><dt><span class="section"><a href="#idp37575168">4. Graph Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37577552">4.1. Flight Graph</a></span></dt><dt><span class="section"><a href="#idp37582000">4.2. Configure Graph</a></span></dt><dt><span class="section"><a href="#idp37585664">4.3. Flight Statistics</a></span></dt><dt><span class="section"><a href="#idp37589184">4.4. Map</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37593040">5. Export Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37594608">5.1. Comma Separated Value Format</a></span></dt><dt><span class="section"><a href="#idp37596960">5.2. Keyhole Markup Language (for Google Earth)</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37598448">6. Configure Altimeter</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37610752">6.1. Main Deploy Altitude</a></span></dt><dt><span class="section"><a href="#idp37612320">6.2. Apogee Delay</a></span></dt><dt><span class="section"><a href="#idp37613936">6.3. Apogee Lockoug</a></span></dt><dt><span class="section"><a href="#idp37616240">6.4. Frequency</a></span></dt><dt><span class="section"><a href="#idp37617744">6.5. RF Calibration</a></span></dt><dt><span class="section"><a href="#idp37619392">6.6. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idp37620688">6.7. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#idp37622256">6.8. APRS Interval</a></span></dt><dt><span class="section"><a href="#idp37623824">6.9. APRS SSID</a></span></dt><dt><span class="section"><a href="#idp37625152">6.10. Callsign</a></span></dt><dt><span class="section"><a href="#idp37626464">6.11. Maximum Flight Log Size</a></span></dt><dt><span class="section"><a href="#idp37627904">6.12. Ignitor Firing Mode</a></span></dt><dt><span class="section"><a href="#idp37634816">6.13. Pad Orientation</a></span></dt><dt><span class="section"><a href="#idp37640048">6.14. Beeper Frequency</a></span></dt><dt><span class="section"><a href="#idp37641504">6.15. Configure Pyro Channels</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37647888">7. Configure AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37651392">7.1. Voice Settings</a></span></dt><dt><span class="section"><a href="#idp37656416">7.2. Log Directory</a></span></dt><dt><span class="section"><a href="#idp37658416">7.3. Callsign</a></span></dt><dt><span class="section"><a href="#idp37660656">7.4. Imperial Units</a></span></dt><dt><span class="section"><a href="#idp37662160">7.5. Font Size</a></span></dt><dt><span class="section"><a href="#idp37663440">7.6. Serial Debug</a></span></dt><dt><span class="section"><a href="#idp37664944">7.7. Manage Frequencies</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37666576">8. Configure Groundstation</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37678080">8.1. Frequency</a></span></dt><dt><span class="section"><a href="#idp37679648">8.2. RF Calibration</a></span></dt><dt><span class="section"><a href="#idp37681168">8.3. Telemetry Rate</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37682640">9. Flash Image</a></span></dt><dt><span class="section"><a href="#idp37684304">10. Fire Igniter</a></span></dt><dt><span class="section"><a href="#idp37689936">11. Scan Channels</a></span></dt><dt><span class="section"><a href="#idp37693808">12. Load Maps</a></span></dt><dt><span class="section"><a href="#idp37707856">13. Monitor Idle</a></span></dt></dl></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="414"><tr><td><img src="altosui.png" width="414"></td></tr></table></div></div><p>
+           </p></li></ul></div></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024766256"></a>Chapter 6. AltosUI</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024762640">1. Monitor Flight</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024749312">1.1. Launch Pad</a></span></dt><dt><span class="section"><a href="#idm46789024733680">1.2. Ascent</a></span></dt><dt><span class="section"><a href="#idm46789024728224">1.3. Descent</a></span></dt><dt><span class="section"><a href="#idm46789024721360">1.4. Landed</a></span></dt><dt><span class="section"><a href="#idm46789024714928">1.5. Table</a></span></dt><dt><span class="section"><a href="#idm46789024711344">1.6. Site Map</a></span></dt><dt><span class="section"><a href="#idm46789024704592">1.7. Ignitor</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024700816">2. Save Flight Data</a></span></dt><dt><span class="section"><a href="#idm46789024696864">3. Replay Flight</a></span></dt><dt><span class="section"><a href="#idm46789024694832">4. Graph Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024692448">4.1. Flight Graph</a></span></dt><dt><span class="section"><a href="#idm46789024688000">4.2. Configure Graph</a></span></dt><dt><span class="section"><a href="#idm46789024684336">4.3. Flight Statistics</a></span></dt><dt><span class="section"><a href="#idm46789024680816">4.4. Map</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024676960">5. Export Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024675392">5.1. Comma Separated Value Format</a></span></dt><dt><span class="section"><a href="#idm46789024673040">5.2. Keyhole Markup Language (for Google Earth)</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024671552">6. Configure Altimeter</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024659248">6.1. Main Deploy Altitude</a></span></dt><dt><span class="section"><a href="#idm46789024657680">6.2. Apogee Delay</a></span></dt><dt><span class="section"><a href="#idm46789024656064">6.3. Apogee Lockoug</a></span></dt><dt><span class="section"><a href="#idm46789024653760">6.4. Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024652256">6.5. RF Calibration</a></span></dt><dt><span class="section"><a href="#idm46789024650608">6.6. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idm46789024649312">6.7. Telemetry baud rate</a></span></dt><dt><span class="section"><a href="#idm46789024647744">6.8. APRS Interval</a></span></dt><dt><span class="section"><a href="#idm46789024646176">6.9. APRS SSID</a></span></dt><dt><span class="section"><a href="#idm46789024644848">6.10. Callsign</a></span></dt><dt><span class="section"><a href="#idm46789024643536">6.11. Maximum Flight Log Size</a></span></dt><dt><span class="section"><a href="#idm46789024642096">6.12. Ignitor Firing Mode</a></span></dt><dt><span class="section"><a href="#idm46789024635184">6.13. Pad Orientation</a></span></dt><dt><span class="section"><a href="#idm46789024629952">6.14. Beeper Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024628496">6.15. Configure Pyro Channels</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024622112">7. Configure AltosUI</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024618608">7.1. Voice Settings</a></span></dt><dt><span class="section"><a href="#idm46789024613584">7.2. Log Directory</a></span></dt><dt><span class="section"><a href="#idm46789024611584">7.3. Callsign</a></span></dt><dt><span class="section"><a href="#idm46789024609344">7.4. Imperial Units</a></span></dt><dt><span class="section"><a href="#idm46789024607840">7.5. Font Size</a></span></dt><dt><span class="section"><a href="#idm46789024606560">7.6. Serial Debug</a></span></dt><dt><span class="section"><a href="#idm46789024605056">7.7. Manage Frequencies</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024603424">8. Configure Groundstation</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024592304">8.1. Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024590736">8.2. RF Calibration</a></span></dt><dt><span class="section"><a href="#idm46789024589216">8.3. Telemetry Rate</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024587744">9. Flash Image</a></span></dt><dt><span class="section"><a href="#idm46789024586080">10. Fire Igniter</a></span></dt><dt><span class="section"><a href="#idm46789024580448">11. Scan Channels</a></span></dt><dt><span class="section"><a href="#idm46789024576576">12. Load Maps</a></span></dt><dt><span class="section"><a href="#idm46789024562512">13. Monitor Idle</a></span></dt></dl></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="414"><tr><td><img src="altosui.png" width="414"></td></tr></table></div></div><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
@@ -1303,7 +1305,7 @@ NAR
       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 name="idp37508192"></a>1. Monitor Flight</h2></div><div><h3 class="subtitle">Receive, Record and Display Telemetry Data</h3></div></div></div><p>
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024762640"></a>1. Monitor Flight</h2></div><div><h3 class="subtitle">Receive, Record and Display Telemetry Data</h3></div></div></div><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
@@ -1353,7 +1355,7 @@ NAR
         data relevant to the current state of the flight. You can select
         other tabs 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 name="idp37521120"></a>1.1. Launch Pad</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="launch-pad.png" width="495"></td></tr></table></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024749312"></a>1.1. Launch Pad</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="launch-pad.png" width="495"></td></tr></table></div></div><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
@@ -1403,7 +1405,7 @@ NAR
          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 name="idp37536752"></a>1.2. Ascent</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="ascent.png" width="495"></td></tr></table></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024733680"></a>1.2. Ascent</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="ascent.png" width="495"></td></tr></table></div></div><p>
           This tab is shown during Boost, Fast and Coast
           phases. The information displayed here helps monitor the
           rocket as it heads towards apogee.
@@ -1422,7 +1424,7 @@ NAR
           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 name="idp37542208"></a>1.3. Descent</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="descent.png" width="495"></td></tr></table></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024728224"></a>1.3. Descent</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="descent.png" width="495"></td></tr></table></div></div><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,
@@ -1451,7 +1453,7 @@ NAR
          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 name="idp37549072"></a>1.4. Landed</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="landed.png" width="495"></td></tr></table></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024721360"></a>1.4. Landed</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="landed.png" width="495"></td></tr></table></div></div><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
@@ -1480,13 +1482,13 @@ NAR
          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 class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37555504"></a>1.5. Table</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="table.png" width="495"></td></tr></table></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024714928"></a>1.5. Table</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="table.png" width="495"></td></tr></table></div></div><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 name="idp37559088"></a>1.6. Site Map</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="site-map.png" width="495"></td></tr></table></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024711344"></a>1.6. Site Map</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="site-map.png" width="495"></td></tr></table></div></div><p>
           When the TeleMetrum has a GPS fix, the Site Map tab will map
           the rocket'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
@@ -1513,14 +1515,14 @@ NAR
         </p><p>
          You can pre-load images for your favorite launch sites
          before you leave home; check out the 'Preload Maps' section below.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37565408"></a>1.7. Ignitor</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="ignitor.png" width="495"></td></tr></table></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024704592"></a>1.7. Ignitor</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="ignitor.png" width="495"></td></tr></table></div></div><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 'GO'
           status.
-       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37569184"></a>2. Save Flight Data</h2></div></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024700816"></a>2. Save Flight Data</h2></div></div></div><p>
         The altimeter records flight data to its internal flash memory.
         TeleMetrum data is recorded at a much higher rate than the telemetry
         system can handle, and is not subject to radio drop-outs. As
@@ -1549,7 +1551,7 @@ NAR
         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 name="idp37573136"></a>3. Replay Flight</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024696864"></a>3. Replay Flight</h2></div></div></div><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
@@ -1558,7 +1560,7 @@ NAR
         Once a flight record is selected, the flight monitor interface
         is displayed and the flight is re-enacted in real time. Check
         the Monitor Flight chapter above to learn how this window operates.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37575168"></a>4. Graph Data</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024694832"></a>4. Graph Data</h2></div></div></div><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
@@ -1570,7 +1572,7 @@ NAR
       </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 name="idp37577552"></a>4.1. Flight Graph</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="graph.png" width="540"></td></tr></table></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024692448"></a>4.1. Flight Graph</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="graph.png" width="540"></td></tr></table></div></div><p>
          By default, the graph contains acceleration (blue),
          velocity (green) and altitude (red).
        </p><p>
@@ -1580,18 +1582,18 @@ NAR
         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 name="idp37582000"></a>4.2. Configure Graph</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="graph-configure.png" width="540"></td></tr></table></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024688000"></a>4.2. Configure Graph</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="graph-configure.png" width="540"></td></tr></table></div></div><p>
          This selects which graph elements to show, and, at the
          very bottom, lets you switch between metric and
          imperial units
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37585664"></a>4.3. Flight Statistics</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="graph-stats.png" width="540"></td></tr></table></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024684336"></a>4.3. Flight Statistics</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="graph-stats.png" width="540"></td></tr></table></div></div><p>
          Shows overall data computed from the flight.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37589184"></a>4.4. Map</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="graph-map.png" width="540"></td></tr></table></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024680816"></a>4.4. Map</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="graph-map.png" width="540"></td></tr></table></div></div><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 name="idp37593040"></a>5. Export Data</h2></div></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024676960"></a>5. Export Data</h2></div></div></div><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.
@@ -1600,7 +1602,7 @@ NAR
        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 name="idp37594608"></a>5.1. Comma Separated Value Format</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024675392"></a>5.1. Comma Separated Value Format</h3></div></div></div><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
@@ -1614,11 +1616,11 @@ NAR
           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 name="idp37596960"></a>5.2. Keyhole Markup Language (for Google Earth)</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024673040"></a>5.2. Keyhole Markup Language (for Google Earth)</h3></div></div></div><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 name="idp37598448"></a>6. Configure Altimeter</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="324"><tr><td><img src="configure-altimeter.png" width="324"></td></tr></table></div></div><p>
+        </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024671552"></a>6. Configure Altimeter</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="324"><tr><td><img src="configure-altimeter.png" width="324"></td></tr></table></div></div><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. 
@@ -1646,14 +1648,14 @@ NAR
              lost.
            </p></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 name="idp37610752"></a>6.1. Main Deploy Altitude</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024659248"></a>6.1. Main Deploy Altitude</h3></div></div></div><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 name="idp37612320"></a>6.2. Apogee Delay</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024657680"></a>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 fire at precisely
           the same time, as that can over pressurize the apogee deployment
@@ -1661,7 +1663,7 @@ NAR
           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 name="idp37613936"></a>6.3. Apogee Lockoug</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024656064"></a>6.3. Apogee Lockoug</h3></div></div></div><p>
          Apogee lockout is the number of seconds after boost where
          the flight computer will not fire the apogee charge, even if
          the rocket appears to be at apogee. This is often called
@@ -1671,13 +1673,13 @@ NAR
          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><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37616240"></a>6.4. Frequency</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024653760"></a>6.4. Frequency</h3></div></div></div><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 name="idp37617744"></a>6.5. RF Calibration</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024652256"></a>6.5. RF Calibration</h3></div></div></div><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 
@@ -1685,11 +1687,11 @@ NAR
          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 name="idp37619392"></a>6.6. Telemetry/RDF/APRS Enable</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024650608"></a>6.6. Telemetry/RDF/APRS Enable</h3></div></div></div><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 name="idp37620688"></a>6.7. Telemetry baud rate</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024649312"></a>6.7. Telemetry baud rate</h3></div></div></div><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
@@ -1697,7 +1699,7 @@ NAR
          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 name="idp37622256"></a>6.8. APRS Interval</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024647744"></a>6.8. APRS Interval</h3></div></div></div><p>
          How often to transmit GPS information via APRS (in
          seconds). When set to zero, APRS transmission is
          disabled. This option is available on TeleMetrum v2 and
@@ -1705,19 +1707,19 @@ NAR
          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 name="idp37623824"></a>6.9. APRS SSID</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024646176"></a>6.9. APRS SSID</h3></div></div></div><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 name="idp37625152"></a>6.10. Callsign</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024644848"></a>6.10. Callsign</h3></div></div></div><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 name="idp37626464"></a>6.11. Maximum Flight Log Size</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024643536"></a>6.11. Maximum Flight Log Size</h3></div></div></div><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 name="idp37627904"></a>6.12. Ignitor Firing Mode</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024642096"></a>6.12. Ignitor Firing Mode</h3></div></div></div><p>
          This configuration parameter allows the two standard ignitor
          channels (Apogee and Main) to be used in different
          configurations.
@@ -1736,7 +1738,7 @@ NAR
                  Altitude setting during descent. The 'apogee'
                  channel is fired first, followed after a two second
                  delay by the 'main' channel.
-               </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37634816"></a>6.13. Pad Orientation</h3></div></div></div><p>
+               </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024635184"></a>6.13. Pad Orientation</h3></div></div></div><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
@@ -1750,13 +1752,13 @@ NAR
                In this mode, the antenna end of the
                flight computer must point aft, in line with the
                expected flight path.
-             </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37640048"></a>6.14. Beeper Frequency</h3></div></div></div><p>
+             </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024629952"></a>6.14. Beeper Frequency</h3></div></div></div><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 name="idp37641504"></a>6.15. Configure Pyro Channels</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="configure-pyro.png" width="540"></td></tr></table></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024628496"></a>6.15. Configure Pyro Channels</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="configure-pyro.png" width="540"></td></tr></table></div></div><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
@@ -1780,9 +1782,9 @@ NAR
          configuration along with the rest of the flight computer
          configuration by pressing the 'Save' button in the main
          Configure Flight Computer window.
-       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37647888"></a>7. Configure AltosUI</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="216"><tr><td><img src="configure-altosui.png" width="216"></td></tr></table></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024622112"></a>7. Configure AltosUI</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="216"><tr><td><img src="configure-altosui.png" width="216"></td></tr></table></div></div><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 name="idp37651392"></a>7.1. Voice Settings</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024618608"></a>7.1. Voice Settings</h3></div></div></div><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
@@ -1791,7 +1793,7 @@ NAR
                Plays a short message allowing you to verify
                that the audio system is working and the volume settings
                are reasonable
-             </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37656416"></a>7.2. Log Directory</h3></div></div></div><p>
+             </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024613584"></a>7.2. Log Directory</h3></div></div></div><p>
           AltosUI logs all telemetry data and saves all TeleMetrum flash
           data to this directory. This directory is also used as the
           staring point when selecting data files for display or export.
@@ -1799,7 +1801,7 @@ NAR
           Click on the directory name to bring up a directory choosing
           dialog, select a new 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 name="idp37658416"></a>7.3. Callsign</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024611584"></a>7.3. Callsign</h3></div></div></div><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
@@ -1812,30 +1814,30 @@ NAR
          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 name="idp37660656"></a>7.4. Imperial Units</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024609344"></a>7.4. Imperial Units</h3></div></div></div><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 name="idp37662160"></a>7.5. Font Size</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024607840"></a>7.5. Font Size</h3></div></div></div><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 name="idp37663440"></a>7.6. Serial Debug</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024606560"></a>7.6. Serial Debug</h3></div></div></div><p>
           This causes all communication with a connected device to be
           dumped to the console from which AltosUI was started. If
           you'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 name="idp37664944"></a>7.7. Manage Frequencies</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024605056"></a>7.7. Manage Frequencies</h3></div></div></div><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 name="idp37666576"></a>8. Configure Groundstation</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="279"><tr><td><img src="configure-groundstation.png" width="279"></td></tr></table></div></div><p>
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024603424"></a>8. Configure Groundstation</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="279"><tr><td><img src="configure-groundstation.png" width="279"></td></tr></table></div></div><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 about the
@@ -1862,24 +1864,24 @@ NAR
              lost.
            </p></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 name="idp37678080"></a>8.1. Frequency</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024592304"></a>8.1. Frequency</h3></div></div></div><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 name="idp37679648"></a>8.2. RF Calibration</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024590736"></a>8.2. RF Calibration</h3></div></div></div><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 TeleBT'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 name="idp37681168"></a>8.3. Telemetry Rate</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024589216"></a>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 name="idp37682640"></a>9. Flash Image</h2></div></div></div><p>
+        </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024587744"></a>9. Flash Image</h2></div></div></div><p>
         This reprograms Altus Metrum devices with new
         firmware. TeleMetrum v1.x, TeleDongle v0.2, TeleMini and
         TeleBT are all reprogrammed by using another similar unit as a
@@ -1888,7 +1890,7 @@ NAR
         directly over their USB ports (self programming).  Please read
         the directions for flashing devices in the Updating Device
         Firmware chapter below.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37684304"></a>10. Fire Igniter</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="108"><tr><td><img src="fire-igniter.png" width="108"></td></tr></table></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024586080"></a>10. Fire Igniter</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="108"><tr><td><img src="fire-igniter.png" width="108"></td></tr></table></div></div><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
@@ -1908,18 +1910,17 @@ NAR
        you have 10 seconds to press the '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 name="idp37689936"></a>11. Scan Channels</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="288"><tr><td><img src="scan-channels.png" width="288"></td></tr></table></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024580448"></a>11. Scan Channels</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="288"><tr><td><img src="scan-channels.png" width="288"></td></tr></table></div></div><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 name="idp37693808"></a>12. Load Maps</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="468"><tr><td><img src="load-maps.png" width="468"></td></tr></table></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024576576"></a>12. Load Maps</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="468"><tr><td><img src="load-maps.png" width="468"></td></tr></table></div></div><p>
        Before heading out to a new launch site, you can use this to
        load satellite images in case you don't have internet
-       connectivity at the site. This loads a fairly large area
-       around the launch site, which should cover any flight you're likely to make.
+       connectivity at the site.
       </p><p>
        There's a drop-down menu of launch sites we know about; if
        your favorites aren't there, please let us know the lat/lon
@@ -1946,21 +1947,24 @@ NAR
        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.
+       doubles or halves that number. Larger zoom levels show more
+       detail, smaller zoom levels less.
       </p><p>
-       The Tile Radius value sets how large an area around the center
-       point to download. Each tile is 512x512 pixels, and the
-       'radius' value specifies how many tiles away from the center
-       will be downloaded. Specify a radius of 0 and you get only the
-       center tile. A radius of 1 loads a 3x3 grid, centered on the
-       specified location.
+       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 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 '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 name="idp37707856"></a>13. Monitor Idle</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024562512"></a>13. Monitor Idle</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="468"><tr><td><img src="monitor-idle.png" width="468"></td></tr></table></div></div><p>
        This brings up a dialog similar to the Monitor Flight UI,
        except it works with the altimeter in &#8220;idle&#8221; mode by sending
        query commands to discover the current state rather than
@@ -1969,25 +1973,30 @@ NAR
        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></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp37709952"></a>Chapter 7. AltosDroid</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp37712336">1. Installing AltosDroid</a></span></dt><dt><span class="section"><a href="#idp37714272">2. Connecting to TeleBT</a></span></dt><dt><span class="section"><a href="#idp37716272">3. Configuring AltosDroid</a></span></dt><dt><span class="section"><a href="#idp37717728">4. AltosDroid Flight Monitoring</a></span></dt><dd><dl><dt><span class="section"><a href="#idp37719040">4.1. Pad</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37732592">5. Downloading Flight Logs</a></span></dt></dl></div><p>
+      </p><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 name="idm46789024557472"></a>Chapter 7. AltosDroid</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024554880">1. Installing AltosDroid</a></span></dt><dt><span class="section"><a href="#idm46789024552944">2. Connecting to TeleBT over Bluetooth&#8482;</a></span></dt><dt><span class="section"><a href="#idm46789024550848">3. Connecting to TeleDongle or TeleBT over USB</a></span></dt><dt><span class="section"><a href="#idm46789024549264">4. Configuring AltosDroid</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024548128">4.1. Select radio frequency</a></span></dt><dt><span class="section"><a href="#idm46789024546816">4.2. Select data rate</a></span></dt><dt><span class="section"><a href="#idm46789024545424">4.3. Change units</a></span></dt><dt><span class="section"><a href="#idm46789024544272">4.4. Load maps</a></span></dt><dt><span class="section"><a href="#idm46789024542928">4.5. Map type</a></span></dt><dt><span class="section"><a href="#idm46789024541440">4.6. Toggle Online/Offline maps</a></span></dt><dt><span class="section"><a href="#idm46789024540032">4.7. Select Tracker</a></span></dt><dt><span class="section"><a href="#idm46789024538592">4.8. Delete Track</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024537232">5. AltosDroid Flight Monitoring</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024535920">5.1. Pad</a></span></dt><dt><span class="section"><a href="#idm46789024518464">5.2. Flight</a></span></dt><dt><span class="section"><a href="#idm46789024497344">5.3. Recover</a></span></dt><dt><span class="section"><a href="#idm46789024482000">5.4. Map</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024478928">6. Downloading Flight Logs</a></span></dt></dl></div><p>
       AltosDroid provides the same flight monitoring capabilities as
-      AltosUI, but runs on Android devices and is designed to connect
-      to a TeleBT receiver over Bluetooth&#8482;. AltosDroid monitors
+      AltosUI, but runs on Android devices. AltosDroid is designed to connect
+      to a TeleBT receiver over Bluetooth&#8482; 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 the same way the 'Monitor
-      Flight' window does in AltosUI.
+      device, and presents that data in a UI similar to the 'Monitor
+      Flight' window in AltosUI.
     </p><p>
-      This manual will explain how to configure AltosDroid, connect
-      to TeleBT, 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 name="idp37712336"></a>1. Installing AltosDroid</h2></div></div></div><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 name="idm46789024554880"></a>1. Installing AltosDroid</h2></div></div></div><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 &#8220;altosdroid&#8221;. Make sure you don't
        have a space between &#8220;altos&#8221; and &#8220;droid&#8221; or you probably won'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 name="idp37714272"></a>2. Connecting to TeleBT</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024552944"></a>2. Connecting to TeleBT over Bluetooth&#8482;</h2></div></div></div><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
@@ -1997,78 +2006,231 @@ NAR
        Subsequent connections will not require you to enter that
        code, and your 'paired' 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 name="idp37716272"></a>3. Configuring AltosDroid</h2></div></div></div><p>
-       The only configuration option available for AltosDroid is
-       which frequency to listen on. Press the Android 'Menu' button
-       or soft-key and pick the 'Select radio frequency' entry. That
-       brings up a menu of pre-set radio frequencies; pick the one
-       which matches your altimeter.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37717728"></a>4. AltosDroid Flight Monitoring</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024550848"></a>3. Connecting to TeleDongle or TeleBT over USB</h2></div></div></div><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 name="idm46789024549264"></a>4. Configuring AltosDroid</h2></div></div></div><p>
+       There are several configuration and operation parameters
+       available in the AltosDroid menu.
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024548128"></a>4.1. Select radio frequency</h3></div></div></div><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.
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024546816"></a>4.2. Select data rate</h3></div></div></div><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.
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024545424"></a>4.3. Change units</h3></div></div></div><p>
+         This toggles between metric and imperial units.
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024544272"></a>4.4. Load maps</h3></div></div></div><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.
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024542928"></a>4.5. Map type</h3></div></div></div><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.
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024541440"></a>4.6. Toggle Online/Offline maps</h3></div></div></div><p>
+         Switches 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.
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024540032"></a>4.7. Select Tracker</h3></div></div></div><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.
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024538592"></a>4.8. Delete Track</h3></div></div></div><p>
+         Deletes all information about a transmitting device.
+       </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024537232"></a>5. AltosDroid Flight Monitoring</h2></div></div></div><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 class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37719040"></a>4.1. Pad</h3></div></div></div><p>
-          The 'Launch Pad' tab shows information used to decide when the
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024535920"></a>5.1. Pad</h3></div></div></div><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><div class="variablelist"><dl class="variablelist"><dt><span class="term">Battery Voltage</span></dt><dd><p>
-                 This indicates whether the Li-Po battery
-                 powering the TeleMetrum has sufficient charge to last for
-                 the duration of the flight. A value of more than
-                 3.8V is required for a 'GO' status.
-               </p></dd><dt><span class="term">Apogee Igniter Voltage</span></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 'GO' status.
-               </p></dd><dt><span class="term">Main Igniter Voltage</span></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 'GO' status.
-               </p></dd><dt><span class="term">On-board Data Logging</span></dt><dd><p>
-                 This indicates whether there is
-                 space remaining on-board to store flight data for the
-                 upcoming flight. If you've downloaded data, but failed
-                 to erase flights, there may not be any space
-                 left. TeleMetrum can store multiple flights, depending
-                 on the configured maximum flight log size. TeleMini
-                 stores only a single 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.
-               </p></dd><dt><span class="term">GPS Locked</span></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.
-               </p></dd><dt><span class="term">GPS Ready</span></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.
-               </p></dd></dl></div><p>
+          whether the rocket is ready to launch.
        </p><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><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37732592"></a>5. Downloading Flight Logs</h2></div></div></div><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><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 'GO' status.
+             </p></dd><dt><span class="term">Receiver Battery</span></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 'GO' status.
+             </p></dd><dt><span class="term">Data Logging</span></dt><dd><p>
+               This indicates whether there is space remaining
+               on-board to store flight data for the upcoming
+               flight. If you'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 data continuously. TeleMini
+               stores only a single 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.
+             </p></dd><dt><span class="term">GPS Locked</span></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.
+             </p></dd><dt><span class="term">GPS Ready</span></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.
+             </p></dd><dt><span class="term">Apogee Igniter</span></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 'GO' status.
+             </p></dd><dt><span class="term">Main Igniter</span></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 'GO' status.
+             </p></dd><dt><span class="term">Igniter A-D</span></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 'GO' status.
+             </p></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><h3 class="title"><a name="idm46789024518464"></a>5.2. Flight</h3></div></div></div><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 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><p>
+               Shows current vertical speed. During descent, the
+               speed values are averaged over a fairly long time to
+               try and make them steadier.
+             </p></dd><dt><span class="term">Height</span></dt><dd><p>
+               Shows the current height above the launch pad.
+             </p></dd><dt><span class="term">Max Speed</span></dt><dd><p>
+               Shows the maximum vertical speed seen during the flight.
+             </p></dd><dt><span class="term">Max Height</span></dt><dd><p>
+               Shows the maximum height above launch pad.
+             </p></dd><dt><span class="term">Elevation</span></dt><dd><p>
+               This is the angle above the horizon from the android
+               devices current position.
+             </p></dd><dt><span class="term">Range</span></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.
+             </p></dd><dt><span class="term">Bearing</span></dt><dd><p>
+               This is the aziumuth 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). You'll want to know which direction is true
+               north before launching your rocket.
+             </p></dd><dt><span class="term">Ground Distance</span></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.
+             </p></dd><dt><span class="term">Latitude/Longitude</span></dt><dd><p>
+               Displays the last known location of the rocket.
+             </p></dd><dt><span class="term">Apogee Igniter</span></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 'GO' status.
+             </p></dd><dt><span class="term">Main Igniter</span></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 'GO' status.
+             </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024497344"></a>5.3. Recover</h3></div></div></div><p>
+          The 'Recover' tab shows information used while recovering the
+         rocket on the ground after flight.
+       </p><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><p>
+               This is the aziumuth 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). You'll want to know which direction is true
+               north before launching your rocket.
+             </p></dd><dt><span class="term">Direction</span></dt><dd><p>
+               When you are in motion, this provides the angle from
+               your current direction of motion towards the rocket.
+             </p></dd><dt><span class="term">Distance</span></dt><dd><p>
+               Distance over the ground to the rocket.
+             </p></dd><dt><span class="term">Tar Lat/Tar Lon</span></dt><dd><p>
+               Displays the last known location of the rocket.
+             </p></dd><dt><span class="term">My Lat/My Lon</span></dt><dd><p>
+               Displays the location of the Android device.
+             </p></dd><dt><span class="term">Max Height</span></dt><dd><p>
+               Shows the maximum height above launch pad.
+             </p></dd><dt><span class="term">Max Speed</span></dt><dd><p>
+               Shows the maximum vertical speed seen during the flight.
+             </p></dd><dt><span class="term">Max Accel</span></dt><dd><p>
+               Shows the maximum vertical acceleration seen during the flight.
+             </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024482000"></a>5.4. Map</h3></div></div></div><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 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 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><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024478928"></a>6. Downloading Flight Logs</h2></div></div></div><p>
        AltosDroid always saves every bit of telemetry data it
        receives. To download that to a computer for use with AltosUI,
-       simply remove the SD card from your Android device, or connect
-       your device to your computer's USB port and browse the files
-       on that device. You will find '.telem' files in the TeleMetrum
+       remove the SD card from your Android device, or connect your
+       device to your computer's USB port and browse the files on
+       that device. You will find '.telem' files in the TeleMetrum
        directory that will work with AltosUI directly.
-      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp37734256"></a>Chapter 8. Using Altus Metrum Products</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp37734896">1. Being Legal</a></span></dt><dt><span class="section"><a href="#idp37736800">2. In the Rocket</a></span></dt><dt><span class="section"><a href="#idp37739328">3. On the Ground</a></span></dt><dt><span class="section"><a href="#idp37753120">4. Data Analysis</a></span></dt><dt><span class="section"><a href="#idp37756432">5. Future Plans</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37734896"></a>1. Being Legal</h2></div></div></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024477280"></a>Chapter 8. Using Altus Metrum Products</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024476640">1. Being Legal</a></span></dt><dt><span class="section"><a href="#idm46789024474736">2. In the Rocket</a></span></dt><dt><span class="section"><a href="#idm46789024472208">3. On the Ground</a></span></dt><dt><span class="section"><a href="#idm46789024458400">4. Data Analysis</a></span></dt><dt><span class="section"><a href="#idm46789024455856">5. Future Plans</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024476640"></a>1. Being Legal</h2></div></div></div><p>
         First off, in the US, you need an <a class="ulink" href="http://www.altusmetrum.org/Radio/" target="_top">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 name="idp37736800"></a>2. In the Rocket</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024474736"></a>2. In the Rocket</h2></div></div></div><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 alkaline battery, and will 
@@ -2084,7 +2246,7 @@ NAR
          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 name="idp37739328"></a>3. On the Ground</h2></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024472208"></a>3. On the Ground</h2></div></div></div><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> units.  If possible, use an SMA to BNC 
        adapter instead of feedline between the antenna feedpoint and 
@@ -2146,7 +2308,7 @@ NAR
           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 name="idp37753120"></a>4. Data Analysis</h2></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024458400"></a>4. Data Analysis</h2></div></div></div><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
@@ -2161,7 +2323,7 @@ NAR
           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 name="idp37756432"></a>5. Future Plans</h2></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024455856"></a>5. Future Plans</h2></div></div></div><p>
           We have designed and prototyped several &#8220;companion boards&#8221; that 
          can attach to the companion connector on TeleMetrum,
          TeleMega and EasyMega
@@ -2181,14 +2343,14 @@ NAR
          Watch our 
          <a class="ulink" href="http://altusmetrum.org/" target="_top">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 name="idp37760272"></a>Chapter 9. Altimeter Installation Recommendations</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp37761728">1. Mounting the Altimeter</a></span></dt><dt><span class="section"><a href="#idp37766560">2. Dealing with the Antenna</a></span></dt><dt><span class="section"><a href="#idp37772128">3. Preserving GPS Reception</a></span></dt><dt><span class="section"><a href="#idp37776912">4. Radio Frequency Interference</a></span></dt><dt><span class="section"><a href="#idp37784480">5. The Barometric Sensor</a></span></dt><dt><span class="section"><a href="#idp37787280">6. Ground Testing</a></span></dt></dl></div><p>
+        </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024451664"></a>Chapter 9. Altimeter Installation Recommendations</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024450208">1. Mounting the Altimeter</a></span></dt><dt><span class="section"><a href="#idm46789024445376">2. Dealing with the Antenna</a></span></dt><dt><span class="section"><a href="#idm46789024439280">3. Preserving GPS Reception</a></span></dt><dt><span class="section"><a href="#idm46789024434496">4. Radio Frequency Interference</a></span></dt><dt><span class="section"><a href="#idm46789024426928">5. The Barometric Sensor</a></span></dt><dt><span class="section"><a href="#idm46789024424128">6. Ground Testing</a></span></dt></dl></div><p>
       Building high-power rockets that fly safely is hard enough. Mix
       in some sophisticated electronics and a bunch of radio energy
       and some creativity and/or compromise may be required. This chapter
       contains some suggestions about how to install Altus Metrum
       products into a rocket air-frame, including how to safely and
       reliably mix a variety of electronics into the same air-frame.
-    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37761728"></a>1. Mounting the Altimeter</h2></div></div></div><p>
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024450208"></a>1. Mounting the Altimeter</h2></div></div></div><p>
        The first consideration is to ensure that the altimeter is
        securely fastened to the air-frame. For most of our products, we 
        prefer nylon standoffs and nylon screws; they're good to at least 50G
@@ -2208,7 +2370,7 @@ NAR
            Watch for any metal touching components on the
            board. Shorting out connections on the bottom of the board
            can cause the altimeter to fail during flight.
-         </p></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37766560"></a>2. Dealing with the Antenna</h2></div></div></div><p>
+         </p></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024445376"></a>2. Dealing with the Antenna</h2></div></div></div><p>
        The antenna supplied is just a piece of solid, insulated,
        wire. If it gets damaged or broken, it can be easily
        replaced. It should be kept straight and not cut; bending or
@@ -2251,7 +2413,7 @@ NAR
        SMA connector, and then run 50&#937; coax from the board to the
        antenna. Building a remote antenna is beyond the scope of this
        manual.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37772128"></a>3. Preserving GPS Reception</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024439280"></a>3. Preserving GPS Reception</h2></div></div></div><p>
        The GPS antenna and receiver used in TeleMetrum and TeleMega is 
        highly sensitive and normally have no trouble tracking enough
        satellites to provide accurate position information for
@@ -2270,7 +2432,7 @@ NAR
            antenna as that's covered with a ground plane. But, keep
            wires and metal out from above the patch antenna.
          </p></li></ol></div><p>
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37776912"></a>4. Radio Frequency Interference</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024434496"></a>4. Radio Frequency Interference</h2></div></div></div><p>
        Any altimeter will generate RFI; the digital circuits use
        high-frequency clocks that spray radio interference across a
        wide band. Altus Metrum altimeters generate intentional radio
@@ -2308,7 +2470,7 @@ NAR
          70cm amateur band, so you should avoid lengths that are a
          simple ratio of that length; essentially any multiple of ¼
          of the wavelength (17.5cm).
-         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37784480"></a>5. The Barometric Sensor</h2></div></div></div><p>
+         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024426928"></a>5. The Barometric Sensor</h2></div></div></div><p>
        Altusmetrum altimeters measure altitude with a barometric
        sensor, essentially measuring the amount of air above the
        rocket to figure out how high it is. A large number of
@@ -2326,7 +2488,7 @@ NAR
        the products of APCP or BP combustion, so make sure the ebay is 
        carefully sealed from any compartment which contains ejection 
        charges or motors.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37787280"></a>6. Ground Testing</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024424128"></a>6. Ground Testing</h2></div></div></div><p>
        The most important aspect of any installation is careful
        ground testing. Bringing an air-frame up to the LCO table which
        hasn't been ground tested can lead to delays or ejection
@@ -2348,10 +2510,10 @@ NAR
        interface through a TeleDongle to command each charge to
        fire. Make sure the charge is sufficient to robustly separate
        the air-frame and deploy the recovery system.
-      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp37790448"></a>Chapter 10. Updating Device Firmware</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp37794528">1. 
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024420960"></a>Chapter 10. Updating Device Firmware</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024416880">1. 
        Updating TeleMega, TeleMetrum v2, EasyMega, EasyMini or
        TeleDongle v3 Firmware
-      </a></span></dt><dd><dl><dt><span class="section"><a href="#idp37803664">1.1. Recovering From Self-Flashing Failure</a></span></dt></dl></dd><dt><span class="section"><a href="#idp37824016">2. Pair Programming</a></span></dt><dt><span class="section"><a href="#idp37825472">3. Updating TeleMetrum v1.x Firmware</a></span></dt><dt><span class="section"><a href="#idp37838736">4. Updating TeleMini Firmware</a></span></dt><dt><span class="section"><a href="#idp37852352">5. Updating TeleDongle v0.2 Firmware</a></span></dt></dl></div><p>
+      </a></span></dt><dd><dl><dt><span class="section"><a href="#idm46789024407744">1.1. Recovering From Self-Flashing Failure</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46789024387392">2. Pair Programming</a></span></dt><dt><span class="section"><a href="#idm46789024385936">3. Updating TeleMetrum v1.x Firmware</a></span></dt><dt><span class="section"><a href="#idm46789024372672">4. Updating TeleMini Firmware</a></span></dt><dt><span class="section"><a href="#idm46789024359056">5. Updating TeleDongle v0.2 Firmware</a></span></dt></dl></div><p>
       TeleMega, TeleMetrum v2, EasyMega, EasyMini and TeleDongle v3
       are all programmed directly over their USB connectors (self
       programming). TeleMetrum v1, TeleMini and TeleDongle v0.2 are
@@ -2375,7 +2537,7 @@ NAR
     </p><p>
       Self-programmable devices (TeleMega, TeleMetrum v2, EasyMega and EasyMini)
       are reprogrammed by connecting them to your computer over USB
-    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37794528"></a>1. 
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024416880"></a>1. 
        Updating TeleMega, TeleMetrum v2, EasyMega, EasyMini or
        TeleDongle v3 Firmware
       </h2></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
@@ -2404,7 +2566,7 @@ NAR
            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="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp37803664"></a>1.1. Recovering From Self-Flashing Failure</h3></div></div></div><p>
+         </p></li></ol></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46789024407744"></a>1.1. Recovering From Self-Flashing Failure</h3></div></div></div><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
@@ -2468,13 +2630,13 @@ NAR
            </p></li><li class="listitem"><p>
              Once the board has been powered up, you can remove the
              piece of wire.
-           </p></li></ol></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37824016"></a>2. Pair Programming</h2></div></div></div><p>
+           </p></li></ol></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024387392"></a>2. Pair Programming</h2></div></div></div><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 don't support programming
        directly over USB for these devices.
-      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37825472"></a>3. Updating TeleMetrum v1.x Firmware</h2></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024385936"></a>3. Updating TeleMetrum v1.x Firmware</h2></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><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.
@@ -2517,7 +2679,7 @@ NAR
           the version, etc.
          </p></li><li class="listitem"><p>
           If something goes wrong, give it another try.
-         </p></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37838736"></a>4. Updating TeleMini Firmware</h2></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
+         </p></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024372672"></a>4. Updating TeleMini Firmware</h2></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
          You'll need a special 'programming cable' to reprogram the
          TeleMini.  You can make your own using an 8-pin MicroMaTch 
          connector on one end and a set of four pins on the other.
@@ -2560,7 +2722,7 @@ NAR
          letting it come up in &#8220;flight&#8221; mode and listening for telemetry.
         </p></li><li class="listitem"><p>
           If something goes wrong, give it another try.
-        </p></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37852352"></a>5. Updating TeleDongle v0.2 Firmware</h2></div></div></div><p>
+        </p></li></ol></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024359056"></a>5. Updating TeleDongle v0.2 Firmware</h2></div></div></div><p>
         Updating TeleDongle v0.2 firmware is just like updating
        TeleMetrum v1.x or TeleMini
        firmware, but you use either a TeleMetrum v1.x, TeleDongle
@@ -2624,19 +2786,19 @@ NAR
         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 class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp37869568"></a>Chapter 11. Hardware Specifications</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp37870208">1. 
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024342288"></a>Chapter 11. Hardware Specifications</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024341648">1. 
        TeleMega Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37881680">2. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024330176">2. 
        EasyMega Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37891424">3. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024320432">3. 
        TeleMetrum v2 Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37901984">4. TeleMetrum v1 Specifications</a></span></dt><dt><span class="section"><a href="#idp37912544">5. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024309872">4. TeleMetrum v1 Specifications</a></span></dt><dt><span class="section"><a href="#idm46789024299312">5. 
        TeleMini v2.0 Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37921376">6. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024290480">6. 
        TeleMini v1.0 Specifications
-      </a></span></dt><dt><span class="section"><a href="#idp37930176">7. 
+      </a></span></dt><dt><span class="section"><a href="#idm46789024281680">7. 
        EasyMini Specifications
-      </a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37870208"></a>1. 
+      </a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024341648"></a>1. 
        TeleMega Specifications
       </h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Recording altimeter for model rocketry.
@@ -2666,7 +2828,7 @@ NAR
            to fire e-matches.
          </p></li><li class="listitem"><p>
            3.25 x 1.25 inch board designed to fit inside 38mm air-frame coupler tube.
-         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37881680"></a>2. 
+         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024330176"></a>2. 
        EasyMega Specifications
       </h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Recording altimeter for model rocketry.
@@ -2692,7 +2854,7 @@ NAR
            to fire e-matches.
          </p></li><li class="listitem"><p>
            1.25 x 1.25 inch board designed to fit inside 38mm air-frame coupler tube.
-         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37891424"></a>3. 
+         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024320432"></a>3. 
        TeleMetrum v2 Specifications
       </h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Recording altimeter for model rocketry.
@@ -2718,7 +2880,7 @@ NAR
            optional separate pyro battery if needed.
          </p></li><li class="listitem"><p>
            2.75 x 1 inch board designed to fit inside 29mm air-frame coupler tube.
-         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37901984"></a>4. TeleMetrum v1 Specifications</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024309872"></a>4. TeleMetrum v1 Specifications</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Recording altimeter for model rocketry.
          </p></li><li class="listitem"><p>
            Supports dual deployment (can fire 2 ejection charges).
@@ -2742,7 +2904,7 @@ NAR
            optional separate pyro battery if needed.
          </p></li><li class="listitem"><p>
            2.75 x 1 inch board designed to fit inside 29mm air-frame coupler tube.
-         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37912544"></a>5. 
+         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024299312"></a>5. 
        TeleMini v2.0 Specifications
       </h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Recording altimeter for model rocketry.
@@ -2764,7 +2926,7 @@ NAR
            optional separate pyro battery if needed.
          </p></li><li class="listitem"><p>
            1.5 x .8 inch board designed to fit inside 24mm air-frame coupler tube.
-         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37921376"></a>6. 
+         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024290480"></a>6. 
        TeleMini v1.0 Specifications
       </h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Recording altimeter for model rocketry.
@@ -2785,7 +2947,7 @@ NAR
            optional separate pyro battery if needed.
          </p></li><li class="listitem"><p>
            1.5 x .5 inch board designed to fit inside 18mm air-frame coupler tube.
-         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37930176"></a>7. 
+         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024281680"></a>7. 
        EasyMini Specifications
       </h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Recording altimeter for model rocketry.
@@ -2805,7 +2967,7 @@ NAR
            optional separate pyro battery if needed.
          </p></li><li class="listitem"><p>
            1.5 x .8 inch board designed to fit inside 24mm air-frame coupler tube.
-         </p></li></ul></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp37938288"></a>Chapter 12. FAQ</h1></div></div></div><p>
+         </p></li></ul></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024273568"></a>Chapter 12. FAQ</h1></div></div></div><p>
         <span class="emphasis"><em>TeleMetrum seems to shut off when disconnected from the
         computer.</em></span>  
        Make sure the battery is adequately charged.  Remember the
@@ -2850,7 +3012,7 @@ NAR
         data after physically retrieving your altimeter.  Make sure to save
         the on-board data after each flight; while the TeleMetrum can store
        multiple flights, you never know when you'll lose the altimeter...
-      </p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idp37947888"></a>Appendix A. Notes for Older Software</h1></div></div></div><p>
+      </p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024264720"></a>Appendix A. Notes for Older Software</h1></div></div></div><p>
       <span class="emphasis"><em>
       Before AltosUI was written, using Altus Metrum devices required
       some finesse with the Linux command line. There was a limited
@@ -3027,25 +3189,25 @@ NAR
       the Log and Device menus.  It has a wonderful display of the incoming
       flight data and I am sure you will enjoy what it has to say to you
       once you enable the voice output!
-    </p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idp37969232"></a>Appendix B. Drill Templates</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp37970400">1. TeleMega template</a></span></dt><dt><span class="section"><a href="#idp37987088">2. EasyMega template</a></span></dt><dt><span class="section"><a href="#idp37991472">3. TeleMetrum template</a></span></dt><dt><span class="section"><a href="#idp37995856">4. TeleMini v2/EasyMini template</a></span></dt><dt><span class="section"><a href="#idp38000256">5. TeleMini v1 template</a></span></dt></dl></div><p>
+    </p></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024241856"></a>Appendix B. Drill Templates</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024240688">1. TeleMega template</a></span></dt><dt><span class="section"><a href="#idm46789024224000">2. EasyMega template</a></span></dt><dt><span class="section"><a href="#idm46789024219616">3. TeleMetrum template</a></span></dt><dt><span class="section"><a href="#idm46789024215232">4. TeleMini v2/EasyMini template</a></span></dt><dt><span class="section"><a href="#idm46789024210832">5. TeleMini v1 template</a></span></dt></dl></div><p>
       These images, when printed, provide precise templates for the
       mounting holes in Altus Metrum flight computers
-    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37970400"></a>1. TeleMega template</h2></div></div></div><p>
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024240688"></a>1. TeleMega template</h2></div></div></div><p>
        TeleMega has overall dimensions of 1.250 x 3.250 inches, and
        the mounting holes are sized for use with 4-40 or M3 screws.
-      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="TeleMegaTemplate"></a><object type="image/svg+xml" data="telemega.svg" align="middle"></object></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37987088"></a>2. EasyMega template</h2></div></div></div><p>
+      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="TeleMegaTemplate"></a><object type="image/svg+xml" data="telemega.svg" align="middle"></object></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024224000"></a>2. EasyMega template</h2></div></div></div><p>
        EasyMega has overall dimensions of 1.250 x 2.250 inches, and
        the mounting holes are sized for use with 4-40 or M3 screws.
-      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="EasyMegaTemplate"></a><object type="image/svg+xml" data="easymega.svg" align="middle"></object></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37991472"></a>3. TeleMetrum template</h2></div></div></div><p>
+      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="EasyMegaTemplate"></a><object type="image/svg+xml" data="easymega.svg" align="middle"></object></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024219616"></a>3. TeleMetrum template</h2></div></div></div><p>
        TeleMetrum has overall dimensions of 1.000 x 2.750 inches, and the
        mounting holes are sized for use with 4-40 or M3 screws.
-      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="TeleMetrumTemplate"></a><object type="image/svg+xml" data="telemetrum.svg" align="middle"></object></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp37995856"></a>4. TeleMini v2/EasyMini template</h2></div></div></div><p>
+      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="TeleMetrumTemplate"></a><object type="image/svg+xml" data="telemetrum.svg" align="middle"></object></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024215232"></a>4. TeleMini v2/EasyMini template</h2></div></div></div><p>
        TeleMini v2 and EasyMini have overall dimensions of 0.800 x 1.500 inches, and the
        mounting holes are sized for use with 4-40 or M3 screws.
-      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="MiniTemplate"></a><object type="image/svg+xml" data="easymini.svg" align="middle"></object></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38000256"></a>5. TeleMini v1 template</h2></div></div></div><p>
+      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="MiniTemplate"></a><object type="image/svg+xml" data="easymini.svg" align="middle"></object></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024210832"></a>5. TeleMini v1 template</h2></div></div></div><p>
        TeleMini has overall dimensions of 0.500 x 1.500 inches, and the
        mounting holes are sized for use with 2-56 or M2 screws.
-      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="TeleMiniTemplate"></a><object type="image/svg+xml" data="telemini.svg" align="middle"></object></div></div></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idp38004768"></a>Appendix C. Calibration</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp38006320">1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idp38011520">2. TeleMetrum, TeleMega and EasyMega Accelerometers</a></span></dt></dl></div><p>
+      </p><div class="informalfigure"><div class="mediaobject" align="center"><a name="TeleMiniTemplate"></a><object type="image/svg+xml" data="telemini.svg" align="middle"></object></div></div></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024206320"></a>Appendix C. Calibration</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024204768">1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idm46789024200224">2. TeleMetrum, TeleMega and EasyMega Accelerometers</a></span></dt></dl></div><p>
         There are only two calibrations required for TeleMetrum and
         TeleMega, and only one for EasyMega, TeleDongle, TeleMini and EasyMini.
         All boards are shipped from the factory pre-calibrated, but
@@ -3054,7 +3216,7 @@ NAR
         connect to the board with a serial terminal program and
         interact directly with the on-board command interpreter to
         effect calibration.
-      </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38006320"></a>1. Radio Frequency</h2></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024204768"></a>1. Radio Frequency</h2></div></div></div><p>
           The radio frequency is synthesized from a clock based on the
           crystal on the board.  The actual frequency of this oscillator 
           must be measured to generate a calibration constant.  While our 
@@ -3090,7 +3252,7 @@ NAR
          radio frequency is reset to the default 434.550 Mhz.  If you want
          to use another frequency, you will have to set that again after
          calibration is completed.
-       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38011520"></a>2. TeleMetrum, TeleMega and EasyMega Accelerometers</h2></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024200224"></a>2. TeleMetrum, TeleMega and EasyMega Accelerometers</h2></div></div></div><p>
           While barometric sensors are factory-calibrated,
           accelerometers are not, and so each must be calibrated once
           installed in a flight computer.  Explicitly calibrating the
@@ -3127,12 +3289,12 @@ NAR
          to the index post on the 4-pin end of the programming cable,
          and power up the board.  It should come up in 'idle mode'
          (two beeps), allowing a re-cal.
-        </p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idp38016624"></a>Appendix D. Igniter Current</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp38017888">1. Current Products</a></span></dt><dt><span class="section"><a href="#idp38021328">2. Version 1 Products</a></span></dt></dl></div><p>
+        </p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024194544"></a>Appendix D. Igniter Current</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46789024193280">1. Current Products</a></span></dt><dt><span class="section"><a href="#idm46789024189840">2. Version 1 Products</a></span></dt></dl></div><p>
        The question "how much igniter current can Altus Metrum products 
        handle?" comes up fairly frequently.  The short answer is "more than
        you're likely to need", the remainder of this appendix provides a
        longer answer.
-      </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38017888"></a>1. Current Products</h2></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024193280"></a>1. Current Products</h2></div></div></div><p>
          The FET switches we're using on all of our current products that 
          have pyro channels are the Vishay Siliconix Si7232DN.  These parts 
          have exceptionally low Rds(on) values, better than 0.02 ohms!  That 
@@ -3152,7 +3314,7 @@ NAR
          and build up pyrogen(s) as required to actually light what you're 
          trying to light...  But if you want to use a high-current igniter, 
          we can probably handle it!
-       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38021328"></a>2. Version 1 Products</h2></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024189840"></a>2. Version 1 Products</h2></div></div></div><p>
          The FET switches used on TeleMetrum v1 and TeleMini v1 products
          were Fairchild FDS9926A.  The Rds(on) values under our operating
          conditions are on the order of 0.04 ohms.  These parts were rated
@@ -3164,7 +3326,105 @@ NAR
          specs on these parts aren't as good as the ones we use on current
          products, they were still great, and we never had a complaint about
          current carrying capacity with any of our v1 boards.
-       </p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idp38023664"></a>Appendix E. Release Notes</h1></div></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38024304"></a>Version 1.6</h2></div></div></div><p>
+       </p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idm46789024187504"></a>Appendix E. Release Notes</h1></div></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024186864"></a>Version 1.6.1</h2></div></div></div><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><p>
+    AltOS New Features
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Add support for TeleBT v3.0 boards.
+       </p></li><li class="listitem"><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.
+       </p></li></ul></div><p>
+  </p><p>
+    AltOS Fixes
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Make TeleDongle and TeleBT more tolerant of data rate
+         variations from transmitting devices.
+       </p></li></ul></div><p>
+  </p><p>
+    AltosUI and TeleGPS New Features
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Add map to Monitor Idle display. It's nice to be able to
+         verify that maps are working, instead of needing to use
+         Monitor Flight.
+       </p></li></ul></div><p>
+  </p><p>
+    AltosUI Fixes
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Fix frequency configuration to round values instead of
+         truncate them, avoiding a common 1kHz error in the setting.
+       </p></li><li class="listitem"><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.
+       </p></li><li class="listitem"><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 class="listitem"><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.
+       </p></li><li class="listitem"><p>
+         Allow configuration of frequency and callsign in Monitor
+         Idle mode.
+       </p></li><li class="listitem"><p>
+         Fix layout weirdness when resizing windows on
+         Windows. Windows shouldn't have giant blank spaces around
+         the useful content anymore.
+       </p></li><li class="listitem"><p>
+         Fix layout weirdness when resizing windows on
+         Windows. Windows shouldn't have giant blank spaces around
+         the useful content anymore.
+       </p></li><li class="listitem"><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.
+       </p></li><li class="listitem"><p>
+         Make Replay Flight run in realtime again. It had been set to
+         run at 10x speed by mistake.
+       </p></li></ul></div><p>
+  </p><p>
+    AltosDroid New Features
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Add offline map support using mapping code from AltosUI.
+       </p></li><li class="listitem"><p>
+         Support TeleDongle (and TeleBT via USB) on devices
+         supporting USB On-The-Go.
+       </p></li><li class="listitem"><p>
+         Display additional TeleMega pyro channel status in Pad tab.
+       </p></li><li class="listitem"><p>
+         Switch between metric and imperial units.
+       </p></li><li class="listitem"><p>
+         Monitor TeleBT battery voltage.
+       </p></li><li class="listitem"><p>
+         Track multiple devices at the same time, selecting between
+         them with a menu or using the map.
+       </p></li><li class="listitem"><p>
+         Add hybrid, satellite and terrain map types.
+       </p></li></ul></div><p>
+  </p><p>
+    AltosDroid Fixes
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Use standard Android display conventions so that a menu
+         button is available in the application title bar.
+       </p></li><li class="listitem"><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.
+       </p></li><li class="listitem"><p>
+         Make voice announcements depend on current tab.
+       </p></li><li class="listitem"><p>
+         Compute adjustment to current travel direction while in
+         motion towards rocket.
+       </p></li></ul></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024185264"></a>Version 1.6</h2></div></div></div><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.
@@ -3246,7 +3506,7 @@ NAR
          information each time we change channels. This avoids having
          flight computers appear on multiple frequencies by accident.
        </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38025904"></a>Version 1.5</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024183664"></a>Version 1.5</h2></div></div></div><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
@@ -3313,7 +3573,7 @@ NAR
          provide the user with the option to skip installing Java for
          cases where we just can't figure out what version is installed.
        </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38027504"></a>Version 1.4.1</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024182160"></a>Version 1.4.1</h2></div></div></div><p>
     Version 1.4.1 is a minor release. It fixes install issues on
     Windows and provides the missing TeleMetrum V2.0 firmware. There
     aren't any changes to the firmware or host applications at
@@ -3344,7 +3604,7 @@ NAR
          release didn't have this key in the released version of the
          software, making map downloading fail for most people.
        </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38029008"></a>Version 1.4</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024180656"></a>Version 1.4</h2></div></div></div><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
@@ -3457,7 +3717,7 @@ NAR
          prevents the apogee charge from firing for a configurable
          amount of time after boost.
        </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38030512"></a>Version 1.3.2</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024179152"></a>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><p>
@@ -3485,7 +3745,7 @@ NAR
          Use letters (A, B, C, D) for alternate pyro channel names
          instead of numbers (0, 1, 2, 3) in the Fire Igniter dialog.
        </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38032016"></a>Version 1.3.1</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024177648"></a>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><p>
@@ -3527,7 +3787,7 @@ NAR
          Google to make sure we stay within their limits so that all
          of the map tiles download successfully.
        </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38033520"></a>Version 1.3</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024176144"></a>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><p>
@@ -3568,7 +3828,7 @@ NAR
        </p></li><li class="listitem"><p>
          Save the last log directory and offer that as the default for new downloads
        </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38035024"></a>Version 1.2.1</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024174640"></a>Version 1.2.1</h2></div></div></div><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.
@@ -3628,7 +3888,7 @@ NAR
        a complete summary of the flight without needing to 'replay'
        the whole thing.
       </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38036528"></a>Version 1.2</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024173136"></a>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><p>
@@ -3654,7 +3914,7 @@ NAR
        Altus Metrum software packages to be installed in the same
        directory at the same time.
       </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38038032"></a>Version 1.1.1</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024171632"></a>Version 1.1.1</h2></div></div></div><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
@@ -3699,7 +3959,7 @@ NAR
        from the flight computer was missing a check for TeleMini when
        deciding whether to fetch the analog sensor data.
       </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38039536"></a>Version 1.1</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024170128"></a>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><p>
@@ -3771,7 +4031,7 @@ NAR
        Add Imperial units mode to present data in feet instead of
        meters.
       </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38041040"></a>Version 1.0.1</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024168624"></a>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><p>
@@ -3851,7 +4111,7 @@ NAR
        Flight window so you can immediately see the results of a
        flight.
       </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38042544"></a>Version 0.9.2</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024167120"></a>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="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Fix plotting problems due to missing file in the Mac OS install image.
@@ -3859,7 +4119,7 @@ NAR
       Always read whole eeprom blocks, mark empty records invalid, display parsing errors to user.
 </p></li><li class="listitem"><p>
       Add software version to Configure AltosUI dialog
-</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38044048"></a>Version 0.9</h2></div></div></div><p>
+</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024165616"></a>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="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
@@ -3878,7 +4138,7 @@ NAR
       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.
-</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38045552"></a>Version 0.8</h2></div></div></div><p>
+</p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024164112"></a>Version 0.8</h2></div></div></div><p>
     Version 0.8 offers a major upgrade in the AltosUI
     interface. Significant new features include:
   </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
@@ -3918,7 +4178,7 @@ NAR
       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.
-    </p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp38047056"></a>Version 0.7.1</h2></div></div></div><p>
+    </p></li></ul></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46789024162608"></a>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. AltosUI can:
   </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Receive and log telemetry from a connected TeleDongle
index 6fe70a693aaa1c6bf4b18ec23a68d317c9831b59..a2577879aa6e25eb0a4b7d3295bf1ad354002d63 100644 (file)
Binary files a/AltOS/doc/altusmetrum.pdf and b/AltOS/doc/altusmetrum.pdf differ
index a2d9a77145e0c9f4fb4520d8400c249eb30c37d7..7d903876bcb16864ffd3717ac4064c6abf55ee25 100644 (file)
@@ -1,10 +1,10 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AltOS Companion Port</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article"><div class="titlepage"><div><div><h2 class="title"><a name="idp34566672"></a>AltOS Companion Port</h2></div><div><h3 class="subtitle"><i>Protocol Definitions</i></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></div></div><div><p class="copyright">Copyright © 2012 Keith Packard</p></div><div><div class="legalnotice"><a name="idp61079152"></a><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AltOS Companion Port</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article"><div class="titlepage"><div><div><h2 class="title"><a name="idm46040259592256"></a>AltOS Companion Port</h2></div><div><h3 class="subtitle"><i>Protocol Definitions</i></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></div></div><div><p class="copyright">Copyright © 2012 Keith Packard</p></div><div><div class="legalnotice"><a name="idm46040233083952"></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><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision 0.1</td><td align="left">13 January 2012</td></tr><tr><td align="left" colspan="2">Initial content</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp61786496">1. Companion Port</a></span></dt><dt><span class="section"><a href="#idp61790992">2. Companion SPI Protocol</a></span></dt><dt><span class="section"><a href="#idp61793888">3. SPI Message Formats</a></span></dt><dd><dl><dt><span class="section"><a href="#idp61795168">3.1. Command Message</a></span></dt><dt><span class="section"><a href="#idp60917216">3.2. SETUP reply message</a></span></dt><dt><span class="section"><a href="#idp60938704">3.3. FETCH reply message</a></span></dt></dl></dd><dt><span class="section"><a href="#idp66428656">4. History and Motivation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp61786496"></a>1. Companion Port</h2></div></div></div><p>
+      </p></div></div><div><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision 0.1</td><td align="left">13 January 2012</td></tr><tr><td align="left" colspan="2">Initial content</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm46040232383776">1. Companion Port</a></span></dt><dt><span class="section"><a href="#idm46040232379280">2. Companion SPI Protocol</a></span></dt><dt><span class="section"><a href="#idm46040232376384">3. SPI Message Formats</a></span></dt><dd><dl><dt><span class="section"><a href="#idm46040232375104">3.1. Command Message</a></span></dt><dt><span class="section"><a href="#idm46040233245360">3.2. SETUP reply message</a></span></dt><dt><span class="section"><a href="#idm46040233223824">3.3. FETCH reply message</a></span></dt></dl></dd><dt><span class="section"><a href="#idm46040227732240">4. History and Motivation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46040232383776"></a>1. Companion Port</h2></div></div></div><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
@@ -25,7 +25,7 @@
          provide a matching SPI slave implementation which supplies
          telemetry information for the radio downlink during flight
          </p></li></ul></div><p>
-    </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp61790992"></a>2. Companion SPI Protocol</h2></div></div></div><p>
+    </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46040232379280"></a>2. Companion SPI Protocol</h2></div></div></div><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
     </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 name="idp61793888"></a>3. SPI Message Formats</h2></div></div></div><p>
+    </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46040232376384"></a>3. SPI Message Formats</h2></div></div></div><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="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp61795168"></a>3.1. Command Message</h3></div></div></div><div class="table"><a name="idp61795840"></a><p class="title"><b>Table 1. Companion Command Message</b></p><div class="table-contents"><table summary="Companion Command Message" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">uint8_t</td><td align="left">command</td><td align="left">Command identifier</td></tr><tr><td align="center">1</td><td align="center">uint8_t</td><td align="left">flight_state</td><td align="left">Current flight computer state</td></tr><tr><td align="center">2</td><td align="center">uint16_t</td><td align="left">tick</td><td align="left">Flight computer clock (100 ticks/second)</td></tr><tr><td align="center">4</td><td align="center">uint16_t</td><td align="left">serial</td><td align="left">Flight computer serial number</td></tr><tr><td align="center">6</td><td align="center">uint16_t</td><td align="left">flight</td><td align="left">Flight number</td></tr><tr><td align="center">8</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="idp60901136"></a><p class="title"><b>Table 2. Companion Command Identifiers</b></p><div class="table-contents"><table summary="Companion Command Identifiers" border="1"><colgroup><col align="center" class="Value"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Value</th><th align="left">Name</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="left">SETUP</td><td align="left">Supply the flight computer with companion
+    </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46040232375104"></a>3.1. Command Message</h3></div></div></div><div class="table"><a name="idm46040232374432"></a><p class="title"><b>Table 1. Companion Command Message</b></p><div class="table-contents"><table summary="Companion Command Message" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">uint8_t</td><td align="left">command</td><td align="left">Command identifier</td></tr><tr><td align="center">1</td><td align="center">uint8_t</td><td align="left">flight_state</td><td align="left">Current flight computer state</td></tr><tr><td align="center">2</td><td align="center">uint16_t</td><td align="left">tick</td><td align="left">Flight computer clock (100 ticks/second)</td></tr><tr><td align="center">4</td><td align="center">uint16_t</td><td align="left">serial</td><td align="left">Flight computer serial number</td></tr><tr><td align="center">6</td><td align="center">uint16_t</td><td align="left">flight</td><td align="left">Flight number</td></tr><tr><td align="center">8</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="idm46040233261392"></a><p class="title"><b>Table 2. Companion Command Identifiers</b></p><div class="table-contents"><table summary="Companion Command Identifiers" border="1"><colgroup><col align="center" class="Value"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Value</th><th align="left">Name</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="left">SETUP</td><td align="left">Supply the flight computer with companion
              information</td></tr><tr><td align="center">2</td><td align="left">FETCH</td><td align="left">Return telemetry information</td></tr><tr><td align="center">3</td><td align="left">NOTIFY</td><td align="left">Tell companion board when flight state
              changes</td></tr></tbody></table></div></div><br class="table-break"><p>
        The flight computer will send a SETUP message shortly after
@@ -74,7 +74,7 @@
        use this to change data collection parameters, disabling data
        logging until the flight starts and terminating it when the
        flight ends.
-      </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp60917216"></a>3.2. SETUP reply message</h3></div></div></div><div class="table"><a name="idp60917888"></a><p class="title"><b>Table 3. SETUP reply contents</b></p><div class="table-contents"><table summary="SETUP reply contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">uint16_t</td><td align="left">board_id</td><td align="left">Board identifier</td></tr><tr><td align="center">2</td><td align="center">uint16_t</td><td align="left">board_id_inverse</td><td align="left">~board_id&#8212;used to tell if a board is present</td></tr><tr><td align="center">4</td><td align="center">uint8_t</td><td align="left">update_period</td><td align="left">Minimum time (in 100Hz ticks) between FETCH commands</td></tr><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">channels</td><td align="left">Number of data channels to retrieve in FETCH command</td></tr><tr><td align="center">6</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46040233245360"></a>3.2. SETUP reply message</h3></div></div></div><div class="table"><a name="idm46040233244688"></a><p class="title"><b>Table 3. SETUP reply contents</b></p><div class="table-contents"><table summary="SETUP reply contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">uint16_t</td><td align="left">board_id</td><td align="left">Board identifier</td></tr><tr><td align="center">2</td><td align="center">uint16_t</td><td align="left">board_id_inverse</td><td align="left">~board_id&#8212;used to tell if a board is present</td></tr><tr><td align="center">4</td><td align="center">uint8_t</td><td align="left">update_period</td><td align="left">Minimum time (in 100Hz ticks) between FETCH commands</td></tr><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">channels</td><td align="left">Number of data channels to retrieve in FETCH command</td></tr><tr><td align="center">6</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><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
        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 name="idp60938704"></a>3.3. FETCH reply message</h3></div></div></div><div class="table"><a name="idp66412464"></a><p class="title"><b>Table 4. FETCH reply contents</b></p><div class="table-contents"><table summary="FETCH reply contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">uint16_t</td><td align="left">data0</td><td align="left">0th data item</td></tr><tr><td align="center">2</td><td align="center">uint16_t</td><td align="left">data1</td><td align="left">1st data item</td></tr><tr><td align="center">...</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm46040233223824"></a>3.3. FETCH reply message</h3></div></div></div><div class="table"><a name="idm46040227748144"></a><p class="title"><b>Table 4. FETCH reply contents</b></p><div class="table-contents"><table summary="FETCH reply contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">uint16_t</td><td align="left">data0</td><td align="left">0th data item</td></tr><tr><td align="center">2</td><td align="center">uint16_t</td><td align="left">data1</td><td align="left">1st data item</td></tr><tr><td align="center">...</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><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 'channels' 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 name="idp66428656"></a>4. History and Motivation</h2></div></div></div><p>
+      </p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm46040227732240"></a>4. History and Motivation</h2></div></div></div><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
index b11549f1fd72ec599b40a62ceb36c97f6cd1e06f..35fcf661398cabf320ee30ed1ed974aae125e37e 100644 (file)
Binary files a/AltOS/doc/companion.pdf and b/AltOS/doc/companion.pdf differ
index cfd32b681cde49307d3a37fba5e824a9588b69af..1a6be423128b79f64b00a8178fb82e2f157e5889 100644 (file)
Binary files a/AltOS/doc/easymega-outline.pdf and b/AltOS/doc/easymega-outline.pdf differ
index 75e4cd6b4de433d5e5d33556ec39e2d3d9b1a57b..0e6ff9cb9c161232986c415c9b94bddaa5289626 100644 (file)
Binary files a/AltOS/doc/easymini-outline.pdf and b/AltOS/doc/easymini-outline.pdf differ
index ae98c9a59a9c084c92b60b75e9763ae1c5f49600..150b8b3ca3c0a29a6f885a7c781439e1f0136d02 100644 (file)
Binary files a/AltOS/doc/load-maps.png and b/AltOS/doc/load-maps.png differ
index 170140a98c68781efe018a68ef134fbb369040ed..627266d1acd2bf7736aea3693f4126132959f980 100644 (file)
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>MicroPeak Owner's Manual</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="idp18727440"></a>MicroPeak Owner's Manual</h1></div><div><h2 class="subtitle">A recording altimeter for hobby rocketry</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></div></div><div><p class="copyright">Copyright © 2014 Bdale Garbee and Keith Packard</p></div><div><div class="legalnotice"><a name="idp45945040"></a><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>MicroPeak Owner's Manual</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="idm45460940730432"></a>MicroPeak Owner's Manual</h1></div><div><h2 class="subtitle">A recording altimeter for hobby rocketry</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></div></div><div><p class="copyright">Copyright © 2014 Bdale Garbee and Keith Packard</p></div><div><div class="legalnotice"><a name="idm45460913524128"></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
@@ -21,7 +21,7 @@
          adapter design. Monitor data during download to let you see
          if the USB connection is working at all by showing the
          characters received from the MicroPeak USB adapter.
-       </td></tr></table></div></div></div><hr></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a name="idp45955312"></a>Acknowledgements</h1></div></div></div><p>
+       </td></tr></table></div></div></div><hr></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a name="idm45460913513696"></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
@@ -33,7 +33,7 @@ NAR
 Keith Packard, KD7SQG<br>
 NAR #88757, TRA #12200<br>
       </p></div><p>
-    </p></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="#idp45957952">1. Quick Start Guide</a></span></dt><dt><span class="chapter"><a href="#idp45186288">2. Handling Precautions</a></span></dt><dt><span class="chapter"><a href="#idp45190672">3. The MicroPeak USB adapter</a></span></dt><dd><dl><dt><span class="section"><a href="#idp45061744">1. Installing the MicroPeak software</a></span></dt><dt><span class="section"><a href="#idp45064832">2. Downloading Micro Peak data</a></span></dt><dt><span class="section"><a href="#idp45088016">3. Analyzing MicroPeak Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idp45091504">3.1. MicroPeak Graphs</a></span></dt><dt><span class="section"><a href="#idp45095104">3.2. MicroPeak Flight Statistics</a></span></dt><dt><span class="section"><a href="#idp45098976">3.3. Raw Data</a></span></dt><dt><span class="section"><a href="#idp50575504">3.4. Configuring the Graph</a></span></dt></dl></dd><dt><span class="section"><a href="#idp50579120">4. Setting MicroPeak Preferences</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp50589152">4. Technical Information</a></span></dt><dd><dl><dt><span class="section"><a href="#idp50589824">1. Barometric Sensor</a></span></dt><dt><span class="section"><a href="#idp50592576">2. Micro-controller</a></span></dt><dt><span class="section"><a href="#idp50594928">3. Lithium Battery</a></span></dt><dt><span class="section"><a href="#idp50597712">4. Atmospheric Model</a></span></dt><dt><span class="section"><a href="#idp50600688">5. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#idp50603440">6. On-board data storage</a></span></dt><dt><span class="section"><a href="#idp50623824">7. MicroPeak Programming Interface</a></span></dt></dl></dd></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>4.1. <a href="#idp50605552">MicroPeak EEPROM Data Storage</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp45957952"></a>Chapter 1. Quick Start Guide</h1></div></div></div><p>
+    </p></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="#idm45460913510944">1. Quick Start Guide</a></span></dt><dt><span class="chapter"><a href="#idm45460910009728">2. Handling Precautions</a></span></dt><dt><span class="chapter"><a href="#idm45460910005344">3. The MicroPeak USB adapter</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45460914399696">1. Installing the MicroPeak software</a></span></dt><dt><span class="section"><a href="#idm45460914396608">2. Downloading Micro Peak data</a></span></dt><dt><span class="section"><a href="#idm45460914373472">3. Analyzing MicroPeak Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45460914369984">3.1. MicroPeak Graphs</a></span></dt><dt><span class="section"><a href="#idm45460914366384">3.2. MicroPeak Flight Statistics</a></span></dt><dt><span class="section"><a href="#idm45460914362512">3.3. Raw Data</a></span></dt><dt><span class="section"><a href="#idm45460908884080">3.4. Configuring the Graph</a></span></dt></dl></dd><dt><span class="section"><a href="#idm45460908880544">4. Setting MicroPeak Preferences</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm45460908870560">4. Technical Information</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45460908869888">1. Barometric Sensor</a></span></dt><dt><span class="section"><a href="#idm45460908867136">2. Micro-controller</a></span></dt><dt><span class="section"><a href="#idm45460908864784">3. Lithium Battery</a></span></dt><dt><span class="section"><a href="#idm45460908862000">4. Atmospheric Model</a></span></dt><dt><span class="section"><a href="#idm45460908859024">5. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#idm45460908856272">6. On-board data storage</a></span></dt><dt><span class="section"><a href="#idm45460908835936">7. MicroPeak Programming Interface</a></span></dt></dl></dd></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>4.1. <a href="#idm45460908854160">MicroPeak EEPROM Data Storage</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45460913510944"></a>Chapter 1. Quick Start Guide</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="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
@@ -84,7 +84,7 @@ NAR
          Recover the data. 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.
-       </p></li></ul></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp45186288"></a>Chapter 2. Handling Precautions</h1></div></div></div><p>
+       </p></li></ul></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45460910009728"></a>Chapter 2. Handling Precautions</h1></div></div></div><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 
@@ -114,12 +114,12 @@ NAR
       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="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp45190672"></a>Chapter 3. The MicroPeak USB adapter</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp45061744">1. Installing the MicroPeak software</a></span></dt><dt><span class="section"><a href="#idp45064832">2. Downloading Micro Peak data</a></span></dt><dt><span class="section"><a href="#idp45088016">3. Analyzing MicroPeak Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idp45091504">3.1. MicroPeak Graphs</a></span></dt><dt><span class="section"><a href="#idp45095104">3.2. MicroPeak Flight Statistics</a></span></dt><dt><span class="section"><a href="#idp45098976">3.3. Raw Data</a></span></dt><dt><span class="section"><a href="#idp50575504">3.4. Configuring the Graph</a></span></dt></dl></dd><dt><span class="section"><a href="#idp50579120">4. Setting MicroPeak Preferences</a></span></dt></dl></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="MicroPeakUSB-2.0.jpg" width="405"></td></tr></table></div></div><p>
+    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45460910005344"></a>Chapter 3. The MicroPeak USB adapter</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm45460914399696">1. Installing the MicroPeak software</a></span></dt><dt><span class="section"><a href="#idm45460914396608">2. Downloading Micro Peak data</a></span></dt><dt><span class="section"><a href="#idm45460914373472">3. Analyzing MicroPeak Data</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45460914369984">3.1. MicroPeak Graphs</a></span></dt><dt><span class="section"><a href="#idm45460914366384">3.2. MicroPeak Flight Statistics</a></span></dt><dt><span class="section"><a href="#idm45460914362512">3.3. Raw Data</a></span></dt><dt><span class="section"><a href="#idm45460908884080">3.4. Configuring the Graph</a></span></dt></dl></dd><dt><span class="section"><a href="#idm45460908880544">4. Setting MicroPeak Preferences</a></span></dt></dl></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="MicroPeakUSB-2.0.jpg" width="405"></td></tr></table></div></div><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 name="idp45061744"></a>1. Installing the MicroPeak software</h2></div></div></div><p>
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460914399696"></a>1. Installing the MicroPeak software</h2></div></div></div><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/AltOS" target="_top">http://altusmetrum.org/AltOS</a>.
@@ -128,7 +128,7 @@ NAR
        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 name="idp45064832"></a>2. Downloading Micro Peak data</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460914396608"></a>2. Downloading Micro Peak data</h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
            Plug the MicroPeak USB adapter in to your computer.
          </p></li><li class="listitem"><p>
            Start the MicroPeak application.
@@ -161,7 +161,7 @@ NAR
            height, speed and acceleration values computed from the
            recorded barometric pressure data. See the next section
            for more details on that.
-         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp45088016"></a>3. Analyzing MicroPeak Data</h2></div></div></div><p>
+         </p></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460914373472"></a>3. Analyzing MicroPeak Data</h2></div></div></div><p>
        The MicroPeak application can present flight data in the form
        of a graph, a collection of computed statistics or in tabular
        form.
@@ -187,13 +187,13 @@ NAR
        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 name="idp45091504"></a>3.1. MicroPeak Graphs</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45460914369984"></a>3.1. MicroPeak Graphs</h3></div></div></div><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 class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="micropeak-graph.png" width="405"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45095104"></a>3.2. MicroPeak Flight Statistics</h3></div></div></div><p>
+       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="micropeak-graph.png" width="405"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45460914366384"></a>3.2. MicroPeak Flight Statistics</h3></div></div></div><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
@@ -201,13 +201,13 @@ NAR
          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 class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="micropeak-statistics.png" width="405"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45098976"></a>3.3. Raw Data</h3></div></div></div><p>
+       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="micropeak-statistics.png" width="405"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45460914362512"></a>3.3. Raw Data</h3></div></div></div><p>
          A table consisting of the both the raw barometric pressure
          data and values computed from that for each recorded time.
-       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="micropeak-raw-data.png" width="405"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp50575504"></a>3.4. Configuring the Graph</h3></div></div></div><p>
+       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="micropeak-raw-data.png" width="405"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45460908884080"></a>3.4. Configuring the Graph</h3></div></div></div><p>
          This selects which graph elements to show, and lets you
          switch between metric and imperial units
-       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="micropeak-graph-configure.png" width="405"></td></tr></table></div></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp50579120"></a>4. Setting MicroPeak Preferences</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="162"><tr><td><img src="micropeak-preferences.png" width="162"></td></tr></table></div></div><p>
+       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="405"><tr><td><img src="micropeak-graph-configure.png" width="405"></td></tr></table></div></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460908880544"></a>4. Setting MicroPeak Preferences</h2></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="162"><tr><td><img src="micropeak-preferences.png" width="162"></td></tr></table></div></div><p>
        The MicroPeak application has a few user settings which are
        configured through the Preferences dialog, which can be
        accessed from the File menu.
@@ -241,7 +241,7 @@ NAR
        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="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp50589152"></a>Chapter 4. Technical Information</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp50589824">1. Barometric Sensor</a></span></dt><dt><span class="section"><a href="#idp50592576">2. Micro-controller</a></span></dt><dt><span class="section"><a href="#idp50594928">3. Lithium Battery</a></span></dt><dt><span class="section"><a href="#idp50597712">4. Atmospheric Model</a></span></dt><dt><span class="section"><a href="#idp50600688">5. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#idp50603440">6. On-board data storage</a></span></dt><dt><span class="section"><a href="#idp50623824">7. MicroPeak Programming Interface</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp50589824"></a>1. Barometric Sensor</h2></div></div></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45460908870560"></a>Chapter 4. Technical Information</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm45460908869888">1. Barometric Sensor</a></span></dt><dt><span class="section"><a href="#idm45460908867136">2. Micro-controller</a></span></dt><dt><span class="section"><a href="#idm45460908864784">3. Lithium Battery</a></span></dt><dt><span class="section"><a href="#idm45460908862000">4. Atmospheric Model</a></span></dt><dt><span class="section"><a href="#idm45460908859024">5. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#idm45460908856272">6. On-board data storage</a></span></dt><dt><span class="section"><a href="#idm45460908835936">7. MicroPeak Programming Interface</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460908869888"></a>1. Barometric Sensor</h2></div></div></div><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.
@@ -257,7 +257,7 @@ NAR
        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 name="idp50592576"></a>2. Micro-controller</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460908867136"></a>2. Micro-controller</h2></div></div></div><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
@@ -268,7 +268,7 @@ NAR
        this mode, the chip consumes only .1&#956;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 name="idp50594928"></a>3. Lithium Battery</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460908864784"></a>3. Lithium Battery</h2></div></div></div><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
@@ -285,7 +285,7 @@ NAR
        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 name="idp50597712"></a>4. Atmospheric Model</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460908862000"></a>4. Atmospheric Model</h2></div></div></div><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
@@ -305,7 +305,7 @@ NAR
        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 name="idp50600688"></a>5. Mechanical Considerations</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460908859024"></a>5. Mechanical Considerations</h2></div></div></div><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
@@ -321,7 +321,7 @@ NAR
        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 name="idp50603440"></a>6. On-board data storage</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460908856272"></a>6. On-board data storage</h2></div></div></div><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
@@ -335,7 +335,7 @@ NAR
        information captured with the MicroPeak USB adapter. It can
        also be read from MicroPeak through any AVR programming
        tool.
-      </p><div class="table"><a name="idp50605552"></a><p class="title"><b>Table 4.1. MicroPeak EEPROM Data Storage</b></p><div class="table-contents"><table summary="MicroPeak EEPROM Data Storage" border="1"><colgroup><col align="center" class="Address"><col align="center" class="Size (bytes)"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Address</th><th align="center">Size (bytes)</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0x000</td><td align="center">4</td><td align="left">Average ground pressure (Pa)</td></tr><tr><td align="center">0x004</td><td align="center">4</td><td align="left">Minimum flight pressure (Pa)</td></tr><tr><td align="center">0x008</td><td align="center">2</td><td align="left">Number of in-flight samples</td></tr><tr><td align="center">0x00a &#8230; 0x1fe</td><td align="center">2</td><td align="left">Instantaneous flight pressure (Pa) low 16 bits</td></tr></tbody></table></div></div><br class="table-break"><p>
+      </p><div class="table"><a name="idm45460908854160"></a><p class="title"><b>Table 4.1. MicroPeak EEPROM Data Storage</b></p><div class="table-contents"><table summary="MicroPeak EEPROM Data Storage" border="1"><colgroup><col align="center" class="Address"><col align="center" class="Size (bytes)"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Address</th><th align="center">Size (bytes)</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0x000</td><td align="center">4</td><td align="left">Average ground pressure (Pa)</td></tr><tr><td align="center">0x004</td><td align="center">4</td><td align="left">Minimum flight pressure (Pa)</td></tr><tr><td align="center">0x008</td><td align="center">2</td><td align="left">Number of in-flight samples</td></tr><tr><td align="center">0x00a &#8230; 0x1fe</td><td align="center">2</td><td align="left">Instantaneous flight pressure (Pa) low 16 bits</td></tr></tbody></table></div></div><br class="table-break"><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
@@ -355,7 +355,7 @@ NAR
        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 class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp50623824"></a>7. MicroPeak Programming Interface</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45460908835936"></a>7. MicroPeak Programming Interface</h2></div></div></div><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 ×
index 4620052be1032973e9dd4f84faca8e05dab86bdc..9d21e31c538283ac027438d2b19fb3d4ebc39186 100644 (file)
Binary files a/AltOS/doc/micropeak.pdf and b/AltOS/doc/micropeak.pdf differ
diff --git a/AltOS/doc/monitor-idle.png b/AltOS/doc/monitor-idle.png
new file mode 100644 (file)
index 0000000..964063f
Binary files /dev/null and b/AltOS/doc/monitor-idle.png differ
diff --git a/AltOS/doc/release-notes-1.6.1.html b/AltOS/doc/release-notes-1.6.1.html
new file mode 100644 (file)
index 0000000..26e6c26
--- /dev/null
@@ -0,0 +1,99 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article"><div class="titlepage"><hr></div><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><p>
+    AltOS New Features
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Add support for TeleBT v3.0 boards.
+       </p></li><li class="listitem"><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.
+       </p></li></ul></div><p>
+  </p><p>
+    AltOS Fixes
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Make TeleDongle and TeleBT more tolerant of data rate
+         variations from transmitting devices.
+       </p></li></ul></div><p>
+  </p><p>
+    AltosUI and TeleGPS New Features
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Add map to Monitor Idle display. It's nice to be able to
+         verify that maps are working, instead of needing to use
+         Monitor Flight.
+       </p></li></ul></div><p>
+  </p><p>
+    AltosUI Fixes
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Fix frequency configuration to round values instead of
+         truncate them, avoiding a common 1kHz error in the setting.
+       </p></li><li class="listitem"><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.
+       </p></li><li class="listitem"><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 class="listitem"><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.
+       </p></li><li class="listitem"><p>
+         Allow configuration of frequency and callsign in Monitor
+         Idle mode.
+       </p></li><li class="listitem"><p>
+         Fix layout weirdness when resizing windows on
+         Windows. Windows shouldn't have giant blank spaces around
+         the useful content anymore.
+       </p></li><li class="listitem"><p>
+         Fix layout weirdness when resizing windows on
+         Windows. Windows shouldn't have giant blank spaces around
+         the useful content anymore.
+       </p></li><li class="listitem"><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.
+       </p></li><li class="listitem"><p>
+         Make Replay Flight run in realtime again. It had been set to
+         run at 10x speed by mistake.
+       </p></li></ul></div><p>
+  </p><p>
+    AltosDroid New Features
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Add offline map support using mapping code from AltosUI.
+       </p></li><li class="listitem"><p>
+         Support TeleDongle (and TeleBT via USB) on devices
+         supporting USB On-The-Go.
+       </p></li><li class="listitem"><p>
+         Display additional TeleMega pyro channel status in Pad tab.
+       </p></li><li class="listitem"><p>
+         Switch between metric and imperial units.
+       </p></li><li class="listitem"><p>
+         Monitor TeleBT battery voltage.
+       </p></li><li class="listitem"><p>
+         Track multiple devices at the same time, selecting between
+         them with a menu or using the map.
+       </p></li><li class="listitem"><p>
+         Add hybrid, satellite and terrain map types.
+       </p></li></ul></div><p>
+  </p><p>
+    AltosDroid Fixes
+    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+         Use standard Android display conventions so that a menu
+         button is available in the application title bar.
+       </p></li><li class="listitem"><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.
+       </p></li><li class="listitem"><p>
+         Make voice announcements depend on current tab.
+       </p></li><li class="listitem"><p>
+         Compute adjustment to current travel direction while in
+         motion towards rocket.
+       </p></li></ul></div><p>
+  </p></div></body></html>
index 6b524d6246e35efad1a9fba8d27054ff9c75dfdb..50f74c00f3645b4306995f0802e79b0c9e3a644a 100644 (file)
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>TeleGPS Owner's Manual</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="idp13582864"></a>TeleGPS Owner's Manual</h1></div><div><h2 class="subtitle">A recording GPS tracker</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></div></div><div><p class="copyright">Copyright © 2015 Bdale Garbee and Keith Packard</p></div><div><div class="legalnotice"><a name="idp40800464"></a><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>TeleGPS Owner's Manual</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869268938816"></a>TeleGPS Owner's Manual</h1></div><div><h2 class="subtitle">A recording GPS tracker</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></div></div><div><p class="copyright">Copyright © 2015 Bdale Garbee and Keith Packard</p></div><div><div class="legalnotice"><a name="idm45869241732464"></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
@@ -10,7 +10,7 @@
          Minor release fixing some installation bugs.
        </td></tr><tr><td align="left">Revision 1.4</td><td align="left">13 June 2014</td></tr><tr><td align="left" colspan="2">
          Initial release
-       </td></tr></table></div></div></div><hr></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a name="idp40807168"></a>Acknowledgements</h1></div></div></div><p>
+       </td></tr></table></div></div></div><hr></div><div class="dedication"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869241725744"></a>Acknowledgements</h1></div></div></div><p>
       Have fun using these products, and we hope to meet all of you
       out on the rocket flight line somewhere.
       </p><div class="literallayout"><p><br>
@@ -20,9 +20,9 @@ NAR
 Keith Packard, KD7SQG<br>
 NAR #88757, TRA #12200<br>
       </p></div><p>
-    </p></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="#idp40809424">1. Quick Start Guide</a></span></dt><dt><span class="chapter"><a href="#idp40814048">2. Handling Precautions</a></span></dt><dt><span class="chapter"><a href="#idp40033616">3. TeleGPS Hardware</a></span></dt><dd><dl><dt><span class="section"><a href="#idp40034288">1. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#idp40037216">2. On-board Data Recording</a></span></dt><dt><span class="section"><a href="#idp40041424">3. Installation</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp40044544">4. System Operation</a></span></dt><dd><dl><dt><span class="section"><a href="#idp40045216">1. GFSK Telemetry</a></span></dt><dt><span class="section"><a href="#idp43064800">2. APRS</a></span></dt><dt><span class="section"><a href="#idp39924496">3. Configurable Parameters</a></span></dt><dd><dl><dt><span class="section"><a href="#idp39925824">3.1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idp39927952">3.2. Callsign</a></span></dt><dt><span class="section"><a href="#idp39929136">3.3. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idp39930464">3.4. APRS Interval</a></span></dt><dt><span class="section"><a href="#idp39931968">3.5. Maximum Flight Log</a></span></dt><dt><span class="section"><a href="#idp39933568">3.6. Logging Trigger Motion</a></span></dt><dt><span class="section"><a href="#idp39934896">3.7. Position Reporting Interval</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idp39936544">5. TeleGPS Application</a></span></dt><dd><dl><dt><span class="section"><a href="#idp39938128">1. Telemetry Monitoring</a></span></dt><dd><dl><dt><span class="section"><a href="#idp39947120">1.1. Map</a></span></dt><dt><span class="section"><a href="#idp39953296">1.2. Location</a></span></dt><dt><span class="section"><a href="#idp45429760">1.3. Status</a></span></dt><dt><span class="section"><a href="#idp45433184">1.4. Table</a></span></dt></dl></dd><dt><span class="section"><a href="#idp45437168">2. TeleGPS Menus</a></span></dt><dd><dl><dt><span class="section"><a href="#idp45445136">2.1. New Window</a></span></dt><dt><span class="section"><a href="#idp45446432">2.2. Graph Data</a></span></dt><dt><span class="section"><a href="#idp45462704">2.3. Export Data</a></span></dt><dt><span class="section"><a href="#idp45468688">2.4. Load Maps</a></span></dt><dt><span class="section"><a href="#idp45482432">2.5. Preferences</a></span></dt><dt><span class="section"><a href="#idp45502032">2.6. Close</a></span></dt><dt><span class="section"><a href="#idp45503296">2.7. Exit</a></span></dt><dt><span class="section"><a href="#idp45504448">2.8. Connect Device</a></span></dt><dt><span class="section"><a href="#idp45507984">2.9. Disconnect</a></span></dt><dt><span class="section"><a href="#idp45509136">2.10. Scan Channels</a></span></dt><dt><span class="section"><a href="#idp45512688">2.11. Download Data</a></span></dt><dt><span class="section"><a href="#idp45515824">2.12. Configure Device</a></span></dt><dt><span class="section"><a href="#idp45539488">2.13. Flash Device</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idp45541088">6. Updating Device Firmware</a></span></dt><dd><dl><dt><span class="section"><a href="#idp45543456">1. 
+    </p></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="chapter"><a href="#idm45869241723376">1. Quick Start Guide</a></span></dt><dt><span class="chapter"><a href="#idm45869241718752">2. Handling Precautions</a></span></dt><dt><span class="chapter"><a href="#idm45869238226240">3. TeleGPS Hardware</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869238225600">1. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#idm45869238222784">2. On-board Data Recording</a></span></dt><dt><span class="section"><a href="#idm45869238218576">3. Installation</a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm45869238215456">4. System Operation</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869238214784">1. GFSK Telemetry</a></span></dt><dt><span class="section"><a href="#idm45869240867456">2. APRS</a></span></dt><dt><span class="section"><a href="#idm45869242600368">3. Configurable Parameters</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869242599040">3.1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idm45869242596912">3.2. Callsign</a></span></dt><dt><span class="section"><a href="#idm45869242595728">3.3. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idm45869242594400">3.4. APRS Interval</a></span></dt><dt><span class="section"><a href="#idm45869242592896">3.5. Maximum Flight Log</a></span></dt><dt><span class="section"><a href="#idm45869242591296">3.6. Logging Trigger Motion</a></span></dt><dt><span class="section"><a href="#idm45869242589968">3.7. Position Reporting Interval</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idm45869242588320">5. TeleGPS Application</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869242586736">1. Telemetry Monitoring</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869242577744">1.1. Map</a></span></dt><dt><span class="section"><a href="#idm45869242571616">1.2. Location</a></span></dt><dt><span class="section"><a href="#idm45869237093232">1.3. Status</a></span></dt><dt><span class="section"><a href="#idm45869237089808">1.4. Table</a></span></dt></dl></dd><dt><span class="section"><a href="#idm45869237085920">2. TeleGPS Menus</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869237077952">2.1. New Window</a></span></dt><dt><span class="section"><a href="#idm45869237076656">2.2. Graph Data</a></span></dt><dt><span class="section"><a href="#idm45869237060384">2.3. Export Data</a></span></dt><dt><span class="section"><a href="#idm45869237054400">2.4. Load Maps</a></span></dt><dt><span class="section"><a href="#idm45869237040656">2.5. Preferences</a></span></dt><dt><span class="section"><a href="#idm45869237021056">2.6. Close</a></span></dt><dt><span class="section"><a href="#idm45869237019792">2.7. Exit</a></span></dt><dt><span class="section"><a href="#idm45869237018640">2.8. Connect Device</a></span></dt><dt><span class="section"><a href="#idm45869237015104">2.9. Disconnect</a></span></dt><dt><span class="section"><a href="#idm45869237013952">2.10. Scan Channels</a></span></dt><dt><span class="section"><a href="#idm45869237010400">2.11. Download Data</a></span></dt><dt><span class="section"><a href="#idm45869237007264">2.12. Configure Device</a></span></dt><dt><span class="section"><a href="#idm45869236983600">2.13. Flash Device</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#idm45869236982000">6. Updating Device Firmware</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869236979632">1. 
        Updating TeleGPS Firmware
-      </a></span></dt></dl></dd><dt><span class="chapter"><a href="#idp45552656">7. Technical Information</a></span></dt><dd><dl><dt><span class="section"><a href="#idp45553296">1. GPS Receiver</a></span></dt><dt><span class="section"><a href="#idp45556640">2. Micro-controller</a></span></dt><dt><span class="section"><a href="#idp45557968">3. Lithium Polymer Battery</a></span></dt><dt><span class="section"><a href="#idp45559232">4. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#idp45560560">5. On-board data storage</a></span></dt></dl></dd><dt><span class="appendix"><a href="#idp45562016">A. Release Notes</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>4.1. <a href="#idp42524864">Altus Metrum APRS Comments</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp40809424"></a>Chapter 1. Quick Start Guide</h1></div></div></div><p>
+      </a></span></dt></dl></dd><dt><span class="chapter"><a href="#idm45869236970352">7. Technical Information</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869236969680">1. GPS Receiver</a></span></dt><dt><span class="section"><a href="#idm45869236966368">2. Micro-controller</a></span></dt><dt><span class="section"><a href="#idm45869236965040">3. Lithium Polymer Battery</a></span></dt><dt><span class="section"><a href="#idm45869236963776">4. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#idm45869236962448">5. On-board data storage</a></span></dt></dl></dd><dt><span class="appendix"><a href="#idm45869236960992">A. Release Notes</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>4.1. <a href="#idm45869238928544">Altus Metrum APRS Comments</a></dt></dl></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869241723376"></a>Chapter 1. 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><p>
@@ -44,7 +44,7 @@ NAR
       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.
-    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp40814048"></a>Chapter 2. Handling Precautions</h1></div></div></div><p>
+    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869241718752"></a>Chapter 2. Handling Precautions</h1></div></div></div><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 
@@ -61,7 +61,7 @@ NAR
       As with all other rocketry electronics, Altus Metrum devices must 
       be protected from exposure to corrosive motor exhaust and ejection 
       charge gasses.
-    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp40033616"></a>Chapter 3. TeleGPS Hardware</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp40034288">1. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#idp40037216">2. On-board Data Recording</a></span></dt><dt><span class="section"><a href="#idp40041424">3. Installation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp40034288"></a>1. Hooking Up Lithium Polymer Batteries</h2></div></div></div><p>
+    </p></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869238226240"></a>Chapter 3. TeleGPS Hardware</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm45869238225600">1. Hooking Up Lithium Polymer Batteries</a></span></dt><dt><span class="section"><a href="#idm45869238222784">2. On-board Data Recording</a></span></dt><dt><span class="section"><a href="#idm45869238218576">3. Installation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869238225600"></a>1. Hooking Up Lithium Polymer Batteries</h2></div></div></div><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
@@ -74,7 +74,7 @@ NAR
        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 class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp40037216"></a>2. On-board Data Recording</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869238222784"></a>2. On-board Data Recording</h2></div></div></div><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
@@ -103,7 +103,7 @@ NAR
        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 name="idp40041424"></a>3. Installation</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869238218576"></a>3. Installation</h2></div></div></div><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
@@ -122,7 +122,7 @@ NAR
        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 name="idp40044544"></a>Chapter 4. System Operation</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp40045216">1. GFSK Telemetry</a></span></dt><dt><span class="section"><a href="#idp43064800">2. APRS</a></span></dt><dt><span class="section"><a href="#idp39924496">3. Configurable Parameters</a></span></dt><dd><dl><dt><span class="section"><a href="#idp39925824">3.1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idp39927952">3.2. Callsign</a></span></dt><dt><span class="section"><a href="#idp39929136">3.3. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idp39930464">3.4. APRS Interval</a></span></dt><dt><span class="section"><a href="#idp39931968">3.5. Maximum Flight Log</a></span></dt><dt><span class="section"><a href="#idp39933568">3.6. Logging Trigger Motion</a></span></dt><dt><span class="section"><a href="#idp39934896">3.7. Position Reporting Interval</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp40045216"></a>1. GFSK Telemetry</h2></div></div></div><p>
+      </p></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869238215456"></a>Chapter 4. System Operation</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm45869238214784">1. GFSK Telemetry</a></span></dt><dt><span class="section"><a href="#idm45869240867456">2. APRS</a></span></dt><dt><span class="section"><a href="#idm45869242600368">3. Configurable Parameters</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869242599040">3.1. Radio Frequency</a></span></dt><dt><span class="section"><a href="#idm45869242596912">3.2. Callsign</a></span></dt><dt><span class="section"><a href="#idm45869242595728">3.3. Telemetry/RDF/APRS Enable</a></span></dt><dt><span class="section"><a href="#idm45869242594400">3.4. APRS Interval</a></span></dt><dt><span class="section"><a href="#idm45869242592896">3.5. Maximum Flight Log</a></span></dt><dt><span class="section"><a href="#idm45869242591296">3.6. Logging Trigger Motion</a></span></dt><dt><span class="section"><a href="#idm45869242589968">3.7. Position Reporting Interval</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869238214784"></a>1. GFSK Telemetry</h2></div></div></div><p>
         TeleGPS's native telemetry system doesn't use a 'normal packet
         radio' mode like APRS because it's not very efficient.  The
         GFSK modulation we use is FSK with the base-band pulses passed
@@ -136,7 +136,7 @@ NAR
         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 name="idp43064800"></a>2. APRS</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869240867456"></a>2. APRS</h2></div></div></div><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
@@ -159,7 +159,7 @@ NAR
        arbitrary text in it. AltOS uses this to send status
        information about the flight computer. It sends four fields as
        shown in the following table.
-      </p><div class="table"><a name="idp42524864"></a><p class="title"><b>Table 4.1. Altus Metrum APRS Comments</b></p><div class="table-contents"><table summary="Altus Metrum APRS Comments" border="1"><colgroup><col align="center" class="Field"><col align="center" class="Example"><col align="center" class="Description"></colgroup><thead><tr><th align="center">Field</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="center">L</td><td align="center">GPS Status U for unlocked, L for locked</td></tr><tr><td align="center">2</td><td align="center">6</td><td align="center">Number of Satellites in View</td></tr><tr><td align="center">3</td><td align="center">B4.0</td><td align="center">Battery Voltage</td></tr></tbody></table></div></div><br class="table-break"><p>
+      </p><div class="table"><a name="idm45869238928544"></a><p class="title"><b>Table 4.1. Altus Metrum APRS Comments</b></p><div class="table-contents"><table summary="Altus Metrum APRS Comments" border="1"><colgroup><col align="center" class="Field"><col align="center" class="Example"><col align="center" class="Description"></colgroup><thead><tr><th align="center">Field</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">1</td><td align="center">L</td><td align="center">GPS Status U for unlocked, L for locked</td></tr><tr><td align="center">2</td><td align="center">6</td><td align="center">Number of Satellites in View</td></tr><tr><td align="center">3</td><td align="center">B4.0</td><td align="center">Battery Voltage</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 battery at 4.0V.
        </p><pre class="screen">
@@ -177,13 +177,13 @@ NAR
        that the GPS status character 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 name="idp39924496"></a>3. Configurable Parameters</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869242600368"></a>3. Configurable Parameters</h2></div></div></div><p>
         Configuring TeleGPS is very
         simple; the few configurable parameters can all be set
         using the TeleGPS application over USB. Read
        the Configure TeleGPS section in the TeleGPS Software chapter below
        for more information.
-      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp39925824"></a>3.1. Radio Frequency</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869242599040"></a>3.1. Radio Frequency</h3></div></div></div><p>
          Altus Metrum boards support radio frequencies in the 70cm
          band. By default, the configuration interface provides a
          list of 10 &#8220;standard&#8221; frequencies in 100kHz channels starting at
@@ -193,19 +193,19 @@ NAR
          frequency will be used to avoid interference.  And of course, both
          TeleGPS and the receiver must be configured to the same
          frequency to successfully communicate with each other.
-        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp39927952"></a>3.2. Callsign</h3></div></div></div><p>
+        </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869242596912"></a>3.2. Callsign</h3></div></div></div><p>
          This sets the callsign used for telemetry and APRS to
          identify the device.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp39929136"></a>3.3. Telemetry/RDF/APRS Enable</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869242595728"></a>3.3. Telemetry/RDF/APRS Enable</h3></div></div></div><p>
          You can completely disable the radio, if necessary, leaving
          TeleGPS only logging data to internal memory.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp39930464"></a>3.4. APRS Interval</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869242594400"></a>3.4. APRS Interval</h3></div></div></div><p>
          This selects how often APRS packets are transmitted. Set
          this to zero to disable APRS without also disabling the
          regular telemetry and RDF transmissions. As APRS takes a
          full second to transmit a single position report, we
          recommend sending packets no more than once every 5 seconds.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp39931968"></a>3.5. Maximum Flight Log</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869242592896"></a>3.5. Maximum Flight Log</h3></div></div></div><p>
          Changing this value will set the maximum amount of flight
          log storage that an individual flight will use. The
          available storage is divided into as many flights of the
@@ -213,14 +213,14 @@ NAR
          download and erase individual flight logs. If you fill up
          the available storage, future flights will not get logged
          until you erase some of the stored ones.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp39933568"></a>3.6. Logging Trigger Motion</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869242591296"></a>3.6. Logging Trigger Motion</h3></div></div></div><p>
          If TeleGPS moves less than this distance over a long period
          of time, it will not log that location, saving storage space.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp39934896"></a>3.7. Position Reporting Interval</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869242589968"></a>3.7. Position Reporting Interval</h3></div></div></div><p>
          This sets how often TeleGPS reports position information via
          telemetry and to the on-board log. Reducing this value will
          save power and logging memory consumption.
-       </p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp39936544"></a>Chapter 5. TeleGPS Application</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp39938128">1. Telemetry Monitoring</a></span></dt><dd><dl><dt><span class="section"><a href="#idp39947120">1.1. Map</a></span></dt><dt><span class="section"><a href="#idp39953296">1.2. Location</a></span></dt><dt><span class="section"><a href="#idp45429760">1.3. Status</a></span></dt><dt><span class="section"><a href="#idp45433184">1.4. Table</a></span></dt></dl></dd><dt><span class="section"><a href="#idp45437168">2. TeleGPS Menus</a></span></dt><dd><dl><dt><span class="section"><a href="#idp45445136">2.1. New Window</a></span></dt><dt><span class="section"><a href="#idp45446432">2.2. Graph Data</a></span></dt><dt><span class="section"><a href="#idp45462704">2.3. Export Data</a></span></dt><dt><span class="section"><a href="#idp45468688">2.4. Load Maps</a></span></dt><dt><span class="section"><a href="#idp45482432">2.5. Preferences</a></span></dt><dt><span class="section"><a href="#idp45502032">2.6. Close</a></span></dt><dt><span class="section"><a href="#idp45503296">2.7. Exit</a></span></dt><dt><span class="section"><a href="#idp45504448">2.8. Connect Device</a></span></dt><dt><span class="section"><a href="#idp45507984">2.9. Disconnect</a></span></dt><dt><span class="section"><a href="#idp45509136">2.10. Scan Channels</a></span></dt><dt><span class="section"><a href="#idp45512688">2.11. Download Data</a></span></dt><dt><span class="section"><a href="#idp45515824">2.12. Configure Device</a></span></dt><dt><span class="section"><a href="#idp45539488">2.13. Flash Device</a></span></dt></dl></dd></dl></div><p>
+       </p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869242588320"></a>Chapter 5. TeleGPS Application</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm45869242586736">1. Telemetry Monitoring</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869242577744">1.1. Map</a></span></dt><dt><span class="section"><a href="#idm45869242571616">1.2. Location</a></span></dt><dt><span class="section"><a href="#idm45869237093232">1.3. Status</a></span></dt><dt><span class="section"><a href="#idm45869237089808">1.4. Table</a></span></dt></dl></dd><dt><span class="section"><a href="#idm45869237085920">2. TeleGPS Menus</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45869237077952">2.1. New Window</a></span></dt><dt><span class="section"><a href="#idm45869237076656">2.2. Graph Data</a></span></dt><dt><span class="section"><a href="#idm45869237060384">2.3. Export Data</a></span></dt><dt><span class="section"><a href="#idm45869237054400">2.4. Load Maps</a></span></dt><dt><span class="section"><a href="#idm45869237040656">2.5. Preferences</a></span></dt><dt><span class="section"><a href="#idm45869237021056">2.6. Close</a></span></dt><dt><span class="section"><a href="#idm45869237019792">2.7. Exit</a></span></dt><dt><span class="section"><a href="#idm45869237018640">2.8. Connect Device</a></span></dt><dt><span class="section"><a href="#idm45869237015104">2.9. Disconnect</a></span></dt><dt><span class="section"><a href="#idm45869237013952">2.10. Scan Channels</a></span></dt><dt><span class="section"><a href="#idm45869237010400">2.11. Download Data</a></span></dt><dt><span class="section"><a href="#idm45869237007264">2.12. Configure Device</a></span></dt><dt><span class="section"><a href="#idm45869236983600">2.13. Flash Device</a></span></dt></dl></dd></dl></div><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
@@ -229,7 +229,7 @@ NAR
       tasks available from the main window menu bar. 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 name="idp39938128"></a>1. Telemetry Monitoring</h2></div></div></div><p>
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869242586736"></a>1. Telemetry Monitoring</h2></div></div></div><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
@@ -268,7 +268,7 @@ NAR
         tabs, each of which contain some information about the TeleGPS
         board. The final 'table' 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 name="idp39947120"></a>1.1. Map</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869242577744"></a>1.1. Map</h3></div></div></div><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="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telegps-map.png" width="495"></td></tr></table></div></div><p>
@@ -291,16 +291,16 @@ NAR
         </p><p>
          You can pre-load images for your favorite launch sites
          before you leave home; check out the 'Preload Maps' section below.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp39953296"></a>1.2. Location</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869242571616"></a>1.2. Location</h3></div></div></div><p>
          The Location tab shows the raw GPS data received from TeleGPS.
-       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telegps-location.png" width="495"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45429760"></a>1.3. Status</h3></div></div></div><p>
+       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telegps-location.png" width="495"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237093232"></a>1.3. Status</h3></div></div></div><p>
          The Status tab shows data relative to the location of
          TeleGPS when the application first received telemetry from
          it.
-       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telegps-status.png" width="495"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45433184"></a>1.4. Table</h3></div></div></div><p>
+       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telegps-status.png" width="495"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237089808"></a>1.4. Table</h3></div></div></div><p>
          The Table tab shows detailed information about the GPS
          receiver
-       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telegps-table.png" width="495"></td></tr></table></div></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp45437168"></a>2. TeleGPS Menus</h2></div></div></div><p>
+       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="495"><tr><td><img src="telegps-table.png" width="495"></td></tr></table></div></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869237085920"></a>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><p>
                New Window, Graph Data, Export Data, Load Maps, Preferences, Close and Exit
@@ -316,26 +316,26 @@ NAR
                only shown when the TeleGPS application is connected
                to a TeleDongle or TeleBT device.
              </p></dd></dl></div><p>
-      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45445136"></a>2.1. New Window</h3></div></div></div><p>
+      </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237077952"></a>2.1. New Window</h3></div></div></div><p>
          This creates another telemetry monitoring window, in case
          you have multiple TeleDongle devices connected to the
          computer.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45446432"></a>2.2. Graph Data</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237076656"></a>2.2. Graph Data</h3></div></div></div><p>
          This brings up a file dialog to load a saved log, either
          a .telem file of recorded telemetry or .eeprom of saved
          data from on-board memory. It looks a bit like the flight
          monitoring window, using a selection of tabs to show
          different views of the saved data.
-       </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45447744"></a>2.2.1. Graph</h4></div></div></div><p>
+       </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237075344"></a>2.2.1. Graph</h4></div></div></div><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.
-         </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="telegps-graph-graph.png" width="540"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45451456"></a>2.2.2. Configure Graph</h4></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="telegps-graph-configure.png" width="540"></td></tr></table></div></div><p>
+         </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="telegps-graph-graph.png" width="540"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237071632"></a>2.2.2. Configure Graph</h4></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="telegps-graph-configure.png" width="540"></td></tr></table></div></div><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><h4 class="title"><a name="idp45455120"></a>2.2.3. Statistics</h4></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="telegps-graph-stats.png" width="540"></td></tr></table></div></div><p>
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237067968"></a>2.2.3. Statistics</h4></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="telegps-graph-stats.png" width="540"></td></tr></table></div></div><p>
            Shows overall data computed from the flight.
-         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45458640"></a>2.2.4. Map</h4></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="telegps-graph-map.png" width="540"></td></tr></table></div></div><p>
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237064448"></a>2.2.4. Map</h4></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="540"><tr><td><img src="telegps-graph-map.png" width="540"></td></tr></table></div></div><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;
@@ -343,7 +343,7 @@ NAR
            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><h3 class="title"><a name="idp45462704"></a>2.3. Export Data</h3></div></div></div><p>
+         </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237060384"></a>2.3. Export Data</h3></div></div></div><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.
@@ -352,7 +352,7 @@ NAR
          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><h4 class="title"><a name="idp45464816"></a>2.3.1. Comma Separated Value Format</h4></div></div></div><p>
+       </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237058272"></a>2.3.1. Comma Separated Value Format</h4></div></div></div><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
@@ -366,11 +366,11 @@ NAR
             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><h4 class="title"><a name="idp45467200"></a>2.3.2. Keyhole Markup Language (for Google Earth)</h4></div></div></div><p>
+          </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237055888"></a>2.3.2. Keyhole Markup Language (for Google Earth)</h4></div></div></div><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><h3 class="title"><a name="idp45468688"></a>2.4. Load Maps</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="468"><tr><td><img src="load-maps.png" width="468"></td></tr></table></div></div><p>
+          </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237054400"></a>2.4. Load Maps</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="468"><tr><td><img src="load-maps.png" width="468"></td></tr></table></div></div><p>
          Before using TeleGPS, you can use Load Maps to load map data
          in case you don't have access to the internet while
          receiving telemetry.
@@ -415,7 +415,7 @@ NAR
          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><h3 class="title"><a name="idp45482432"></a>2.5. Preferences</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="216"><tr><td><img src="telegps-preferences.png" width="216"></td></tr></table></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45485440"></a>2.5.1. Voice Settings</h4></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237040656"></a>2.5. Preferences</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="216"><tr><td><img src="telegps-preferences.png" width="216"></td></tr></table></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237037648"></a>2.5.1. Voice Settings</h4></div></div></div><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
@@ -424,7 +424,7 @@ NAR
                  Plays a short message allowing you to verify
                  that the audio system is working and the volume settings
                  are reasonable
-               </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45490464"></a>2.5.2. Log Directory</h4></div></div></div><p>
+               </p></dd></dl></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237032624"></a>2.5.2. Log Directory</h4></div></div></div><p>
             AltosUI logs all telemetry data and saves all TeleMetrum flash
             data to this directory. This directory is also used as the
             staring point when selecting data files for display or export.
@@ -432,7 +432,7 @@ NAR
             Click on the directory name to bring up a directory choosing
             dialog, select a new directory and click 'Select Directory' to
             change where AltosUI reads and writes data files.
-          </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45492496"></a>2.5.3. Callsign</h4></div></div></div><p>
+          </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237030592"></a>2.5.3. Callsign</h4></div></div></div><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
@@ -445,51 +445,51 @@ NAR
            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><h4 class="title"><a name="idp45494768"></a>2.5.4. Imperial Units</h4></div></div></div><p>
+          </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237028320"></a>2.5.4. Imperial Units</h4></div></div></div><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><h4 class="title"><a name="idp45496288"></a>2.5.5. Serial Debug</h4></div></div></div><p>
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237026800"></a>2.5.5. Serial Debug</h4></div></div></div><p>
             This causes all communication with a connected device to be
             dumped to the console from which AltosUI was started. If
             you'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><h4 class="title"><a name="idp45497792"></a>2.5.6. Font Size</h4></div></div></div><p>
+          </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237025296"></a>2.5.6. Font Size</h4></div></div></div><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><h4 class="title"><a name="idp45499088"></a>2.5.7. Look &amp; Feel</h4></div></div></div><p>
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237024000"></a>2.5.7. Look &amp; Feel</h4></div></div></div><p>
            Adjust the style of the windows. By default, the TeleGPS
            application attempts to blend in with the native style.
-         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45500384"></a>2.5.8. Manage Frequencies</h4></div></div></div><p>
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869237022704"></a>2.5.8. Manage Frequencies</h4></div></div></div><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><h3 class="title"><a name="idp45502032"></a>2.6. Close</h3></div></div></div><p>
+         </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237021056"></a>2.6. Close</h3></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><h3 class="title"><a name="idp45503296"></a>2.7. Exit</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237019792"></a>2.7. Exit</h3></div></div></div><p>
          This closes all TeleGPS windows and terminates the application.
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45504448"></a>2.8. Connect Device</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237018640"></a>2.8. Connect Device</h3></div></div></div><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="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="279"><tr><td><img src="device-selection.png" width="279"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45507984"></a>2.9. Disconnect</h3></div></div></div><p>
+       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="279"><tr><td><img src="device-selection.png" width="279"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237015104"></a>2.9. Disconnect</h3></div></div></div><p>
          Disconnects the currently connected TeleDongle or TeleBT
-       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45509136"></a>2.10. Scan Channels</h3></div></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237013952"></a>2.10. Scan Channels</h3></div></div></div><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 'Monitor'
          will select that frequency in the associated TeleGPS
          application window.
-       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="279"><tr><td><img src="telegps-scan.png" width="279"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45512688"></a>2.11. Download Data</h3></div></div></div><p>
+       </p><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="279"><tr><td><img src="telegps-scan.png" width="279"></td></tr></table></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237010400"></a>2.11. Download Data</h3></div></div></div><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
@@ -510,7 +510,7 @@ NAR
           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><h3 class="title"><a name="idp45515824"></a>2.12. Configure Device</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="324"><tr><td><img src="telegps-configure.png" width="324"></td></tr></table></div></div><p>
+       </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869237007264"></a>2.12. Configure Device</h3></div></div></div><div class="informalfigure"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="324"><tr><td><img src="telegps-configure.png" width="324"></td></tr></table></div></div><p>
           Select this button and then select any connected TeleGPS
           device from the list provided.
        </p><p>
@@ -536,13 +536,13 @@ NAR
                lost.
              </p></dd></dl></div><p>
           The rest of the dialog contains the parameters to be configured.
-       </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45527872"></a>2.12.1. Frequency</h4></div></div></div><p>
+       </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869236995216"></a>2.12.1. Frequency</h4></div></div></div><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><h4 class="title"><a name="idp45529376"></a>2.12.2. RF Calibration</h4></div></div></div><p>
+          </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869236993712"></a>2.12.2. RF Calibration</h4></div></div></div><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 
@@ -550,11 +550,11 @@ NAR
            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><h4 class="title"><a name="idp45531040"></a>2.12.3. Telemetry/RDF/APRS Enable</h4></div></div></div><p>
+          </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869236992048"></a>2.12.3. Telemetry/RDF/APRS Enable</h4></div></div></div><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><h4 class="title"><a name="idp45532352"></a>2.12.4. APRS Interval</h4></div></div></div><p>
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869236990736"></a>2.12.4. APRS Interval</h4></div></div></div><p>
            How often to transmit GPS information via APRS (in
            seconds). When set to zero, APRS transmission is
            disabled. This option is available on TeleMetrum v2 and
@@ -562,26 +562,26 @@ NAR
            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><h4 class="title"><a name="idp45533936"></a>2.12.5. Callsign</h4></div></div></div><p>
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869236989152"></a>2.12.5. Callsign</h4></div></div></div><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><h4 class="title"><a name="idp45535264"></a>2.12.6. Maximum Log Size</h4></div></div></div><p>
+          </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869236987824"></a>2.12.6. Maximum Log Size</h4></div></div></div><p>
             This sets the space (in kilobytes) allocated for each data
             log. The available space will be divided into chunks of this
             size. A smaller value will allow more logs to be stored,
             a larger value will record data for longer times.
-         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45536704"></a>2.12.7. Logging Trigger Motion</h4></div></div></div><p>
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869236986384"></a>2.12.7. Logging Trigger Motion</h4></div></div></div><p>
            If TeleGPS moves less than this distance over a long period
            of time, it will not log that location, saving storage space.
-         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idp45538016"></a>2.12.8. Position Reporting Interval</h4></div></div></div><p>
+         </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="idm45869236985072"></a>2.12.8. Position Reporting Interval</h4></div></div></div><p>
            This sets how often TeleGPS reports position information via
            telemetry and to the on-board log. Reducing this value will
            save power and logging memory consumption.
-         </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp45539488"></a>2.13. Flash Device</h3></div></div></div><p>
+         </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45869236983600"></a>2.13. Flash Device</h3></div></div></div><p>
           This reprograms TeleGPS devices with new firmware. Please
           read the directions for flashing devices in the Updating
           Device Firmware chapter below.
-       </p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp45541088"></a>Chapter 6. Updating Device Firmware</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp45543456">1. 
+       </p></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869236982000"></a>Chapter 6. Updating Device Firmware</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm45869236979632">1. 
        Updating TeleGPS Firmware
       </a></span></dt></dl></div><p>
       TeleGPS is programmed directly over its USB connectors.
@@ -593,7 +593,7 @@ NAR
       so you don'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 name="idp45543456"></a>1. 
+    </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869236979632"></a>1. 
        Updating TeleGPS Firmware
       </h2></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
            Attach a battery and power switch to the target
@@ -620,24 +620,24 @@ NAR
          </p></li><li class="listitem"><p>
            Verify that the device is working by using the 'Configure
            Altimeter' item to check over the configuration.
-         </p></li></ol></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idp45552656"></a>Chapter 7. Technical Information</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp45553296">1. GPS Receiver</a></span></dt><dt><span class="section"><a href="#idp45556640">2. Micro-controller</a></span></dt><dt><span class="section"><a href="#idp45557968">3. Lithium Polymer Battery</a></span></dt><dt><span class="section"><a href="#idp45559232">4. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#idp45560560">5. On-board data storage</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp45553296"></a>1. GPS Receiver</h2></div></div></div><p>
+         </p></li></ol></div></div></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869236970352"></a>Chapter 7. Technical Information</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm45869236969680">1. GPS Receiver</a></span></dt><dt><span class="section"><a href="#idm45869236966368">2. Micro-controller</a></span></dt><dt><span class="section"><a href="#idm45869236965040">3. Lithium Polymer Battery</a></span></dt><dt><span class="section"><a href="#idm45869236963776">4. Mechanical Considerations</a></span></dt><dt><span class="section"><a href="#idm45869236962448">5. On-board data storage</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869236969680"></a>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 name="idp45556640"></a>2. Micro-controller</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869236966368"></a>2. Micro-controller</h2></div></div></div><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 name="idp45557968"></a>3. Lithium Polymer Battery</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869236965040"></a>3. 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 name="idp45559232"></a>4. Mechanical Considerations</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869236963776"></a>4. Mechanical Considerations</h2></div></div></div><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 name="idp45560560"></a>5. On-board data storage</h2></div></div></div><p>
+      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869236962448"></a>5. On-board data storage</h2></div></div></div><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 name="idp45562016"></a>Appendix A. Release Notes</h1></div></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp45562656"></a>Version 1.6</h2></div></div></div><p>
+      </p></div></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="idm45869236960992"></a>Appendix A. Release Notes</h1></div></div></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869236960352"></a>Version 1.6</h2></div></div></div><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.
@@ -719,7 +719,7 @@ NAR
          information each time we change channels. This avoids having
          flight computers appear on multiple frequencies by accident.
        </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp45564256"></a>Version 1.4.1</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869236958752"></a>Version 1.4.1</h2></div></div></div><p>
     Version 1.4.1 is a minor release. It fixes install issues on
     Windows and provides the missing TeleMetrum V2.0 firmware. There
     aren't any changes to the firmware or host applications at
@@ -750,7 +750,7 @@ NAR
          release didn't have this key in the released version of the
          software, making map downloading fail for most people.
        </p></li></ul></div><p>
-  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp45565856"></a>Version 1.4</h2></div></div></div><p>
+  </p></div><div class="simplesect"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45869236957152"></a>Version 1.4</h2></div></div></div><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
index 6b976e7d1bc9098908f58e60ab33cb561618b577..fba94e586a463a845d614b63d119c5cce0c83fa1 100644 (file)
Binary files a/AltOS/doc/telegps.pdf and b/AltOS/doc/telegps.pdf differ
index 5c11453250223f458cf0b19798bb2a8877a4e5b6..6b4fe19531c77d495b13742fe318386f9ee4ef85 100644 (file)
Binary files a/AltOS/doc/telemega-outline.pdf and b/AltOS/doc/telemega-outline.pdf differ
index e9a645135ab9c9eb33d5e4a6ceefe0d15c422983..f3862d0c7e3c23259120e5a29e8f6cfabb3e543d 100644 (file)
Binary files a/AltOS/doc/telemetrum-outline.pdf and b/AltOS/doc/telemetrum-outline.pdf differ
index d029e0f812030d9c5669e1977cb7082dc58bfb47..5113c2a274a1609925b8fecda2ffb4b0f2fcfc2a 100644 (file)
@@ -1,10 +1,10 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AltOS Telemetry</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article"><div class="titlepage"><div><div><h2 class="title"><a name="idp22409744"></a>AltOS Telemetry</h2></div><div><h3 class="subtitle"><i>Packet Definitions</i></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></div></div><div><p class="copyright">Copyright © 2011 Keith Packard</p></div><div><div class="legalnotice"><a name="idp48922224"></a><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AltOS Telemetry</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article"><div class="titlepage"><div><div><h2 class="title"><a name="idm45387730255632"></a>AltOS Telemetry</h2></div><div><h3 class="subtitle"><i>Packet Definitions</i></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Keith</span> <span class="surname">Packard</span></h3></div></div><div><p class="copyright">Copyright © 2011 Keith Packard</p></div><div><div class="legalnotice"><a name="idm45387703834864"></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><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision 0.1</td><td align="left">01 July 2011</td></tr><tr><td align="left" colspan="2">Initial content</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idp49629568">1. Packet Format Design</a></span></dt><dt><span class="section"><a href="#idp49632560">2. Packet Formats</a></span></dt><dd><dl><dt><span class="section"><a href="#idp49633760">2.1. Packet Header</a></span></dt><dt><span class="section"><a href="#idp48868944">2.2. Sensor Data</a></span></dt><dt><span class="section"><a href="#idp54256176">2.3. Configuration Data</a></span></dt><dt><span class="section"><a href="#idp54292032">2.4. GPS Location</a></span></dt><dt><span class="section"><a href="#idp54365584">2.5. GPS Satellite Data</a></span></dt></dl></dd><dt><span class="section"><a href="#idp54404304">3. Data Transmission</a></span></dt><dd><dl><dt><span class="section"><a href="#idp54405680">3.1. Modulation Scheme</a></span></dt><dt><span class="section"><a href="#idp54422112">3.2. Error Correction</a></span></dt></dl></dd><dt><span class="section"><a href="#idp54435584">4. TeleDongle packet format</a></span></dt><dt><span class="section"><a href="#idp54457360">5. History and Motivation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idp49629568"></a>1. Packet Format Design</h2></div></div></div><p>
+      </p></div></div><div><div class="revhistory"><table style="border-style:solid; width:100%;" summary="Revision History"><tr><th align="left" valign="top" colspan="2"><b>Revision History</b></th></tr><tr><td align="left">Revision 0.1</td><td align="left">01 July 2011</td></tr><tr><td align="left" colspan="2">Initial content</td></tr></table></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="#idm45387702977984">1. Packet Format Design</a></span></dt><dt><span class="section"><a href="#idm45387702974992">2. Packet Formats</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45387702973792">2.1. Packet Header</a></span></dt><dt><span class="section"><a href="#idm45387703730528">2.2. TeleMetrum v1.x, TeleMini and TeleNano Sensor Data</a></span></dt><dt><span class="section"><a href="#idm45387697986624">2.3. TeleMega Sensor  Data</a></span></dt><dt><span class="section"><a href="#idm45387697911584">2.4. TeleMetrum v2 Sensor  Data</a></span></dt><dt><span class="section"><a href="#idm45387697850976">2.5. Configuration Data</a></span></dt><dt><span class="section"><a href="#idm45387697816944">2.6. GPS Location</a></span></dt><dt><span class="section"><a href="#idm45387697735648">2.7. GPS Satellite Data</a></span></dt><dt><span class="section"><a href="#idm45387697697056">2.8. Companion Data Data</a></span></dt></dl></dd><dt><span class="section"><a href="#idm45387697670160">3. Data Transmission</a></span></dt><dd><dl><dt><span class="section"><a href="#idm45387697655920">3.1. Modulation Scheme</a></span></dt><dt><span class="section"><a href="#idm45387697642000">3.2. Error Correction</a></span></dt></dl></dd><dt><span class="section"><a href="#idm45387697628320">4. TeleDongle packet format</a></span></dt><dt><span class="section"><a href="#idm45387697606544">5. History and Motivation</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45387702977984"></a>1. Packet Format Design</h2></div></div></div><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
       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 name="idp49632560"></a>2. Packet Formats</h2></div></div></div><p>
+    </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="idm45387702974992"></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 name="idp49633760"></a>2.1. Packet Header</h3></div></div></div><div class="table"><a name="idp49634432"></a><p class="title"><b>Table 1. Telemetry Packet Header</b></p><div class="table-contents"><table summary="Telemetry Packet Header" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">uint16_t</td><td align="left">serial</td><td align="left">Device serial Number</td></tr><tr><td align="center">2</td><td align="center">uint16_t</td><td align="left">tick</td><td align="left">Device time in 100ths of a second</td></tr><tr><td align="center">4</td><td align="center">uint8_t</td><td align="left">type</td><td align="left">Packet type</td></tr><tr><td align="center">5</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><p>
+    </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387702973792"></a>2.1. Packet Header</h3></div></div></div><div class="table"><a name="idm45387702973120"></a><p class="title"><b>Table 1. Telemetry Packet Header</b></p><div class="table-contents"><table summary="Telemetry Packet Header" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">uint16_t</td><td align="left">serial</td><td align="left">Device serial Number</td></tr><tr><td align="center">2</td><td align="center">uint16_t</td><td align="left">tick</td><td align="left">Device time in 100ths of a second</td></tr><tr><td align="center">4</td><td align="center">uint8_t</td><td align="left">type</td><td align="left">Packet type</td></tr><tr><td align="center">5</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><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 name="idp48868944"></a>2.2. Sensor Data</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x01</td><td align="left">TeleMetrum Sensor Data</td></tr><tr><td align="center">0x02</td><td align="left">TeleMini Sensor Data</td></tr><tr><td align="center">0x03</td><td align="left">TeleNano Sensor Data</td></tr></tbody></table></div><p>
-       TeleMetrum, TeleMini and TeleNano share this same packet
+      </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387703730528"></a>2.2. TeleMetrum v1.x, TeleMini and TeleNano Sensor Data</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x01</td><td align="left">TeleMetrum v1.x Sensor Data</td></tr><tr><td align="center">0x02</td><td align="left">TeleMini Sensor Data</td></tr><tr><td align="center">0x03</td><td align="left">TeleNano Sensor Data</td></tr></tbody></table></div><p>
+       TeleMetrum v1.x, TeleMini 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.
        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 name="idp48748512"></a><p class="title"><b>Table 2. Sensor Packet Contents</b></p><div class="table-contents"><table summary="Sensor Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">state</td><td align="left">Flight state</td></tr><tr><td align="center">6</td><td align="center">int16_t</td><td align="left">accel</td><td align="left">accelerometer (TM only)</td></tr><tr><td align="center">8</td><td align="center">int16_t</td><td align="left">pres</td><td align="left">pressure sensor</td></tr><tr><td align="center">10</td><td align="center">int16_t</td><td align="left">temp</td><td align="left">temperature sensor</td></tr><tr><td align="center">12</td><td align="center">int16_t</td><td align="left">v_batt</td><td align="left">battery voltage</td></tr><tr><td align="center">14</td><td align="center">int16_t</td><td align="left">sense_d</td><td align="left">drogue continuity sense (TM/Tm)</td></tr><tr><td align="center">16</td><td align="center">int16_t</td><td align="left">sense_m</td><td align="left">main continuity sense (TM/Tm)</td></tr><tr><td align="center">18</td><td align="center">int16_t</td><td align="left">acceleration</td><td align="left">m/s² * 16</td></tr><tr><td align="center">20</td><td align="center">int16_t</td><td align="left">speed</td><td align="left">m/s * 16</td></tr><tr><td align="center">22</td><td align="center">int16_t</td><td align="left">height</td><td align="left">m</td></tr><tr><td align="center">24</td><td align="center">int16_t</td><td align="left">ground_pres</td><td align="left">Average barometer reading on ground</td></tr><tr><td align="center">26</td><td align="center">int16_t</td><td align="left">ground_accel</td><td align="left">TM</td></tr><tr><td align="center">28</td><td align="center">int16_t</td><td align="left">accel_plus_g</td><td align="left">TM</td></tr><tr><td align="center">30</td><td align="center">int16_t</td><td align="left">accel_minus_g</td><td align="left">TM</td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp54256176"></a>2.3. Configuration Data</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x04</td><td align="left">Configuration Data</td></tr></tbody></table></div><p>
+      </p><div class="table"><a name="idm45387703907952"></a><p class="title"><b>Table 2. Sensor Packet Contents</b></p><div class="table-contents"><table summary="Sensor Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">state</td><td align="left">Flight state</td></tr><tr><td align="center">6</td><td align="center">int16_t</td><td align="left">accel</td><td align="left">accelerometer (TM only)</td></tr><tr><td align="center">8</td><td align="center">int16_t</td><td align="left">pres</td><td align="left">pressure sensor</td></tr><tr><td align="center">10</td><td align="center">int16_t</td><td align="left">temp</td><td align="left">temperature sensor</td></tr><tr><td align="center">12</td><td align="center">int16_t</td><td align="left">v_batt</td><td align="left">battery voltage</td></tr><tr><td align="center">14</td><td align="center">int16_t</td><td align="left">sense_d</td><td align="left">drogue continuity sense (TM/Tm)</td></tr><tr><td align="center">16</td><td align="center">int16_t</td><td align="left">sense_m</td><td align="left">main continuity sense (TM/Tm)</td></tr><tr><td align="center">18</td><td align="center">int16_t</td><td align="left">acceleration</td><td align="left">m/s² * 16</td></tr><tr><td align="center">20</td><td align="center">int16_t</td><td align="left">speed</td><td align="left">m/s * 16</td></tr><tr><td align="center">22</td><td align="center">int16_t</td><td align="left">height</td><td align="left">m</td></tr><tr><td align="center">24</td><td align="center">int16_t</td><td align="left">ground_pres</td><td align="left">Average barometer reading on ground</td></tr><tr><td align="center">26</td><td align="center">int16_t</td><td align="left">ground_accel</td><td align="left">TM</td></tr><tr><td align="center">28</td><td align="center">int16_t</td><td align="left">accel_plus_g</td><td align="left">TM</td></tr><tr><td align="center">30</td><td align="center">int16_t</td><td align="left">accel_minus_g</td><td align="left">TM</td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387697986624"></a>2.3. TeleMega Sensor  Data</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x08</td><td align="left">TeleMega IMU Sensor Data</td></tr><tr><td align="center">0x09</td><td align="left">TeleMega Kalman and Voltage Data</td></tr></tbody></table></div><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
+       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
+       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
+       for the 9-axis IMU (accel/gyro/mag). The 9-axis IMU is mounted
+       so that the X axis is "across" the board (along the short
+       axis0, the Y axis is "along" the board (along the long axis,
+       with the high-g accelerometer) and the Z axis is "through" the
+       board (perpendicular to the board). Rotation measurements are
+       around the respective axis, so Y rotation measures the spin
+       rate of the rocket while X and Z rotation measure the tilt
+       rate.
+      </p><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 name="idm45387697973568"></a><p class="title"><b>Table 3. TeleMega IMU Sensor Packet Contents</b></p><div class="table-contents"><table summary="TeleMega IMU Sensor Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">orient</td><td align="left">Angle from vertical in degrees</td></tr><tr><td align="center">6</td><td align="center">int16_t</td><td align="left">accel</td><td align="left">High G accelerometer</td></tr><tr><td align="center">8</td><td align="center">int32_t</td><td align="left">pres</td><td align="left">pressure (Pa * 10)</td></tr><tr><td align="center">12</td><td align="center">int16_t</td><td align="left">temp</td><td align="left">temperature (°C * 100)</td></tr><tr><td align="center">14</td><td align="center">int16_t</td><td align="left">accel_x</td><td align="left">X axis acceleration (across)</td></tr><tr><td align="center">16</td><td align="center">int16_t</td><td align="left">accel_y</td><td align="left">Y axis acceleration (along)</td></tr><tr><td align="center">18</td><td align="center">int16_t</td><td align="left">accel_z</td><td align="left">Z axis acceleration (through)</td></tr><tr><td align="center">20</td><td align="center">int16_t</td><td align="left">gyro_x</td><td align="left">X axis rotation (across)</td></tr><tr><td align="center">22</td><td align="center">int16_t</td><td align="left">gyro_y</td><td align="left">Y axis rotation (along)</td></tr><tr><td align="center">24</td><td align="center">int16_t</td><td align="left">gyro_z</td><td align="left">Z axis rotation (through)</td></tr><tr><td align="center">26</td><td align="center">int16_t</td><td align="left">mag_x</td><td align="left">X field strength (across)</td></tr><tr><td align="center">28</td><td align="center">int16_t</td><td align="left">mag_y</td><td align="left">Y field strength (along)</td></tr><tr><td align="center">30</td><td align="center">int16_t</td><td align="left">mag_z</td><td align="left">Z field strength (through)</td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="idm45387697940912"></a><p class="title"><b>Table 4. TeleMega Kalman and Voltage Data Packet Contents</b></p><div class="table-contents"><table summary="TeleMega Kalman and Voltage Data Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">state</td><td align="left">Flight state</td></tr><tr><td align="center">6</td><td align="center">int16_t</td><td align="left">v_batt</td><td align="left">battery voltage</td></tr><tr><td align="center">8</td><td align="center">int16_t</td><td align="left">v_pyro</td><td align="left">pyro battery voltage</td></tr><tr><td align="center">10</td><td align="center">int8_t[6]</td><td align="left">sense</td><td align="left">pyro continuity sense</td></tr><tr><td align="center">16</td><td align="center">int32_t</td><td align="left">ground_pres</td><td align="left">Average barometer reading on ground</td></tr><tr><td align="center">20</td><td align="center">int16_t</td><td align="left">ground_accel</td><td align="left">Average accelerometer reading on ground</td></tr><tr><td align="center">22</td><td align="center">int16_t</td><td align="left">accel_plus_g</td><td align="left">Accel calibration at +1g</td></tr><tr><td align="center">24</td><td align="center">int16_t</td><td align="left">accel_minus_g</td><td align="left">Accel calibration at -1g</td></tr><tr><td align="center">26</td><td align="center">int16_t</td><td align="left">acceleration</td><td align="left">m/s² * 16</td></tr><tr><td align="center">28</td><td align="center">int16_t</td><td align="left">speed</td><td align="left">m/s * 16</td></tr><tr><td align="center">30</td><td align="center">int16_t</td><td align="left">height</td><td align="left">m</td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387697911584"></a>2.4. TeleMetrum v2 Sensor  Data</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x0A</td><td align="left">TeleMetrum v2 Sensor Data</td></tr><tr><td align="center">0x0B</td><td align="left">TeleMetrum v2 Calibration Data</td></tr></tbody></table></div><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
+       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 name="idm45387697900336"></a><p class="title"><b>Table 5. TeleMetrum v2 Sensor Packet Contents</b></p><div class="table-contents"><table summary="TeleMetrum v2 Sensor Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">state</td><td align="left">Flight state</td></tr><tr><td align="center">6</td><td align="center">int16_t</td><td align="left">accel</td><td align="left">accelerometer</td></tr><tr><td align="center">8</td><td align="center">int32_t</td><td align="left">pres</td><td align="left">pressure sensor (Pa * 10)</td></tr><tr><td align="center">12</td><td align="center">int16_t</td><td align="left">temp</td><td align="left">temperature sensor (°C * 100)</td></tr><tr><td align="center">14</td><td align="center">int16_t</td><td align="left">acceleration</td><td align="left">m/s² * 16</td></tr><tr><td align="center">16</td><td align="center">int16_t</td><td align="left">speed</td><td align="left">m/s * 16</td></tr><tr><td align="center">18</td><td align="center">int16_t</td><td align="left">height</td><td align="left">m</td></tr><tr><td align="center">20</td><td align="center">int16_t</td><td align="left">v_batt</td><td align="left">battery voltage</td></tr><tr><td align="center">22</td><td align="center">int16_t</td><td align="left">sense_d</td><td align="left">drogue continuity sense</td></tr><tr><td align="center">24</td><td align="center">int16_t</td><td align="left">sense_m</td><td align="left">main continuity sense</td></tr><tr><td align="center">26</td><td align="center">pad[6]</td><td align="left">pad bytes</td><td align="left"> </td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="idm45387697871200"></a><p class="title"><b>Table 6. TeleMetrum v2 Calibration Data Packet Contents</b></p><div class="table-contents"><table summary="TeleMetrum v2 Calibration Data Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">pad[3]</td><td align="left">pad bytes</td><td align="left"> </td></tr><tr><td align="center">8</td><td align="center">int32_t</td><td align="left">ground_pres</td><td align="left">Average barometer reading on ground</td></tr><tr><td align="center">12</td><td align="center">int16_t</td><td align="left">ground_accel</td><td align="left">Average accelerometer reading on ground</td></tr><tr><td align="center">14</td><td align="center">int16_t</td><td align="left">accel_plus_g</td><td align="left">Accel calibration at +1g</td></tr><tr><td align="center">16</td><td align="center">int16_t</td><td align="left">accel_minus_g</td><td align="left">Accel calibration at -1g</td></tr><tr><td align="center">18</td><td align="center">pad[14]</td><td align="left">pad bytes</td><td align="left"> </td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387697850976"></a>2.5. Configuration Data</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x04</td><td align="left">Configuration Data</td></tr></tbody></table></div><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 name="idp54265584"></a><p class="title"><b>Table 3. Sensor Packet Contents</b></p><div class="table-contents"><table summary="Sensor Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">type</td><td align="left">Device type</td></tr><tr><td align="center">6</td><td align="center">uint16_t</td><td align="left">flight</td><td align="left">Flight number</td></tr><tr><td align="center">8</td><td align="center">uint8_t</td><td align="left">config_major</td><td align="left">Config major version</td></tr><tr><td align="center">9</td><td align="center">uint8_t</td><td align="left">config_minor</td><td align="left">Config minor version</td></tr><tr><td align="center">10</td><td align="center">uint16_t</td><td align="left">apogee_delay</td><td align="left">Apogee deploy delay in seconds</td></tr><tr><td align="center">12</td><td align="center">uint16_t</td><td align="left">main_deploy</td><td align="left">Main deploy alt in meters</td></tr><tr><td align="center">14</td><td align="center">uint16_t</td><td align="left">flight_log_max</td><td align="left">Maximum flight log size (kB)</td></tr><tr><td align="center">16</td><td align="center">char</td><td align="left">callsign[8]</td><td align="left">Radio operator identifier</td></tr><tr><td align="center">24</td><td align="center">char</td><td align="left">version[8]</td><td align="left">Software version identifier</td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp54292032"></a>2.4. GPS Location</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x05</td><td align="left">GPS Location</td></tr></tbody></table></div><p>
+      </p><div class="table"><a name="idm45387697841824"></a><p class="title"><b>Table 7. Sensor Packet Contents</b></p><div class="table-contents"><table summary="Sensor Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">type</td><td align="left">Device type</td></tr><tr><td align="center">6</td><td align="center">uint16_t</td><td align="left">flight</td><td align="left">Flight number</td></tr><tr><td align="center">8</td><td align="center">uint8_t</td><td align="left">config_major</td><td align="left">Config major version</td></tr><tr><td align="center">9</td><td align="center">uint8_t</td><td align="left">config_minor</td><td align="left">Config minor version</td></tr><tr><td align="center">10</td><td align="center">uint16_t</td><td align="left">apogee_delay</td><td align="left">Apogee deploy delay in seconds</td></tr><tr><td align="center">12</td><td align="center">uint16_t</td><td align="left">main_deploy</td><td align="left">Main deploy alt in meters</td></tr><tr><td align="center">14</td><td align="center">uint16_t</td><td align="left">flight_log_max</td><td align="left">Maximum flight log size (kB)</td></tr><tr><td align="center">16</td><td align="center">char</td><td align="left">callsign[8]</td><td align="left">Radio operator identifier</td></tr><tr><td align="center">24</td><td align="center">char</td><td align="left">version[8]</td><td align="left">Software version identifier</td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387697816944"></a>2.6. GPS Location</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x05</td><td align="left">GPS Location</td></tr></tbody></table></div><p>
        This packet provides all of the information available from the
-       Venus SkyTraq GPS receiver&#8212;position, time, speed and precision
+       GPS receiver&#8212;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 name="idp54301696"></a><p class="title"><b>Table 4. GPS Location Packet Contents</b></p><div class="table-contents"><table summary="GPS Location Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">flags</td><td align="left">See GPS Flags table below</td></tr><tr><td align="center">6</td><td align="center">int16_t</td><td align="left">altitude</td><td align="left">m</td></tr><tr><td align="center">8</td><td align="center">int32_t</td><td align="left">latitude</td><td align="left">degrees * 10<sup>7</sup></td></tr><tr><td align="center">12</td><td align="center">int32_t</td><td align="left">longitude</td><td align="left">degrees * 10<sup>7</sup></td></tr><tr><td align="center">16</td><td align="center">uint8_t</td><td align="left">year</td><td class="auto-generated"> </td></tr><tr><td align="center">17</td><td align="center">uint8_t</td><td align="left">month</td><td class="auto-generated"> </td></tr><tr><td align="center">18</td><td align="center">uint8_t</td><td align="left">day</td><td class="auto-generated"> </td></tr><tr><td align="center">19</td><td align="center">uint8_t</td><td align="left">hour</td><td class="auto-generated"> </td></tr><tr><td align="center">20</td><td align="center">uint8_t</td><td align="left">minute</td><td class="auto-generated"> </td></tr><tr><td align="center">21</td><td align="center">uint8_t</td><td align="left">second</td><td class="auto-generated"> </td></tr><tr><td align="center">22</td><td align="center">uint8_t</td><td align="left">pdop</td><td align="left">* 5</td></tr><tr><td align="center">23</td><td align="center">uint8_t</td><td align="left">hdop</td><td align="left">* 5</td></tr><tr><td align="center">24</td><td align="center">uint8_t</td><td align="left">vdop</td><td align="left">* 5</td></tr><tr><td align="center">25</td><td align="center">uint8_t</td><td align="left">mode</td><td align="left">See GPS Mode table below</td></tr><tr><td align="center">26</td><td align="center">uint16_t</td><td align="left">ground_speed</td><td align="left">cm/s</td></tr><tr><td align="center">28</td><td align="center">int16_t</td><td align="left">climb_rate</td><td align="left">cm/s</td></tr><tr><td align="center">30</td><td align="center">uint8_t</td><td align="left">course</td><td align="left">/ 2</td></tr><tr><td align="center">31</td><td align="center">uint8_t</td><td align="left">unused[1]</td><td class="auto-generated"> </td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><p>
+      </p><div class="table"><a name="idm45387697807664"></a><p class="title"><b>Table 8. GPS Location Packet Contents</b></p><div class="table-contents"><table summary="GPS Location Packet Contents" border="1"><colgroup><col align="center" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">5</td><td align="center">uint8_t</td><td align="left">flags</td><td align="left">See GPS Flags table below</td></tr><tr><td align="center">6</td><td align="center">int16_t</td><td align="left">altitude</td><td align="left">m</td></tr><tr><td align="center">8</td><td align="center">int32_t</td><td align="left">latitude</td><td align="left">degrees * 10<sup>7</sup></td></tr><tr><td align="center">12</td><td align="center">int32_t</td><td align="left">longitude</td><td align="left">degrees * 10<sup>7</sup></td></tr><tr><td align="center">16</td><td align="center">uint8_t</td><td align="left">year</td><td class="auto-generated"> </td></tr><tr><td align="center">17</td><td align="center">uint8_t</td><td align="left">month</td><td class="auto-generated"> </td></tr><tr><td align="center">18</td><td align="center">uint8_t</td><td align="left">day</td><td class="auto-generated"> </td></tr><tr><td align="center">19</td><td align="center">uint8_t</td><td align="left">hour</td><td class="auto-generated"> </td></tr><tr><td align="center">20</td><td align="center">uint8_t</td><td align="left">minute</td><td class="auto-generated"> </td></tr><tr><td align="center">21</td><td align="center">uint8_t</td><td align="left">second</td><td class="auto-generated"> </td></tr><tr><td align="center">22</td><td align="center">uint8_t</td><td align="left">pdop</td><td align="left">* 5</td></tr><tr><td align="center">23</td><td align="center">uint8_t</td><td align="left">hdop</td><td align="left">* 5</td></tr><tr><td align="center">24</td><td align="center">uint8_t</td><td align="left">vdop</td><td align="left">* 5</td></tr><tr><td align="center">25</td><td align="center">uint8_t</td><td align="left">mode</td><td align="left">See GPS Mode table below</td></tr><tr><td align="center">26</td><td align="center">uint16_t</td><td align="left">ground_speed</td><td align="left">cm/s</td></tr><tr><td align="center">28</td><td align="center">int16_t</td><td align="left">climb_rate</td><td align="left">cm/s</td></tr><tr><td align="center">30</td><td align="center">uint8_t</td><td align="left">course</td><td align="left">/ 2</td></tr><tr><td align="center">31</td><td align="center">uint8_t</td><td align="left">unused[1]</td><td class="auto-generated"> </td></tr><tr><td align="center">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><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 name="idp51294064"></a><p class="title"><b>Table 5. GPS Flags</b></p><div class="table-contents"><table summary="GPS Flags" border="1"><colgroup><col align="center" class="bits"><col align="left" class="name"><col align="left" class="description"></colgroup><thead><tr><th align="center">Bits</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0-3</td><td align="left">nsats</td><td align="left">Number of satellites in solution</td></tr><tr><td align="center">4</td><td align="left">valid</td><td align="left">GPS solution is valid</td></tr><tr><td align="center">5</td><td align="left">running</td><td align="left">GPS receiver is operational</td></tr><tr><td align="center">6</td><td align="left">date_valid</td><td align="left">Reported date is valid</td></tr><tr><td align="center">7</td><td align="left">course_valid</td><td align="left">ground speed, course and climb rates are valid</td></tr></tbody></table></div></div><br class="table-break"><p>
+      </p><div class="table"><a name="idm45387697769600"></a><p class="title"><b>Table 9. GPS Flags</b></p><div class="table-contents"><table summary="GPS Flags" border="1"><colgroup><col align="center" class="bits"><col align="left" class="name"><col align="left" class="description"></colgroup><thead><tr><th align="center">Bits</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0-3</td><td align="left">nsats</td><td align="left">Number of satellites in solution</td></tr><tr><td align="center">4</td><td align="left">valid</td><td align="left">GPS solution is valid</td></tr><tr><td align="center">5</td><td align="left">running</td><td align="left">GPS receiver is operational</td></tr><tr><td align="center">6</td><td align="left">date_valid</td><td align="left">Reported date is valid</td></tr><tr><td align="center">7</td><td align="left">course_valid</td><td align="left">ground speed, course and climb rates are valid</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 '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 name="idp54348016"></a><p class="title"><b>Table 6. GPS Mode</b></p><div class="table-contents"><table summary="GPS Mode" border="1"><colgroup><col align="center" class="value"><col align="center" class="name"><col align="left" class="description"></colgroup><thead><tr><th align="center">Mode</th><th align="center">Name</th><th align="center">Decsription</th></tr></thead><tbody><tr><td align="center">N</td><td align="center">Not Valid</td><td align="left">All data are invalid</td></tr><tr><td align="center">A</td><td align="center">Autonomous mode</td><td align="left">Data are derived from satellite data</td></tr><tr><td align="center">D</td><td align="center">Differential Mode</td><td align="left">
+      </p><div class="table"><a name="idm45387697753216"></a><p class="title"><b>Table 10. GPS Mode</b></p><div class="table-contents"><table summary="GPS Mode" border="1"><colgroup><col align="center" class="value"><col align="center" class="name"><col align="left" class="description"></colgroup><thead><tr><th align="center">Mode</th><th align="center">Name</th><th align="center">Decsription</th></tr></thead><tbody><tr><td align="center">N</td><td align="center">Not Valid</td><td align="left">All data are invalid</td></tr><tr><td align="center">A</td><td align="center">Autonomous mode</td><td align="left">Data are derived from satellite data</td></tr><tr><td align="center">D</td><td align="center">Differential Mode</td><td align="left">
                  Data are augmented with differential data from a
                  known ground station. The SkyTraq unit in TeleMetrum
                  does not support this mode
                </td></tr><tr><td align="center">E</td><td align="center">Estimated</td><td align="left">
                  Data are estimated using dead reckoning from the
                  last known data
-               </td></tr><tr><td align="center">M</td><td align="center">Manual</td><td align="left">Data were entered manually</td></tr><tr><td align="center">S</td><td align="center">Simulated</td><td align="left">GPS receiver testing mode</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp54365584"></a>2.5. GPS Satellite Data</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x06</td><td align="left">GPS Satellite Data</td></tr></tbody></table></div><p>
+               </td></tr><tr><td align="center">M</td><td align="center">Manual</td><td align="left">Data were entered manually</td></tr><tr><td align="center">S</td><td align="center">Simulated</td><td align="left">GPS receiver testing mode</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387697735648"></a>2.7. GPS Satellite Data</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x06</td><td align="left">GPS Satellite Data</td></tr></tbody></table></div><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 name="idp54374768"></a><p class="title"><b>Table 7. GPS Satellite Data Contents</b></p><div class="table-contents"><table summary="GPS Satellite Data Contents" border="1"><colgroup><col align="right" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="right">5</td><td align="center">uint8_t</td><td align="left">channels</td><td align="left">Number of reported satellite information</td></tr><tr><td align="right">6</td><td align="center">sat_info_t</td><td align="left">sats[12]</td><td align="left">See Per-Satellite data table below</td></tr><tr><td align="right">30</td><td align="center">uint8_t</td><td align="left">unused[2]</td><td class="auto-generated"> </td></tr><tr><td align="right">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="idp54390048"></a><p class="title"><b>Table 8. GPS Per-Satellite data (sat_info_t)</b></p><div class="table-contents"><table summary="GPS Per-Satellite data (sat_info_t)" border="1"><colgroup><col align="right" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="right">0</td><td align="center">uint8_t</td><td align="left">svid</td><td align="left">Space Vehicle Identifier</td></tr><tr><td align="right">1</td><td align="center">uint8_t</td><td align="left">c_n_1</td><td align="left">C/N1 signal quality indicator</td></tr><tr><td align="right">2</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </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 name="idp54404304"></a>3. Data Transmission</h2></div></div></div><p>
-      Altus Metrum devices use the Texas Instruments CC1111
-      microcontroller which includes an integrated sub-GHz digital
-      transceiver. This transceiver is used to both transmit and
-      receive the telemetry packets. This section discusses what
-      modulation scheme is used and how this device is configured.
-    </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp54405680"></a>3.1. Modulation Scheme</h3></div></div></div><p>
+      </p><div class="table"><a name="idm45387697726464"></a><p class="title"><b>Table 11. GPS Satellite Data Contents</b></p><div class="table-contents"><table summary="GPS Satellite Data Contents" border="1"><colgroup><col align="right" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="right">5</td><td align="center">uint8_t</td><td align="left">channels</td><td align="left">Number of reported satellite information</td></tr><tr><td align="right">6</td><td align="center">sat_info_t</td><td align="left">sats[12]</td><td align="left">See Per-Satellite data table below</td></tr><tr><td align="right">30</td><td align="center">uint8_t</td><td align="left">unused[2]</td><td class="auto-generated"> </td></tr><tr><td align="right">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="idm45387697711184"></a><p class="title"><b>Table 12. GPS Per-Satellite data (sat_info_t)</b></p><div class="table-contents"><table summary="GPS Per-Satellite data (sat_info_t)" border="1"><colgroup><col align="right" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="right">0</td><td align="center">uint8_t</td><td align="left">svid</td><td align="left">Space Vehicle Identifier</td></tr><tr><td align="right">1</td><td align="center">uint8_t</td><td align="left">c_n_1</td><td align="left">C/N1 signal quality indicator</td></tr><tr><td align="right">2</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387697697056"></a>2.8. Companion Data Data</h3></div></div></div><div class="informaltable"><table border="0"><colgroup><col align="center" class="Offset"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Type</th><th align="left">Description</th></tr></thead><tbody><tr><td align="center">0x07</td><td align="left">Companion Data Data</td></tr></tbody></table></div><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 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 name="idm45387697687744"></a><p class="title"><b>Table 13. Companion Data Contents</b></p><div class="table-contents"><table summary="Companion Data Contents" border="1"><colgroup><col align="right" class="Offset"><col align="center" class="Data Type"><col align="left" class="Name"><col align="left" class="Description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Data Type</th><th align="center">Name</th><th align="center">Description</th></tr></thead><tbody><tr><td align="right">5</td><td align="center">uint8_t</td><td align="left">board_id</td><td align="left">Type of companion board attached</td></tr><tr><td align="right">6</td><td align="center">uint8_t</td><td align="left">update_period</td><td align="left">How often telemetry is sent, in 1/100ths of a second</td></tr><tr><td align="right">7</td><td align="center">uint8_t</td><td align="left">channels</td><td align="left">Number of data channels supplied</td></tr><tr><td align="right">8</td><td align="center">uint16_t[12]</td><td align="left">companion_data</td><td align="left">Up to 12 channels of 16-bit companion data</td></tr><tr><td align="right">32</td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </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 name="idm45387697670160"></a>3. Data Transmission</h2></div></div></div><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 name="idm45387697668896"></a><p class="title"><b>Table 14. Altus Metrum Radio Parts</b></p><div class="table-contents"><table summary="Altus Metrum Radio Parts" border="1"><colgroup><col align="center" class="Part Number"><col align="center" class="Description"><col align="left" class="Used in"></colgroup><thead><tr><th align="center">Part Number</th><th align="center">Description</th><th align="center">Used in</th></tr></thead><tbody><tr><td align="center">CC1111</td><td align="center">10mW transceiver with integrated SoC</td><td align="left">TeleDongle v0.2, TeleBT v1.0, TeleMetrum v1.x, TeleMini</td></tr><tr><td align="center">CC1120</td><td align="center">35mW transceiver with SW FEC</td><td align="left">TeleMetrum v2, TeleMega</td></tr><tr><td align="center">CC1200</td><td align="center">35mW transceiver with HW FEC</td><td align="left">TeleDongle v3.0, TeleBT v3.0</td></tr><tr><td align="center">CC115L</td><td align="center">14mW transmitter with SW FEC</td><td align="left">TeleGPS</td></tr></tbody></table></div></div><br class="table-break"><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387697655920"></a>3.1. Modulation Scheme</h3></div></div></div><p>
        Texas Instruments provides a tool for computing modulation
        parameters given a desired modulation format and basic bit
-       rate. For AltOS, the basic bit rate was specified as 38 kBaud,
-       resulting in the following signal parmeters:
-      </p><div class="table"><a name="idp54406960"></a><p class="title"><b>Table 9. Modulation Scheme</b></p><div class="table-contents"><table summary="Modulation Scheme" border="1"><colgroup><col align="center" class="parameter"><col align="center" class="value"><col align="center" class="description"></colgroup><thead><tr><th align="center">Parameter</th><th align="center">Value</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Modulation</td><td align="center">GFSK</td><td align="center">Gaussian Frequency Shift Keying</td></tr><tr><td align="center">Deviation</td><td align="center">20.507812 kHz</td><td align="center">Frequency modulation</td></tr><tr><td align="center">Data rate</td><td align="center">38.360596 kBaud</td><td align="center">Raw bit rate</td></tr><tr><td align="center">RX Filter Bandwidth</td><td align="center">93.75 kHz</td><td align="center">Receiver Band pass filter bandwidth</td></tr><tr><td align="center">IF Frequency</td><td align="center">140.62 kHz</td><td align="center">Receiver intermediate frequency</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idp54422112"></a>3.2. Error Correction</h3></div></div></div><p>
-       The cc1111 provides forward error correction in hardware,
-       which AltOS uses to improve reception of weak signals. The
-       overall effect of this is to halve the available bandwidth for
-       data from 38 kBaud to 19 kBaud.
-      </p><div class="table"><a name="idp54423376"></a><p class="title"><b>Table 10. Error Correction</b></p><div class="table-contents"><table summary="Error Correction" border="1"><colgroup><col align="center" class="parameter"><col align="center" class="value"><col align="center" class="description"></colgroup><thead><tr><th align="center">Parameter</th><th align="center">Value</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Error Correction</td><td align="center">Convolutional coding</td><td align="center">1/2 rate, constraint length m=4</td></tr><tr><td align="center">Interleaving</td><td align="center">4 x 4</td><td align="center">Reduce effect of noise burst</td></tr><tr><td align="center">Data Whitening</td><td align="center">XOR with 9-bit PNR</td><td align="center">Rotate right with bit 8 = bit 0 xor bit 5, initial
-             value 111111111</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 name="idp54435584"></a>4. TeleDongle packet format</h2></div></div></div><p>
+       rate.
+
+       While we might like to use something with better low-signal
+       performance like BPSK, the radios we use don'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
+       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.
+
+       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 name="idm45387697654080"></a><p class="title"><b>Table 15. Modulation Scheme</b></p><div class="table-contents"><table summary="Modulation Scheme" border="1"><colgroup><col align="center" class="rate"><col align="center" class="deviation"><col align="center" class="bandwidth"></colgroup><thead><tr><th align="center">Rate</th><th align="center">Deviation</th><th align="center">Receiver Bandwidth</th></tr></thead><tbody><tr><td align="center">38.4kBaud</td><td align="center">20.5kHz</td><td align="center">100kHz</td></tr><tr><td align="center">9.6kBaud</td><td align="center">5.125kHz</td><td align="center">25kHz</td></tr><tr><td align="center">2.4kBaud</td><td align="center">1.5kHz</td><td align="center">5kHz</td></tr></tbody></table></div></div><br class="table-break"></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="idm45387697642000"></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
+       software. AltOS uses this to improve reception of weak
+       signals. As it'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 name="idm45387697640624"></a><p class="title"><b>Table 16. Error Correction</b></p><div class="table-contents"><table summary="Error Correction" border="1"><colgroup><col align="center" class="parameter"><col align="center" class="value"><col align="center" class="description"></colgroup><thead><tr><th align="center">Parameter</th><th align="center">Value</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">Error Correction</td><td align="center">Convolutional coding</td><td align="center">1/2 rate, constraint length m=4</td></tr><tr><td align="center">Interleaving</td><td align="center">4 x 4</td><td align="center">Reduce effect of noise burst</td></tr><tr><td align="center">Data Whitening</td><td align="center">XOR with 9-bit PNR</td><td align="center">Rotate right with bit 8 = bit 0 xor bit 5, initial
+             value 111111111</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 name="idm45387697628320"></a>4. TeleDongle packet format</h2></div></div></div><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,
       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 name="idp54438384"></a><p class="title"><b>Table 11. Packet Format</b></p><div class="table-contents"><table summary="Packet Format" border="1"><colgroup><col align="center" class="offset"><col align="center" class="name"><col align="center" class="value"><col align="center" class="description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Name</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">length</td><td align="center">22</td><td align="center">Total length of data bytes in the line. Note that
+    </p><div class="table"><a name="idm45387697625520"></a><p class="title"><b>Table 17. Packet Format</b></p><div class="table-contents"><table summary="Packet Format" border="1"><colgroup><col align="center" class="offset"><col align="center" class="name"><col align="center" class="value"><col align="center" class="description"></colgroup><thead><tr><th align="center">Offset</th><th align="center">Name</th><th align="center">Example</th><th align="center">Description</th></tr></thead><tbody><tr><td align="center">0</td><td align="center">length</td><td align="center">22</td><td align="center">Total length of data bytes in the line. Note that
            this includes the added RSSI and status bytes</td></tr><tr><td align="center">1 ·· length-3</td><td align="center">packet</td><td align="center">4f ·· 00</td><td align="center">Bytes of actual packet data</td></tr><tr><td align="center">length-2</td><td align="center">rssi</td><td align="center">3f</td><td align="center">Received signal strength. dBm = rssi / 2 - 74</td></tr><tr><td align="center">length-1</td><td align="center">lqi</td><td align="center">a9</td><td align="center">Link Quality Indicator and CRC status. Bit 7
-           is set when the CRC is correct</td></tr><tr><td align="center">length</td><td align="center">checksum</td><td align="center">88</td><td align="center">(0x5a + sum(bytes 1 ·· length-1)) % 256</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 name="idp54457360"></a>5. History and Motivation</h2></div></div></div><p>
+           is set when the CRC is correct</td></tr><tr><td align="center">length</td><td align="center">checksum</td><td align="center">88</td><td align="center">(0x5a + sum(bytes 1 ·· length-1)) % 256</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 name="idm45387697606544"></a>5. History and Motivation</h2></div></div></div><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
index e9beb0f7eec6d4aeadb24a46ea7acac5204ce572..c035641664375efbac93c21cf5bedae51dc9bd95 100644 (file)
Binary files a/AltOS/doc/telemetry.pdf and b/AltOS/doc/telemetry.pdf differ