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>
#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;
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]);
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;