void
ao_led_set(uint8_t colors);
+/* Toggle the specified LEDs */
+void
+ao_led_toggle(uint8_t colors);
+
/* Turn on the specified LEDs for the indicated interval */
void
ao_led_for(uint8_t colors, uint16_t ticks) __reentrant;
/* Initialize the LEDs */
void
-ao_led_init(void);
+ao_led_init(uint8_t enable);
/*
* ao_usb.c
ao_monitor(void);
void
-ao_monitor_init(void);
+ao_monitor_init(uint8_t led);
/*
* ao_stdio.c
#include "ao.h"
+#define AO_LED_ALL (AO_LED_GREEN|AO_LED_RED)
+
+__pdata uint8_t ao_led_enable;
+
void
ao_led_on(uint8_t colors)
{
- P1 |= colors;
+ P1 |= (colors & ao_led_enable);
}
void
ao_led_off(uint8_t colors)
{
- P1 &= ~colors;
+ P1 &= ~(colors & ao_led_enable);
}
void
ao_led_set(uint8_t colors)
{
- P1 = (P1 & ~3) | colors;
+ P1 = (P1 & ~(ao_led_enable)) | (colors & ao_led_enable);
+}
+
+void
+ao_led_toggle(uint8_t colors)
+{
+ P1 ^= (colors & ao_led_enable);
}
void
}
void
-ao_led_init(void)
+ao_led_init(uint8_t enable)
{
- P1SEL &= ~3;
- P1 &= ~3;
- P1DIR |= 3;
+ ao_led_enable = enable;
+ P1SEL &= ~enable;
+ P1 &= ~enable;
+ P1DIR |= enable;
}
};
__xdata uint8_t ao_monitoring;
+__pdata uint8_t ao_monitor_led;
void
ao_monitor(void)
recv.telemetry.adc.sense_m);
ao_gps_print(&recv.telemetry.gps);
ao_usb_flush();
- ao_led_for(AO_LED_GREEN, AO_MS_TO_TICKS(10));
+ ao_led_toggle(ao_monitor_led);
}
}
};
void
-ao_monitor_init(void)
+ao_monitor_init(uint8_t monitor_led)
{
+ ao_monitor_led = monitor_led;
ao_monitoring = 0;
ao_cmd_register(&ao_monitor_cmds[0]);
ao_add_task(&ao_monitor_task, ao_monitor, "monitor");
;
/* Turn on the LED until the system is stable */
- ao_led_init();
+ ao_led_init(AO_LED_RED|AO_LED_GREEN);
ao_led_on(AO_LED_RED);
ao_timer_init();
ao_cmd_init();
ao_usb_init();
- ao_monitor_init();
+ ao_monitor_init(AO_LED_GREEN);
ao_radio_init();
ao_dbg_init();
ao_start_scheduler();
;
/* Turn on the red LED until the system is stable */
- ao_led_init();
+ ao_led_init(AO_LED_RED|AO_LED_GREEN);
ao_led_on(AO_LED_RED);
ao_timer_init();
ao_gps_init();
ao_telemetry_init();
ao_radio_init();
- ao_monitor_init();
+ ao_monitor_init(AO_LED_GREEN);
ao_igniter_init();
ao_dbg_init();
ao_start_scheduler();
;
/* Turn on the red LED until the system is stable */
- ao_led_init();
+ ao_led_init(AO_LED_RED|AO_LED_GREEN);
ao_led_on(AO_LED_RED);
ao_timer_init();
ao_beep_init();
ao_usb_init();
ao_serial_init();
ao_gps_init();
- ao_monitor_init();
+ ao_monitor_init(AO_LED_GREEN);
ao_radio_init();
ao_dbg_init();
ao_start_scheduler();
;
/* Turn on the LED until the system is stable */
- ao_led_init();
+ ao_led_init(AO_LED_RED);
ao_led_on(AO_LED_RED);
ao_timer_init();
ao_cmd_init();
ao_usb_init();
- ao_monitor_init();
+ ao_monitor_init(AO_LED_RED);
ao_radio_init();
ao_dbg_init();
/* Bring up the USB link */
- ao_led_on(AO_LED_GREEN);
+ P1DIR |= 1;
+ P1 |= 1;
ao_start_scheduler();
}