/* 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)
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)) {
/* start logging data */
ao_log_start();
- ao_wakeup(DATA_TO_XDATA(&ao_flight_state));
+ ao_wakeup(&ao_flight_state);
}
break;
case ao_flight_drogue:
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;
}
}
-static __xdata struct ao_task flight_task;
+static struct ao_task flight_task;
void
ao_flight_nano_init(void)