diff options
| author | Keith Packard <keithp@keithp.com> | 2013-09-05 22:56:57 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2013-09-05 22:56:57 -0700 | 
| commit | 7314bf807544eecf2fd970e93c752ff15688bb42 (patch) | |
| tree | 8e46c315f65eeb84aae234ae7a0005cedab86d96 | |
| parent | ffdf82445817d1c97699f7de82534420b87d0ea7 (diff) | |
ao-tools/ao-telem: Parse new TM v2 packets
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | ao-tools/ao-telem/ao-telem.c | 20 | ||||
| -rw-r--r-- | ao-tools/lib/cc-telemetry.h | 69 | 
2 files changed, 89 insertions, 0 deletions
| diff --git a/ao-tools/ao-telem/ao-telem.c b/ao-tools/ao-telem/ao-telem.c index d2dae5a7..893e2340 100644 --- a/ao-tools/ao-telem/ao-telem.c +++ b/ao-tools/ao-telem/ao-telem.c @@ -194,6 +194,26 @@ main (int argc, char **argv)  						telem.mega_data.height);  					break; +				case AO_TELEMETRY_METRUM_SENSOR: +					printf ("state %1d accel %5d pres %9d temp %6.2f acceleration %6.2f speed %6.2f height %5d v_batt %5d sense_a %5d sense_m %5d\n", +						telem.metrum_sensor.state, +						telem.metrum_sensor.accel, +						telem.metrum_sensor.pres, +						telem.metrum_sensor.temp / 100.0, +						telem.metrum_sensor.acceleration / 16.0, +						telem.metrum_sensor.speed / 16.0, +						telem.metrum_sensor.height, +						telem.metrum_sensor.v_batt, +						telem.metrum_sensor.sense_a, +						telem.metrum_sensor.sense_m); +					break; +				case AO_TELEMETRY_METRUM_DATA: +					printf ("ground_pres %9d ground_accel %5d accel_plus %5d accel_minus %5d\n", +						telem.metrum_data.ground_pres, +						telem.metrum_data.ground_accel, +						telem.metrum_data.accel_plus_g, +						telem.metrum_data.accel_minus_g); +					break;  				default:  					printf("\n");  				} diff --git a/ao-tools/lib/cc-telemetry.h b/ao-tools/lib/cc-telemetry.h index 9a5be49f..c28aceb8 100644 --- a/ao-tools/lib/cc-telemetry.h +++ b/ao-tools/lib/cc-telemetry.h @@ -201,6 +201,72 @@ struct ao_telemetry_mega_data {  	/* 32 */  }; +#define AO_TELEMETRY_METRUM_SENSOR	0x0A + +struct ao_telemetry_metrum_sensor { +	uint16_t	serial;		/*  0 */ +	uint16_t	tick;		/*  2 */ +	uint8_t		type;		/*  4 */ + +	uint8_t         state;          /*  5 flight state */ +	int16_t		accel;		/*  6 Z axis */ + +	int32_t		pres;		/*  8 Pa * 10 */ +	int16_t		temp;		/* 12 °C * 100 */ + +	int16_t         acceleration;   /* 14 m/s² * 16 */ +	int16_t         speed;          /* 16 m/s * 16 */ +	int16_t         height;         /* 18 m */ + +	int16_t		v_batt;		/* 20 battery voltage */ +	int16_t		sense_a;	/* 22 apogee continuity sense */ +	int16_t		sense_m;	/* 24 main continuity sense */ + +	uint8_t		pad[6];		/* 26 */ +	/* 32 */ +}; +	 +#define AO_TELEMETRY_METRUM_DATA	0x0B + +struct ao_telemetry_metrum_data { +	uint16_t	serial;		/*  0 */ +	uint16_t	tick;		/*  2 */ +	uint8_t		type;		/*  4 */ + +	int32_t		ground_pres;	/* 8 average pres on pad */ +	int16_t		ground_accel;	/* 12 average accel on pad */ +	int16_t		accel_plus_g;	/* 14 accel calibration at +1g */ +	int16_t		accel_minus_g;	/* 16 accel calibration at -1g */ + +	uint8_t		pad[14];	/* 18 */ +	/* 32 */ +}; + +#define AO_TELEMETRY_MINI		0x10 + +struct ao_telemetry_mini { +	uint16_t	serial;		/*  0 */ +	uint16_t	tick;		/*  2 */ +	uint8_t		type;		/*  4 */ + +	uint8_t         state;          /*  5 flight state */ +	int16_t		v_batt;		/*  6 battery voltage */ +	int16_t		sense_a;	/*  8 apogee continuity */ +	int16_t		sense_m;	/* 10 main continuity */ + +	int32_t		pres;		/* 12 Pa * 10 */ +	int16_t		temp;		/* 16 °C * 100 */ + +	int16_t         acceleration;   /* 18 m/s² * 16 */ +	int16_t         speed;          /* 20 m/s * 16 */ +	int16_t         height;         /* 22 m */ + +	int32_t		ground_pres;	/* 24 average pres on pad */ + +	int32_t		pad28;		/* 28 */ +	/* 32 */ +}; +  /* #define AO_SEND_ALL_BARO */  #define AO_TELEMETRY_BARO		0x80 @@ -234,6 +300,9 @@ union ao_telemetry_all {  	struct ao_telemetry_companion		companion;  	struct ao_telemetry_mega_sensor		mega_sensor;  	struct ao_telemetry_mega_data		mega_data; +	struct ao_telemetry_metrum_sensor	metrum_sensor; +	struct ao_telemetry_metrum_data		metrum_data; +	struct ao_telemetry_mini		mini;  	struct ao_telemetry_baro		baro;  }; | 
