altos: Perform time comparisons using 16-bit arithmetic to handle wrap
[fw/altos] / src / kernel / ao_flight.c
index 251dbc02a7f35eaa7994c1541af5be3800205f84..b0d911ed7f2663ac5b820cc0146d4944da9d2d85 100644 (file)
@@ -3,7 +3,8 @@
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -130,7 +131,7 @@ ao_flight(void)
                        {
                                /* Set pad mode - we can fly! */
                                ao_flight_state = ao_flight_pad;
-#if HAS_USB && !HAS_FLIGHT_DEBUG && !HAS_SAMPLE_PROFILE
+#if HAS_USB && !HAS_FLIGHT_DEBUG && !HAS_SAMPLE_PROFILE && !DEBUG
                                /* Disable the USB controller in flight mode
                                 * to save power
                                 */
@@ -268,7 +269,7 @@ ao_flight(void)
                         * number of seconds.
                         */
                        if (ao_config.apogee_lockout) {
-                               if ((ao_sample_tick - ao_boost_tick) <
+                               if ((int16_t) (ao_sample_tick - ao_boost_tick) <
                                    AO_SEC_TO_TICKS(ao_config.apogee_lockout))
                                        break;
                        }
@@ -370,8 +371,10 @@ ao_flight(void)
                                {
                                        ao_flight_state = ao_flight_landed;
 
+#if HAS_ADC
                                        /* turn off the ADC capture */
                                        ao_timer_set_adc_interval(0);
+#endif
 
                                        ao_wakeup(DATA_TO_XDATA(&ao_flight_state));
                                }