Add initial teleterra implementation.
[fw/altos] / src / ao_terraui.c
1 /*
2  * Copyright © 2010 Keith Packard <keithp@keithp.com>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 2 of the License.
7  *
8  * This program is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11  * General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License along
14  * with this program; if not, write to the Free Software Foundation, Inc.,
15  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
16  */
17
18 #include "ao.h"
19
20 static __code uint8_t ready_beeps[] = {
21         AO_BEEP_g,      AO_MS_TO_TICKS(100),
22         AO_BEEP_bb,     AO_MS_TO_TICKS(100),
23         AO_BEEP_dd,     AO_MS_TO_TICKS(100),
24         AO_BEEP_gg,     AO_MS_TO_TICKS(200),
25         AO_BEEP_dd,     AO_MS_TO_TICKS(100),
26         AO_BEEP_gg,     AO_MS_TO_TICKS(400),
27 };
28
29 #define NUM_READY       (sizeof(ready_beeps) / 2)
30
31 __xdata uint8_t ao_terraui_wakeup;
32
33 void
34 ao_terraui(void)
35 {
36         uint8_t i;
37
38         for (i = 0; i < sizeof(ready_beeps); i += 2)
39                 ao_beep_for(ready_beeps[i], ready_beeps[i+1]);
40         for (;;)
41                 ao_sleep(&ao_terraui_wakeup);
42 }
43
44 static __xdata struct ao_task   terraui_task;
45
46 void
47 ao_terraui_init(void)
48 {
49         ao_add_task(&terraui_task, ao_terraui, "terraui");
50 }