X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=ao-tools%2Fao-eeprom%2Fao-eeprom.c;h=1f367d9332265be4f4f9941afbe4b3e76ee87def;hb=611ef4497b97bcf5239d6bc2ee13eeba9efd1503;hp=90055d783160a4aa1517bc7c3881decfc97dd6f7;hpb=0385d7d68c51e05f5b555749ccc20e3c7c202370;p=fw%2Faltos diff --git a/ao-tools/ao-eeprom/ao-eeprom.c b/ao-tools/ao-eeprom/ao-eeprom.c index 90055d78..1f367d93 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; @@ -353,7 +355,6 @@ main (int argc, char **argv) break; case AO_LOG_FORMAT_TELEMEGA_4: len = 32; - break; max_adc= 4095; adc_ref = 3.3; batt_r1 = 5600; @@ -361,6 +362,16 @@ main (int argc, char **argv) sense_r1 = 100e3; sense_r2 = 27e3; break; + case AO_LOG_FORMAT_EASYMOTOR: + len = 16; + max_adc = 32767; + adc_ref = 3.3; + pressure_sensor = 1600.0; + batt_r1 = 5600; + batt_r2 = 10000; + sense_r1 = 5600; + sense_r2 = 10000; + break; } if (arg_len) len = arg_len; @@ -385,6 +396,7 @@ main (int argc, char **argv) struct ao_log_metrum *log_metrum; struct ao_log_gps *log_gps; struct ao_log_firetwo *log_firetwo; + struct ao_log_motor *log_motor; if (!csum && !ao_csum_valid(&eeprom->data[pos], len)) { if (verbose) @@ -412,11 +424,14 @@ main (int argc, char **argv) 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, @@ -513,10 +528,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, @@ -542,11 +559,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: @@ -619,7 +638,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); @@ -674,8 +694,72 @@ main (int argc, char **argv) break; } break; + case AO_LOG_FORMAT_EASYMOTOR: + log_motor = (struct ao_log_motor *) &eeprom->data[pos]; + switch (log_motor->type) { + case AO_LOG_FLIGHT: + printf(" serial %5u flight %5u ground_accel %6d", + eeprom->serial_number, + log_motor->u.flight.flight, + log_motor->u.flight.ground_accel); + printf(" along %6d aross %6d through %6d", + log_motor->u.flight.ground_accel_along, + log_motor->u.flight.ground_accel_across, + log_motor->u.flight.ground_accel_through); + ao_volts("ground pressure", + log_motor->u.flight.ground_motor_pressure, + max_adc, adc_ref, + sense_r1, sense_r2); + break; + case AO_LOG_STATE: + ao_state(log_motor->u.state.state, + log_motor->u.state.reason); + break; + case AO_LOG_SENSOR: + ao_volts("pressure", + log_motor->u.sensor.pressure, + max_adc, adc_ref, + sense_r1, sense_r2); + ao_volts("v_batt", + log_motor->u.sensor.v_batt, + max_adc, + adc_ref, batt_r1, batt_r2); + printf(" accel %6d", + log_motor->u.sensor.accel); + printf(" along %6d aross %6d through %6d", + log_motor->u.sensor.accel_along, + log_motor->u.sensor.accel_across, + log_motor->u.sensor.accel_through); + break; + } + break; case AO_LOG_FORMAT_DETHERM: break; + case AO_LOG_FORMAT_EASYMOTOR: + log_motor = (struct ao_log_motor *) &eeprom->data[pos]; + switch (log_motor->type) { + case AO_LOG_FLIGHT: + printf(" serial %5u flight %5u", + eeprom->serial_number, + log_motor->u.flight.flight); + break; + case AO_LOG_STATE: + ao_state(log_motor->u.state.state, + log_motor->u.state.reason); + break; + case AO_LOG_SENSOR: + ao_pressure(log_motor->u.sensor.pressure, + max_adc, adc_ref, + sense_r1, sense_r2, + pressure_sensor); + ao_volts("v_batt", + log_motor->u.sensor.v_batt, + max_adc, + adc_ref, + batt_r1, batt_r2); + break; + } + break; } } printf("\n");