#define mid(time) ao_beep_for(AO_BEEP_MID, time)
#define high(time) ao_beep_for(AO_BEEP_HIGH, time)
#else
-#define low(time) ao_led_for(AO_LED_GREEN, time)
-#define mid(time) ao_led_for(AO_LED_RED, time)
-#define high(time) ao_led_for(AO_LED_GREEN|AO_LED_RED, time)
+#ifndef AO_LED_LOW
+#define AO_LED_LOW AO_LED_GREEN
+#endif
+#ifndef AO_LED_MID
+#define AO_LED_MID AO_LED_RED
+#endif
+
+#define low(time) ao_led_for(AO_LED_LOW, time)
+#define mid(time) ao_led_for(AO_LED_MID, time)
+#define high(time) ao_led_for(AO_LED_MID|AO_LED_LOW, time)
#endif
#define pause(time) ao_delay(time)
-static __pdata enum ao_flight_state ao_report_state;
+static enum ao_flight_state ao_report_state;
/*
* Farnsworth spacing
*/
static void
-ao_report_beep(void) __reentrant
+ao_report_beep(void)
{
uint8_t r = flight_reports[ao_flight_state];
uint8_t l = r & 7;
}
static void
-ao_report_digit(uint8_t digit) __reentrant
+ao_report_digit(uint8_t digit)
{
if (!digit) {
mid(AO_MS_TO_TICKS(500));
static void
ao_report_number(int16_t n)
{
- __xdata uint8_t digits[10];
- __pdata uint8_t ndigits, i;
+ uint8_t digits[10];
+ uint8_t ndigits, i;
if (n < 0)
n = 0;
static void
ao_report_battery(void)
{
- __xdata struct ao_data packet;
+ struct ao_data packet;
for (;;) {
ao_data_get(&packet);
if (packet.adc.v_batt != 0)
break;
- ao_sleep(DATA_TO_XDATA(&ao_sample_data));
+ ao_sleep(&ao_sample_data);
}
ao_report_number(ao_battery_decivolt(packet.adc.v_batt));
}
}
static void
-ao_report_continuity(void) __reentrant
+ao_report_continuity(void)
{
uint8_t c;
}
#endif
-void
+static void
ao_report(void)
{
for(;;) {
else
#endif
ao_report_beep();
+#if HAS_SENSOR_ERRORS
+ if (ao_report_state == ao_flight_invalid && ao_sensor_errors)
+ ao_report_number(ao_sensor_errors);
+#endif
+
if (ao_report_state == ao_flight_landed) {
ao_report_altitude();
#if HAS_FLIGHT
}
#endif
while (ao_report_state == ao_flight_state)
- ao_sleep(DATA_TO_XDATA(&ao_flight_state));
+ ao_sleep(&ao_flight_state);
}
}
-static __xdata struct ao_task ao_report_task;
+static struct ao_task ao_report_task;
void
ao_report_init(void)