summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-01-15 16:25:10 -0800
committerKeith Packard <keithp@keithp.com>2011-01-16 14:32:47 -0800
commit47ee4597e55749e8f66f61a585ea32776979bf80 (patch)
treee6ab8a9500a19109cf9f8e554ae39ee5167ee4e1
parentb22ba359a02297e39a446cbd5ef51e63b795624a (diff)
altos: TELEMETRY PROTOCOL CHANGE. Switch to 16-bit serial numbers.
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>
-rw-r--r--src/ao.h2
-rw-r--r--src/ao_monitor.c4
-rw-r--r--src/ao_telemetry.c2
3 files changed, 4 insertions, 4 deletions
diff --git a/src/ao.h b/src/ao.h
index 37a39a79..5721c344 100644
--- a/src/ao.h
+++ b/src/ao.h
@@ -856,7 +856,7 @@ ao_gps_report_init(void);
#define AO_TELEMETRY_VERSION 3
struct ao_telemetry {
- uint8_t addr;
+ uint16_t serial;
uint16_t flight;
uint8_t flight_state;
int16_t flight_accel;
diff --git a/src/ao_monitor.c b/src/ao_monitor.c
index 1e7f5102..4ba3da6d 100644
--- a/src/ao_monitor.c
+++ b/src/ao_monitor.c
@@ -41,10 +41,10 @@ ao_monitor(void)
if (state > ao_flight_invalid)
state = ao_flight_invalid;
if (recv.status & PKT_APPEND_STATUS_1_CRC_OK) {
- printf("VERSION %d CALL %s SERIAL %3d FLIGHT %5u RSSI %4d STATUS %02x STATE %7s ",
+ printf("VERSION %d CALL %s SERIAL %d FLIGHT %5u RSSI %4d STATUS %02x STATE %7s ",
AO_TELEMETRY_VERSION,
callsign,
- recv.telemetry.addr,
+ recv.telemetry.serial,
recv.telemetry.flight,
rssi, recv.status,
ao_state_names[state]);
diff --git a/src/ao_telemetry.c b/src/ao_telemetry.c
index 22ab1d67..7aad929f 100644
--- a/src/ao_telemetry.c
+++ b/src/ao_telemetry.c
@@ -33,7 +33,7 @@ ao_telemetry(void)
while (!ao_flight_number)
ao_sleep(&ao_flight_number);
memcpy(telemetry.callsign, ao_config.callsign, AO_MAX_CALLSIGN);
- telemetry.addr = ao_serial_number;
+ telemetry.serial = ao_serial_number;
telemetry.flight = ao_log_full() ? 0 : ao_flight_number;
telemetry.accel_plus_g = ao_config.accel_plus_g;
telemetry.accel_minus_g = ao_config.accel_minus_g;