X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fkernel%2Fao_flight.c;h=10f6eb204a5da75a8ed0698b9c740c6af1adbf30;hb=9cc485e9454af7c09c0b35e7ae4d1c718158a38e;hp=e895904c720bc91645ac6c8a31474ba9af8b0f0a;hpb=ab10b26a8299670db20618551fcc6a1a09bd34e8;p=fw%2Faltos diff --git a/src/kernel/ao_flight.c b/src/kernel/ao_flight.c index e895904c..10f6eb20 100644 --- a/src/kernel/ao_flight.c +++ b/src/kernel/ao_flight.c @@ -102,6 +102,15 @@ uint8_t ao_flight_force_idle; #define abs(a) ((a) < 0 ? -(a) : (a)) +#if 0 +static bool accel_plus_g_failed; +static bool accel_minus_g_failed; +static bool accel_plus_failed; +static bool accel_minus_failed; + +static char *btos(bool x) { return x? "true" : "false"; } +#endif + void ao_flight(void) { @@ -127,14 +136,24 @@ ao_flight(void) #if HAS_ACCEL if (ao_config.accel_plus_g == 0 || ao_config.accel_minus_g == 0 || - ao_ground_accel < ao_config.accel_plus_g - ACCEL_NOSE_UP || - ao_ground_accel > ao_config.accel_minus_g + ACCEL_NOSE_UP + ao_ground_accel < (accel_t) ao_config.accel_plus_g - ACCEL_NOSE_UP || + ao_ground_accel > (accel_t) ao_config.accel_minus_g + ACCEL_NOSE_UP #if HAS_BARO || ao_ground_height < -1000 || ao_ground_height > 7000 #endif ) { +#if 0 + if (ao_config.accel_plus_g == 0) + accel_plus_g_failed = true; + if (ao_config.accel_minus_g == 0) + accel_minus_g_failed = true; + if (ao_ground_accel < (accel_t) ao_config.accel_plus_g - ACCEL_NOSE_UP) + accel_plus_failed = true; + if (ao_ground_accel > (accel_t) ao_config.accel_minus_g + ACCEL_NOSE_UP) + accel_minus_failed = true; +#endif /* Detected an accel value outside -1.5g to 1.5g * (or uncalibrated values), so we go into invalid mode */ @@ -202,8 +221,19 @@ ao_flight(void) break; #if 0 - case ao_flight_idle: case ao_flight_invalid: + printf("+g? %s -g? %s +? %s -? %s +g %d -g %d ga %d +g-NU %d -g+NU %d\n", + btos(accel_plus_g_failed), + btos(accel_minus_g_failed), + btos(accel_plus_failed), + btos(accel_minus_failed), + ao_config.accel_plus_g, + ao_config.accel_minus_g, + ao_ground_accel, + ao_config.accel_plus_g - ACCEL_NOSE_UP, + ao_config.accel_minus_g + ACCEL_NOSE_UP); + break; + case ao_flight_idle: printf("+g %d ga %d sa %d accel %ld speed %ld\n", ao_config.accel_plus_g, ao_ground_accel, ao_sample_accel, ao_accel, ao_speed); break; #endif @@ -225,9 +255,7 @@ ao_flight(void) if (ao_height > AO_M_TO_HEIGHT(20) #if HAS_ACCEL || (ao_accel > AO_MSS_TO_ACCEL(20) -#if HAS_BARO && ao_speed > AO_MS_TO_SPEED(5)) -#endif #endif ) {