# AltOS
-This is Keith's "operating system" for [TeleMetrum](../TeleMetrum/).
+AltOS is the name of Keith's firmware "operating system" for
+[TeleMetrum](../TeleMetrum/) and [TeleDongle](../TeleDongle/).
-## Motivation ##
+In addition to the firmware for [TeleMetrum](../TeleMetrum) and
+[TeleDongle](../TeleDongle) boards, the AltOS source tree also
+includes AltosUI, which provides for flight monitoring, post-flight
+analysis, device configuration and firmware updating. AltosUI runs on
+Linux, Mac OS X and Windows. It's written in [Java](http://java.com)
+and offers the same functionality and interface on all three
+platforms. A small platform-specific library communicates with the USB
+interface on the Altus Metrum devices.
+
+There are also Linux-specific tools that provide lower level access to
+the devices which are useful for developing firmware for the devices.
-[FreeRTOS](http://freertos.org) turned out to be too heavy for our needs, so
-Keith started over from scratch and wrote something that does just what we
-needed.
+The firmware and associated software are licensed [GPL version
+2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
-## Features ##
+## Available Versions ##
+
+There is a single manual for all Altus Metrum products, which is available
+in [html](doc/altusmetrum.html) and [pdf](doc/altusmetrum.pdf) formats.
-### User View ###
-
-### Developer View ###
-
-* Licenses
- * The software is licensed [GPL version 2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
-
-## Problems ##
-
-## Artifacts ##
-
-The source available from [git.gag.com](http://git.gag.com) in the project
-[fw/altos](http://git.gag.com/?p=fw/altos;a=summary).
-
-Debian packages are also available:
+[[!inline pages="./releases/* and !*/Discussion and !*.bz2 and !*.zip and !*.exe" show="10" rss="no" raw="yes" ]]
+
+The latest source, which may include unreleased work in progress, is always
+available from [git.gag.com](http://git.gag.com)
+in the project [fw/altos](http://git.gag.com/?p=fw/altos;a=summary).
+
+If you need to debug code on an Altus Metrum product, you may want our special
+version of SDCC containing a highly modified sdcdb with support for the cc1111
+debugging interface, which you can find on [git.gag.com](http://git.gag.com)
+in the project [fw/sdcc](http://git.gag.com/?p=fw/sdcc;a=summary). This is
+not necessary if you just want to rebuild AltOS and use it.
+
+### Version 0.9 Features ###
+
+Version 0.9 adds a few new firmware features and accompanying AltosUI
+changes, along with new hardware support.
+
+ * Support for TeleMetrum v1.1 hardware. Sources for the flash memory
+ part used in v1.0 dried up, so v1.1 uses a different part which
+ required a new driver and support for explicit flight log erasing.
+
+ * Multiple flight log support. This stores more than one flight log
+ in the on-board flash memory. It also requires the user to
+ explicitly erase flights so that you won't lose flight logs just
+ because you fly the same board twice in one day.
+
+ * Telemetry support for devices with serial number >= 256. Previous
+ versions used a telemetry packet format that provided only 8 bits
+ for the device serial number. This change requires that both ends
+ of the telemetry link be running the 0.9 firmware or they will not
+ communicate.
+
+### Version 0.8 Features ###
+
+Version 0.8 offers a major upgrade in the AltosUI
+interface. Significant new features include:
+
+* Post-flight graphing tool. This lets you explore the behaviour of
+ your rocket after flight with a scroll-able and zoom-able chart
+ showing the altitude, speed and acceleration of the airframe along
+ with events recorded by the flight computer. You can export graphs
+ to PNG files, or print them directly.
+
+* Real-time moving map which overlays the in-progress flight on
+ satellite imagery fetched from
+ [Google Maps](http://maps.google.com). This lets you see in pictures
+ where your rocket has landed, allowing you to plan recovery
+ activities more accurately.
+
+* Wireless recovery system testing. Prep your rocket for flight and test
+ fire the deployment charges to make sure things work as
+ expected. All without threading wires through holes in your
+ airframe.
+
+* Optimized flight status displays. Each flight state now has it's own
+ custom 'tab' in the flight monitoring window so you can focus on the
+ most important details. Pre-flight, the system shows a set of
+ red/green status indicators for battery voltage, apogee/main igniter
+ continutity and GPS reception. Wait until they're all green and your
+ rocket is ready for flight. There are also tabs for ascent, descent
+ and landing along with the original tabular view of the data.
+
+* Monitor multiple flights simultaneously. If you have more than one
+ TeleDongle, you can monitor a flight with each one on the same
+ computer.
+
+* Automatic flight monitoring at startup. Plug TeleDongle into the
+ machine before starting AltosUI and it will automatically connect to
+ it and prepare to monitor a flight.
+
+* 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.
+
+### Version 0.7.1 Features ###
+
+Version 0.7.1 is the first release containing our new cross-platform Java-based user interface. AltosUI can:
+
+* Receive and log telemetry from a connected TeleDongle device. All data
+ received is saved to log files named with the current date and the connected
+ rocket serial and flight numbers. There is no mode in which telemetry data
+ will not be saved.
+
+* Download logged data from TeleMetrum devices, either through a direct USB
+ connection or over the air through a TeleDongle device.
+
+* Configure a TeleMetrum device, setting the radio channel, callsign, apogee
+ delay and main deploy height. This can be done through either a USB
+ connection or over a radio link via a TeleDongle device.
+
+* Replay a flight in real-time. This takes a saved telemetry log or eeprom
+ download and replays it through the user interface so you can relive your
+ favorite rocket flights.
+
+* Reprogram Altus Metrum devices. Using an Altus Metrum device connected via
+ USB, another Altus Metrum device can be reprogrammed using the supplied
+ programming cable between the two devices.
+
+* Export Flight data to a comma-separated-values file. This takes either
+ telemetry or on-board flight data and generates data suitable for use in
+ external applications. All data is exported using standard units so that no
+ device-specific knowledge is needed to handle the data.
+
+* Speak to you during the flight. Instead of spending the flight hunched over
+ your laptop looking at the screen, enjoy the view while the computer tells
+ you what’s going on up there. During ascent, you hear the current flight
+ state and altitude information. During descent, you get azimuth, elevation
+ and range information to try and help you find your rocket in the air. Once
+ on the ground, the direction and distance are reported.
+
+AltosUI provides all of these features on the three target operating systems,
+Linux, Mac OS X (version 10.5 or newer) and Windows (XP, Vista or 7). The bulk
+of the software is written in Java and is built once and tested and delivered
+on all three target platforms. A tiny ‘shim’ library is built on each system
+to provide access to the Altus Metrum devices connected over the USB link.
+
+## Future Plans ##
+
+A number of features are implemented or in process in the sources available
+in our publicly visible repository that are not part of the current stable
+release.
+
+* A Kalman-filter based approach to apogee detection using more than just the
+ baro sensor, so that we can safely control apogee ejection on flights to
+ altitudes beyond the range of our baro sensor alone. Unlike the other items
+ on the list, this will be a significant change to the in-rocket TeleMetrum
+ firmware. It may therefore be a while before this becomes part of a stable
+ firmware release.
+
+* Motor characterization. Because TeleMetrum contains a
+ high-resolution, high-frequency accelerometer, it is possible to
+ take the data from that and compute an accurate thrust curve for
+ the motor.
+
+* Comprehensive PDF and/or HTML -based flight report. Construct a
+ complete report of the flight suitable for publication on the web
+ that includes graphs of the flight and details about motor
+ performance etc.
+
+* Publish flight data to the Altus Metrum web site. This will allow
+ you to share your flight data with others, and let you download
+ flights published by others.
+
+There are any number of additions that could be made to this list; feel free
+to send along ideas that you’ve got. Of course, all of this software is
+licensed under the GNU General Public License, so you can get the source and
+hack on it in the comfort of your own home.
+
+## Platform Specific Notes ##
+
+### Linux ###
+
+If you use [Debian](http://www.debian.org), then a pre-built package for
+32-bit x86 is currently available here:
wget -O - http://altusmetrum.org/apt/altusmetrum.key | apt-key add -
wget -O /etc/apt/sources.list.d/altos.list http://altusmetrum.org/apt/altos.list
apt-get update
apt-get install altos
+If you use some other distribution of Linux, then
+a Linux package of our second-generation Java bits that
+should run on any distribution with a modern Java version is also
+available. Unlike the Debian pacakge, which depends on various libraries
+already part of the Debian distribution, this package includes a "fat" jar
+file with all of the Java libraries that aren't part of the basic Java runtime
+environment included, so it should "just work" on any system with
+Java 6. Development and testing is done with OpenJDK 6, but current
+downloads from [java.com](http://java.com) should be fine too.
+
+If you'd rather build from source, our source tree includes documentation on
+how to build packages for various
+Linux systems such as [Arch Linux](http://www.archlinux.org), and the
+debian/ directory contains all the control
+files for building the Debian packages on other architectures or derivatives
+such as [Ubuntu](http://ubuntu.com).
+
Bdale has also created a theme for
[GDM](http://projects.gnome.org/gdm/) that he uses on his primary notebook,
and the
ground station use. It includes a photo of a drag-race between
nearly-identical rockets
built by Keith and Bdale, that was the first time either of us gave TeleMetrum
-complete control of a rocket flight without some other backup! This theme is
-available in the same repository, to install it just install either gdm or
-slim (both already available in Debian), and then do:
-
- apt-get install altusmetrum-themes
-
-
+complete control of a rocket flight without some other backup! See the themes/
+directory in the source tree (the themes are included in the Debian package).
+
+### Mac ###
+
+A Mac OS X package that is compatible with versions 10.5 "Leopard" and
+later (including 10.6 "Snow Leopard") is available. The Mac operating
+system includes Java, and all Altus Metrum products show up as simple
+USB serial ports, so this should just work with no additional drivers
+or other dependency issues. Older versions of the Mac operating
+system, and even newer versions for PowerPC-based machines, come with
+Java version 5 or older, which is too old for use with Altus Metrum
+software. We know of no way to update the Java version other than
+upgrading to a newer operating system (for Intel based macs) or
+purchasing new hardware (for PowerPC based macs).
+
+### Windows ###
+
+Our Windows package is known to work on at least some flavors of XP, Vista, and
+Windows 7 Enterprise. If you don't already have Java installed,
+download and install a current Java 6 version from [java.com](http://java.com)
+first. Then download our installer and run it. Windows already has
+the required USB serial device driver, and our package should do the right
+things to bind it to our devices, but if you get a complaint about the device
+being unrecognized, try pointing to the copy of the telemetrum.inf file
+included in the package directory manually.