X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=ao-tools%2Fao-eeprom%2Fao-eeprom.c;h=e249af9e884d912571c388300adb3b15810dee79;hb=HEAD;hp=780badbed3d0d4a9ee56176690aba18777751303;hpb=083464b52c835c09a66c06a87246fcd138748a5d;p=fw%2Faltos diff --git a/ao-tools/ao-eeprom/ao-eeprom.c b/ao-tools/ao-eeprom/ao-eeprom.c index 780badbe..8650f38d 100644 --- a/ao-tools/ao-eeprom/ao-eeprom.c +++ b/ao-tools/ao-eeprom/ao-eeprom.c @@ -148,7 +148,7 @@ ao_thrust(int16_t value, int16_t max_adc, double ref, double r1, double r2) } static void -ao_pressure(int16_t value, int16_t max_adc, double ref, double r1, double r2) +ao_pressure(int16_t value, int16_t max_adc, double ref, double r1, double r2, double sensor_range) { printf(" pressure %5d", value); if (r1 && r2 && ref) { @@ -156,7 +156,7 @@ ao_pressure(int16_t value, int16_t max_adc, double ref, double r1, double r2) if (volts < 0.5) volts = 0.5; if (volts > 4.5) volts = 4.5; - double psi = (volts - 0.5) / 4.0 * 2500.0; + double psi = (volts - 0.5) / 4.0 * sensor_range; double pa = psi_to_pa(psi); printf(" %9.3f kPa", pa / 1000.0); } @@ -261,6 +261,7 @@ main (int argc, char **argv) double sense_r1 = 0.0, sense_r2 = 0.0; double batt_r1 = 0.0, batt_r2 = 0.0; double adc_ref = 0.0; + double pressure_sensor = 0.0; int16_t max_adc = 0; switch (eeprom->log_format) { @@ -315,6 +316,7 @@ main (int argc, char **argv) break; case AO_LOG_FORMAT_TELEFIRETWO: len = 32; + pressure_sensor = 2500.0; max_adc = 4095; adc_ref = 3.3; sense_r1 = batt_r1 = 5600; @@ -352,6 +354,8 @@ main (int argc, char **argv) len = 2; break; case AO_LOG_FORMAT_TELEMEGA_4: + case AO_LOG_FORMAT_TELEMEGA_5: + case AO_LOG_FORMAT_TELEMEGA_6: len = 32; max_adc= 4095; adc_ref = 3.3; @@ -364,6 +368,7 @@ main (int argc, char **argv) len = 16; max_adc = 32767; adc_ref = 3.3; + pressure_sensor = 1600.0; batt_r1 = 5600; batt_r2 = 10000; sense_r1 = 5600; @@ -372,6 +377,11 @@ main (int argc, char **argv) } if (arg_len) len = arg_len; + if (len == 0) { + fprintf(stderr, "Unknown eeprom format %d and no specified length\n", + eeprom->log_format); + exit(1); + } if (verbose) printf("config major %d minor %d log format %d total %u len %d\n", eeprom->config.major, @@ -418,14 +428,19 @@ main (int argc, char **argv) case AO_LOG_FORMAT_TELEMEGA_3: case AO_LOG_FORMAT_EASYMEGA_2: case AO_LOG_FORMAT_TELEMEGA_4: + case AO_LOG_FORMAT_TELEMEGA_5: + case AO_LOG_FORMAT_TELEMEGA_6: log_mega = (struct ao_log_mega *) &eeprom->data[pos]; switch (log_mega->type) { case AO_LOG_FLIGHT: - printf(" serial %5u flight %5u ground_accel %6d ground_pres %9u", + printf(" serial %5u flight %5u ground_accel %6d ground_pres %9u kPa %7.1f %7.1f m", eeprom->serial_number, log_mega->u.flight.flight, log_mega->u.flight.ground_accel, - log_mega->u.flight.ground_pres); + log_mega->u.flight.ground_pres, + log_mega->u.flight.ground_pres / 1000.0, + ao_pressure_to_altitude(log_mega->u.flight.ground_pres)); + printf(" along %6d aross %6d through %6d", log_mega->u.flight.ground_accel_along, log_mega->u.flight.ground_accel_across, @@ -522,10 +537,12 @@ main (int argc, char **argv) log_mini = (struct ao_log_mini *) &eeprom->data[pos]; switch (log_mini->type) { case AO_LOG_FLIGHT: - printf(" serial %5u flight %5u ground_pres %9u", + printf(" serial %5u flight %5u ground_pres %9u kPa %7.1f %7.1f m", eeprom->serial_number, log_mini->u.flight.flight, - log_mini->u.flight.ground_pres); + log_mini->u.flight.ground_pres, + log_mini->u.flight.ground_pres / 1000.0, + ao_pressure_to_altitude(log_mini->u.flight.ground_pres)); break; case AO_LOG_STATE: ao_state(log_mini->u.state.state, @@ -551,11 +568,13 @@ main (int argc, char **argv) log_metrum = (struct ao_log_metrum *) &eeprom->data[pos]; switch (log_metrum->type) { case AO_LOG_FLIGHT: - printf(" serial %5u flight %5u ground_accel %6d ground_pres %9u ground_temp %9u", + printf(" serial %5u flight %5u ground_accel %6d ground_pres %9u kPa %7.1f %7.1f m ground_temp %9u", eeprom->serial_number, log_metrum->u.flight.flight, log_metrum->u.flight.ground_accel, log_metrum->u.flight.ground_pres, + log_metrum->u.flight.ground_pres / 1000.0, + ao_pressure_to_altitude(log_metrum->u.flight.ground_pres), log_metrum->u.flight.ground_temp); break; case AO_LOG_SENSOR: @@ -628,7 +647,8 @@ main (int argc, char **argv) case AO_LOG_SENSOR: ao_pressure(log_firetwo->u.sensor.pressure, max_adc, adc_ref, - sense_r1, sense_r2); + sense_r1, sense_r2, + pressure_sensor); ao_thrust(log_firetwo->u.sensor.thrust, max_adc, adc_ref, sense_r1, sense_r2);