altos: Add generic LED driver.
[fw/altos] / src / stm32f4-disco / ao_disco.c
index efbed947a1d4c54267fcbfad8282a5807ddb4435..c6cdbd234d9c61cf2382e1f494e8c89216c8580b 100644 (file)
 
 #include <ao.h>
 
-void main(void)
+static struct ao_task red_task;
+static struct ao_task green_task;
+
+static void
+red(void)
 {
-       float           x;
-       int             r = 1;
-       int             g = 0;
+       for (;;) {
+               ao_led_toggle(LED_RED);
+               ao_delay(AO_MS_TO_TICKS(500));
+       }
+}
 
-       ao_clock_init();
+static void
+green(void)
+{
+       for (;;) {
+               ao_led_toggle(LED_GREEN);
+               ao_delay(AO_MS_TO_TICKS(450));
+       }
+}
 
+void main(void)
+{
+       ao_clock_init();
        ao_timer_init();
+       ao_led_init();
+       ao_task_init();
 
-       ao_enable_output(LED_GREEN_PORT, LED_GREEN_PIN, 0);
-       ao_enable_output(LED_RED_PORT, LED_RED_PIN, 1);
-       for (;;) {
-               ao_gpio_set(LED_GREEN_PORT, LED_GREEN_PIN, g);
-               ao_gpio_set(LED_RED_PORT, LED_RED_PIN, r);
-               g ^= 1;
-               r ^= 1;
-               for (x = 0.0f; x < 100000.0f; x = x + 0.1f)
-                       ao_arch_nop();
-       }
+       ao_add_task(&red_task, red, "red");
+       ao_add_task(&green_task, green, "green");
+       ao_start_scheduler();
 }