4 * Copyright © 2009 Keith Packard
6 * Permission to use, copy, modify, distribute, and sell this software and its
7 * documentation for any purpose is hereby granted without fee, provided that
8 * the above copyright notice appear in all copies and that both that
9 * copyright notice and this permission notice appear in supporting
10 * documentation, and that the name of Keith Packard not be used in
11 * advertising or publicity pertaining to distribution of the software without
12 * specific, written prior permission. Keith Packard makes no
13 * representations about the suitability of this software for any purpose. It
14 * is provided "as is" without express or implied warranty.
16 * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22 * PERFORMANCE OF THIS SOFTWARE.
27 const char const * const ao_state_names[] = {
28 "startup", "idle", "pad", "boost", "coast",
29 "apogee", "drogue", "main", "landed", "invalid"
35 __xdata struct ao_radio_recv recv;
40 state = recv.telemetry.flight_state;
41 if (state > ao_flight_invalid)
42 state = ao_flight_invalid;
43 printf ("SERIAL %3d RSSI %3d STATUS %02x STATE %s ",
44 recv.telemetry.addr, recv.rssi, recv.status,
45 ao_state_names[state]);
46 if (!(recv.status & PKT_APPEND_STATUS_1_CRC_OK))
47 printf("CRC INVALID ");
48 printf("%5u a: %d p: %d t: %d v: %d d: %d m: %d\n",
49 recv.telemetry.adc.tick,
50 recv.telemetry.adc.accel,
51 recv.telemetry.adc.pres,
52 recv.telemetry.adc.temp,
53 recv.telemetry.adc.v_batt,
54 recv.telemetry.adc.sense_d,
55 recv.telemetry.adc.sense_m);
56 ao_gps_print(&recv.telemetry.gps);
61 __xdata struct ao_task ao_monitor_task;
66 ao_add_task(&ao_monitor_task, ao_monitor, "monitor");