summaryrefslogtreecommitdiff
path: root/ao_test.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2009-04-12 21:33:55 -0700
committerKeith Packard <keithp@keithp.com>2009-04-12 21:33:55 -0700
commit55402ba3e87fd699c51079843309f1f0d1534724 (patch)
tree87b0278d3fbb9ba6e70b34280a8da5733b6e9c91 /ao_test.c
parent3d3f849c9af9028f667cef4afedc0798d39a9efc (diff)
Make test more complicated
Diffstat (limited to 'ao_test.c')
-rw-r--r--ao_test.c42
1 files changed, 34 insertions, 8 deletions
diff --git a/ao_test.c b/ao_test.c
index 8852308e..553e5f6d 100644
--- a/ao_test.c
+++ b/ao_test.c
@@ -18,20 +18,44 @@
#include "ao.h"
-struct ao_task __xdata blink_task;
+struct ao_task __xdata blink_0_task;
+struct ao_task __xdata blink_1_task;
+struct ao_task __xdata wakeup_task;
void delay(int n) __reentrant
{
- while (n--)
- ao_yield();
+ uint8_t j = 0;
+ while (--n)
+ while (--j)
+ ao_yield();
+}
+
+static __xdata uint8_t blink_chan;
+
+void
+blink_0(void)
+{
+ for (;;) {
+ P1 ^= 1;
+ ao_sleep(&blink_chan);
+ }
}
void
-blink(void)
+blink_1(void)
{
for (;;) {
P1 ^= 2;
- delay(100);
+ delay(20);
+ }
+}
+
+void
+wakeup(void)
+{
+ for (;;) {
+ delay(10);
+ ao_wakeup(&blink_chan);
}
}
@@ -39,9 +63,11 @@ void
main(void)
{
CLKCON = 0;
- /* Set p1_1 to output */
- P1DIR = 0x02;
+ /* Set p1_1 and p1_0 to output */
+ P1DIR = 0x03;
- ao_add_task(&blink_task, blink);
+ ao_add_task(&blink_0_task, blink_0);
+ ao_add_task(&blink_1_task, blink_1);
+ ao_add_task(&wakeup_task, wakeup);
ao_start_scheduler();
}