first cut at turnon scripts for EasyTimer v2
[fw/altos] / src / kernel / ao_flight_nano.c
index 406d81adc5f1cde7d90763dcecfa3f3059114db1..09e74901f44d6bea33fc42e215e4310cb76daf46 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
 
 /* Main flight thread. */
 
-__pdata enum ao_flight_state   ao_flight_state;        /* current flight state */
-__pdata uint16_t               ao_launch_tick;         /* time of launch detect */
+enum ao_flight_state   ao_flight_state;        /* current flight state */
+AO_TICK_TYPE           ao_launch_tick;         /* time of launch detect */
 
 /*
  * track min/max data over a long interval to detect
  * resting
  */
-__pdata uint16_t               ao_interval_end;
-__pdata alt_t                  ao_interval_min_height;
-__pdata alt_t                  ao_interval_max_height;
+AO_TICK_TYPE           ao_interval_end;
+alt_t                  ao_interval_min_height;
+alt_t                  ao_interval_max_height;
 
-__pdata uint8_t                        ao_flight_force_idle;
+uint8_t                        ao_flight_force_idle;
 
 /* Landing is detected by getting constant readings from both pressure and accelerometer
  * for a fairly long time (AO_INTERVAL_TICKS)
@@ -69,7 +70,7 @@ ao_flight_nano(void)
                        ao_led_off(AO_LED_RED);
 
                        /* wakeup threads due to state change */
-                       ao_wakeup(DATA_TO_XDATA(&ao_flight_state));
+                       ao_wakeup(&ao_flight_state);
                        break;
                case ao_flight_pad:
                        if (ao_height> AO_M_TO_HEIGHT(20)) {
@@ -79,7 +80,7 @@ ao_flight_nano(void)
                                /* start logging data */
                                ao_log_start();
 
-                               ao_wakeup(DATA_TO_XDATA(&ao_flight_state));
+                               ao_wakeup(&ao_flight_state);
                        }
                        break;
                case ao_flight_drogue:
@@ -93,14 +94,14 @@ ao_flight_nano(void)
                        if (ao_height > ao_interval_max_height)
                                ao_interval_max_height = ao_height;
 
-                       if ((int16_t) (ao_sample_tick - ao_interval_end) >= 0) {
+                       if ((AO_TICK_SIGNED) (ao_sample_tick - ao_interval_end) >= 0) {
                                if (ao_interval_max_height - ao_interval_min_height < AO_M_TO_HEIGHT(5))
                                {
                                        ao_flight_state = ao_flight_landed;
 
                                        /* turn off the ADC capture */
                                        ao_timer_set_adc_interval(0);
-                                       ao_wakeup(DATA_TO_XDATA(&ao_flight_state));
+                                       ao_wakeup(&ao_flight_state);
                                }
                                ao_interval_min_height = ao_interval_max_height = ao_height;
                                ao_interval_end = ao_sample_tick + AO_INTERVAL_TICKS;
@@ -110,7 +111,7 @@ ao_flight_nano(void)
        }
 }
 
-static __xdata struct ao_task  flight_task;
+static struct ao_task  flight_task;
 
 void
 ao_flight_nano_init(void)