summaryrefslogtreecommitdiff
path: root/src/ao.h
Commit message (Collapse)AuthorAge
* altos, altosui: Add igniter mode (dual, apogee, main)split-telemetryKeith Packard2011-07-17
| | | | | | This provides for redundant charges for either apogee or main. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch flash drivers __xdata to __pdataKeith Packard2011-07-06
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch ao_flight and ao_flight_nano __xdata to __pdataKeith Packard2011-07-06
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: switch ao_cmd __xdata to __pdataKeith Packard2011-07-06
| | | | | | Saves code space Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch const for __code in struct ao_cmdsKeith Packard2011-07-06
| | | | | | This saves quite a bit of code space when accessing these values. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch ao_stdio.c __data to __pdataKeith Packard2011-07-06
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch ao_sample.c __xdata to __pdataKeith Packard2011-07-06
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch ao_log.c and ao_log_big.c __xdata to __pdataKeith Packard2011-07-06
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch ao_gps_skytraq and ao_gps_sirf __xdata to __pdataKeith Packard2011-07-06
| | | | Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Adapt to changes in telemetry Configuration packetKeith Packard2011-07-05
| | | | | | Apogee delay added. flight_log_max changed to two bytes (in kB now). Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Complete new telemetry switchoverKeith Packard2011-07-04
| | | | | | | | | | | | | | This involved rewriting the GPS code to use the telemetry structures directly so that a memcpy could be used to transfer the data to the telemetry packets, saving a bunch of code space, along with fixing up the gps testing programs to deal with the structure changes. In addition, the teledongle code needed to have the monitoring code split into separate radio receiver and USB writer threads as the packets are now back-to-back, and hence come too fast to wait for the USB data to be sent to the host after each one. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add split telemetry codeKeith Packard2011-07-04
| | | | | | | This sends every packet every time, which isn't correct, but should be useful for testing. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Start adding new telemetry frame definitionsKeith Packard2011-06-27
| | | | | | | These use the initial 24 bytes per frame plan, which will probably get changed to 32 bytes per frame. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add arbitrary telemetry packet monitoringKeith Packard2011-06-27
| | | | | | | This adds the ability to monitor arbitrary telemetry packets (up to 128 bytes), moving the telemetry data parsing up to the host. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Rename telemetry to telemetry_origKeith Packard2011-06-27
| | | | | | | This makes room to create a new multi-packet telemetry format without changing anything yet. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Hook up the P1 ISR for TeleBT v0.1 bt_link lineKeith Packard2011-05-06
| | | | | | Otherwise, we're heading off into the weeds... Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Solidify BT connectionsKeith Packard2011-04-19
| | | | | | | | | Use delays while sending commands to BT module. Don't use BT for stdio until the module is initialized. Add \r to name setting command Don't require 'connected' signal for command input. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Use PIO(6) on BTM to monitor BT connection. Fix BTM init.Keith Packard2011-04-07
| | | | | | | | PIo(6) appears to be an active-low indication of the Bluetooth connection status. Hook this up using an interrupt to track the link state instead of using in-band status messages. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make cmd echo per-connection instead of globalKeith Packard2011-04-01
| | | | | | | Allow different connections to use different echo values, permitting the packet link to turn off echo while the USB link still has it on. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make ao_serial_drain publicKeith Packard2011-04-01
| | | | | | Allow external code to discard serial input Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Provide for a pre-filter on commandsKeith Packard2011-04-01
| | | | | | | This allows for external code to see each command line before it is processed and potentially skip it. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: expose set of available stdio valuesKeith Packard2011-04-01
| | | | | | | This lets external code manipulate which connection to communicate over. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add initial TeleBT codeKeith Packard2011-03-31
| | | | | | | Prototyping with a TeleMetrum v0.1 board and a serial link to a bluetooth module. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Create custom nano flight codeKeith Packard2011-03-28
| | | | | | | No igniters, just 'pad/drogue/landed' modes (where 'drogue' == 'flying'). A constant 1Hz telemetry and RDF rate. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Split up flight code into separate flight/sample/kalman bitsKeith Packard2011-03-28
| | | | | | | | | | | | | | | The flight code mashed together data processing, filtering and actual flight managament into one giant pile. Split things up so that we have: ao_sample.c: Sensor data processing. Reads the ring, handles calibration ao_kalman.c: Filter the data to track the accel/speed/height values ao_flight.c: Flight state management, specific to rocketry. The plan is to re-use ao_sample.c and ao_kalman.c for hardware not specifically designed for rocketry, like TeleNano. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Switch telemetrum over to kalman filterKeith Packard2011-03-22
| | | | | | | | | | | | This changes the full telemetry stream to include kalman data instead of the old ad-hoc flight data. It's compatible in that the packet sizes are the same so teledongle can receive either and figure out which it has received. A few plotting and testing tools are added to make validating the new code easier. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: New telemetry report format (version 4). Supports tiny telemetry.Keith Packard2011-03-19
| | | | | | | | | | | This completely replaces the version 3 format with a much simpler and easier to parse scheme. It's described in detail in ao_telem.h, but the basic idea is that the whole line is split into name/value pairs, separated by whitespace. Every name is unique, and the values are either strings or integers. No extraneous formatting or units are provided. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Split out tiny telemetry from full telemetryKeith Packard2011-03-19
| | | | | | | | | | | | | | | The TeleMini and TeleNano boards do not have either GPS or accelermeters, and they also run the kalman filter which produces standard unit measurements for the flight height/speed/accel values. This makes the telemetry significantly different. ao_telemetry_tiny.c sends the required data. Note that TeleNano sends the same telemetry as telemini at this point; there are a couple of values which are not useful, but the overhead of sending them is small enough that the hassle of having three telemetry formats seemed excessive. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make telemetry interval more consistentKeith Packard2011-03-19
| | | | | | | | | | | | | | | Instead of using a delay between telemetry packets, use a telemetry period and compute an appropriate delay each time. This requires changing the ascent telemetry from a 50ms delay to a 100ms interval, to provide a regular 10 packets-per-second rate. Before, we counted on the telemetry packet taking about 50ms to send so that we would receive about 10 per second. This also eliminates delays during descent for RDF tones -- those will get transmitted in the interval between telemetry packets without interrupting the spacing of those packets. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Configure packet size from send/recv parameters.Keith Packard2011-03-19
| | | | | | | | | | Instead of setting the packet size at configuration time, use the provided packet size to the send/recv functions to configure the radio. This eliminates many configuration calls, leaving us with 'RDF' mode and 'packet' mode, the latter working for telemetry and the bi-directional link. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Don't init packet slave on TD. Make slave start optionalKeith Packard2011-03-19
| | | | | | | | | | | Oops. TeleDongle was starting the packet slave code, which kinda wrecked its ability to receive telemetry packets. This patch simply removes the packet slave code from teledongle as it cannot be used (yet), it also makes the packet slave code initialization take a parameter which controls whether to start that by default; in the future, perhaps TeleDongle will gain a command to start packet slave mode. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Write height values to log for nano/miniKeith Packard2011-03-18
| | | | | | This is a lot more useful than the old filtered pressure data. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add tiny logging for TeleMini/TeleNanoKeith Packard2011-03-17
| | | | | | | | | | This splits the logging code into management of the log space within storage and separate code to actually write suitable log entries. A new log writing module, ao_log_tiny, is added which writes only altimeter data at a fairly low data rate for devices using on-chip storage. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Make serial, usb, beeper and accelerometer optional componentsKeith Packard2011-03-16
| | | | | | | Not all boards will have these, so fix places that use them to deal with that. Signed-off-by: Keith Packard <keithp@keithp.com>
* src/ao_cmd: Shave off bytes from doc stringsAnthony Towns2011-03-07
| | | | | | Switch to using { func, "X args\0Desc" } to specify command, saving a char field by looking at help[0] instead, and reduce help length by doing alignment with printf instead of hardcoded spaces.
* ao_radio: generalise setup of packet sizeAnthony Towns2011-02-18
|
* altos: Sample the accelerometer reference voltage on v1.1 boardsKeith Packard2011-01-16
| | | | | | | This places the 5v reference samples in an array parallel to the basic ADC values. It doesn't do anything with the values, just stores them. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Ensure flight code gets first crack at new ADC dataKeith Packard2011-01-16
| | | | | | | | Instead of having everyone wait on the raw ADC ring, have the flight code wait on that and have everyone else wait for the flight code to finish looking at the data and move its pointer forwards. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: TELEMETRY PROTOCOL CHANGE. Switch to 16-bit serial numbers.Keith Packard2011-01-16
| | | | | | | | | | What a terrible mistake! The flight computer serial numbers were recorded in only 8 bits, so serial numbers > 255 would get truncated. There's really no fix other than bumping the field to 16 bits and reflashing every TM and TD on the planet. Very unfortunate. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Check for full log and complainKeith Packard2011-01-07
| | | | | | | Reports special tone along with the continuity checks. Reports flight 0 in telemetry. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: support storage of multiple flights.Keith Packard2011-01-07
| | | | | | This adds the logging support for dealing with multiple flights Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Add configuration parameter for maximum flight log sizeKeith Packard2011-01-07
| | | | | | | This parameter will permit available storage to be split into multiple separate flight logs. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Move common storage code to ao_storage.c. Add M25P80 driverKeith Packard2011-01-06
| | | | | | | This reworks the storage API so that you erase blocks and then store data to them so that the M25P80 driver will work. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Require manual flight erasing.Keith Packard2011-01-06
| | | | | | This supports flash chips that require larger erase blocks. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Simplify storage APIKeith Packard2011-01-06
| | | | | | | This removes the config-specific APIs and exposes global variables for the available storage space, block size and config storage location. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Split out SPI driver.Keith Packard2010-12-22
| | | | | | | | For TM with the companion connector, the SPI bus will be shared among multiple devices. Split out the existing SPI code into a common driver, with the SPI bus protected by a mutex. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: eliminate ao_wake_taskKeith Packard2010-12-22
| | | | | | | Waking up a task waiting on some random object is a bad idea. Fix the waiters to look for suitable signalling. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: clean up radio abort paths. Share radio code.Keith Packard2010-12-22
| | | | | | | | | | | | | Instead of aborting the DMA and radio operation and expecting that to be handled reasonably by the radio receiving task, rewrite things so that the abort function just wakes the receiving task while that terminates the DMA and cleans up the radio. This eliminates all kinds of nasty bugs dealing with radio abort smashing the radio registers at the wrong time, or interrupting a radio transmission. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: Bounds check Skytraq GPS tracking data arrayKeith Packard2010-09-01
| | | | | | | | | | | | | Missing GPS serial data could cause the tracking array reset to get skipped, causing the array to be overrun, smashing critical data beyond the array. This was detected using the 'altosui' flash command to program a device from TM. Hitting the USB that hard caused TM to crash with a mutex error (3 beeps) after the ao_gps_task structure was overwritten with zeros. Signed-off-by: Keith Packard <keithp@keithp.com>
* altos: prepare for sdcc 2.9.1Keith Packard2010-08-27
| | | | | | | A few minor language changes -- non-standard keywords are now prefixed with __, such as 'at', 'interrupt', 'naked'. Signed-off-by: Keith Packard <keithp@keithp.com>