summaryrefslogtreecommitdiff
path: root/src/ao_telem.h
blob: 1a8da2918d27a6da805c09e7f68178658e67e7af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/*
 * Copyright © 2011 Keith Packard <keithp@keithp.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; version 2 of the License.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 */

#ifndef _AO_TELEM_H_
#define _AO_TELEM_H_

#define AO_TELEMETRY_VERSION		4

/*
 * Telemetry version 4 and higher format:
 *
 * General header fields
 *
 *	Name		Value
 *
 *	VERSION		Telemetry version number (4 or more). Must be first.
 * 	c		Callsign (string, no spaces allowed)
 *	n		Flight unit serial number (integer)
 * 	f		Flight number (integer)
 *	r		Packet RSSI value (integer)
 * 	s		Flight computer state (string, no spaces allowed)
 *	t		Flight computer clock (integer in centiseconds)
 */

#define AO_TELEM_VERSION	"VERSION"
#define AO_TELEM_CALL		"c"
#define AO_TELEM_SERIAL		"n"
#define AO_TELEM_FLIGHT		"f"
#define AO_TELEM_RSSI		"r"
#define AO_TELEM_STATE		"s"
#define AO_TELEM_TICK		"t"

/*
 * Raw sensor values
 *
 *	Name		Value
 *	r_a		Accelerometer reading (integer)
 *	r_b		Barometer reading (integer)
 *	r_t		Thermometer reading (integer)
 *	r_v		Battery reading (integer)
 *	r_d		Drogue continuity (integer)
 *	r_m		Main continuity (integer)
 */

#define AO_TELEM_RAW_ACCEL	"r_a"
#define AO_TELEM_RAW_BARO	"r_b"
#define AO_TELEM_RAW_THERMO	"r_t"
#define AO_TELEM_RAW_BATT	"r_v"
#define AO_TELEM_RAW_DROGUE	"r_d"
#define AO_TELEM_RAW_MAIN	"r_m"

/*
 * Sensor calibration values
 *
 *	Name		Value
 *	c_a		Ground accelerometer reading (integer)
 *	c_b		Ground barometer reading (integer)
 *	c_p		Accelerometer reading for +1g
 *	c_m		Accelerometer reading for -1g
 */

#define AO_TELEM_CAL_ACCEL_GROUND	"c_a"
#define AO_TELEM_CAL_BARO_GROUND	"c_b"
#define AO_TELEM_CAL_ACCEL_PLUS		"c_p"
#define AO_TELEM_CAL_ACCEL_MINUS	"c_m"

/*
 * Kalman state values
 *
 *	Name		Value
 *	k_h		Height above pad (integer, meters)
 *	k_s		Vertical speeed (integer, m/s * 16)
 *	k_a		Vertical acceleration (integer, m/s² * 16)
 */

#define AO_TELEM_KALMAN_HEIGHT		"k_h"
#define AO_TELEM_KALMAN_SPEED		"k_s"
#define AO_TELEM_KALMAN_ACCEL		"k_a"

/*
 * Ad-hoc flight values
 *
 *	Name		Value
 *	a_a		Acceleration (integer, sensor units)
 *	a_s		Speed (integer, integrated acceleration value)
 *	a_b		Barometer reading (integer, sensor units)
 */

#define AO_TELEM_ADHOC_ACCEL		"a_a"
#define AO_TELEM_ADHOC_SPEED		"a_s"
#define AO_TELEM_ADHOC_BARO		"a_b"

/*
 * GPS values
 *
 *	Name		Value
 *	g		GPS state (string):
 *				l	locked
 *				u	unlocked
 *				e	error (missing or broken)
 *	g_n		Number of sats used in solution
 *	g_ns		Latitude (degrees * 10e7)
 *	g_ew		Longitude (degrees * 10e7)
 *	g_a		Altitude (integer meters)
 *	g_Y		GPS year (integer)
 *	g_M		GPS month (integer - 1-12)
 *	g_D		GPS day (integer - 1-31)
 *	g_h		GPS hour (integer - 0-23)
 *	g_m		GPS minute (integer - 0-59)
 *	g_s		GPS second (integer - 0-59)
 *	g_v		GPS vertical speed (integer, cm/sec)
 *	g_g		GPS horizontal speed (integer, cm/sec)
 *	g_c		GPS course (integer, 0-359)
 *	g_hd		GPS hdop (integer * 10)
 *	g_vd		GPS vdop (integer * 10)
 *	g_he		GPS h error (integer)
 *	g_ve		GPS v error (integer)
 */

#define AO_TELEM_GPS_STATE		"g"
#define AO_TELEM_GPS_STATE_LOCKED	'l'
#define AO_TELEM_GPS_STATE_UNLOCKED	'u'
#define AO_TELEM_GPS_STATE_ERROR	'e'
#define AO_TELEM_GPS_NUM_SAT		"g_n"
#define AO_TELEM_GPS_LATITUDE		"g_ns"
#define AO_TELEM_GPS_LONGITUDE		"g_ew"
#define AO_TELEM_GPS_ALTITUDE		"g_a"
#define AO_TELEM_GPS_YEAR		"g_Y"
#define AO_TELEM_GPS_MONTH		"g_M"
#define AO_TELEM_GPS_DAY		"g_D"
#define AO_TELEM_GPS_HOUR		"g_h"
#define AO_TELEM_GPS_MINUTE		"g_m"
#define AO_TELEM_GPS_SECOND		"g_s"
#define AO_TELEM_GPS_VERTICAL_SPEED	"g_v"
#define AO_TELEM_GPS_HORIZONTAL_SPEED	"g_g"
#define AO_TELEM_GPS_COURSE		"g_c"
#define AO_TELEM_GPS_HDOP		"g_hd"
#define AO_TELEM_GPS_VDOP		"g_vd"
#define AO_TELEM_GPS_HERROR		"g_he"
#define AO_TELEM_GPS_VERROR		"g_ve"

/*
 * GPS satellite values
 *
 *	Name		Value
 *	s_n		Number of satellites reported (integer)
 *	s_v0		Space vehicle ID (integer) for report 0
 *	s_c0		C/N0 number (integer) for report 0
 *	s_v1		Space vehicle ID (integer) for report 1
 *	s_c1		C/N0 number (integer) for report 1
 *	...
 */

#define AO_TELEM_SAT_NUM		"s_n"
#define AO_TELEM_SAT_SVID		"s_v"
#define AO_TELEM_SAT_C_N_0		"s_c"

#endif /* _AO_TELEM_H_ */