prepare for interrupt support in the next few days
[my-code/arm.git] / betty / betty.c
1 /*
2  * betty.c - alternative firmware for the betty tv ;)
3  *
4  * author: hackbard@hackdaworld.org
5  *
6  */
7
8 /* includes */
9 #include "betty.h"
10
11 /*
12  * functions
13  */
14
15 #define cc1100_init     spi1_init(8,SPI_MASTER,8)
16
17 void display_string_page(u8 x,u8 p,u8 *s,u8 f,u8 o,u8 sp) {
18
19         while(*(s)) {
20                 if(x==DISPLAY_DIMX) {
21                         p+=1;
22                         x=o;
23                 }
24                 display_font_page(x,p,(u8 *)default_font+(*(s)<<3),f);
25                 x+=sp;
26                 s++;
27         }
28 }
29
30 /*
31  * global variables
32  */
33
34 const char announce[]="betty - live from flash at 0x80000000! ;)\r\n";
35 const char d1_txt[]="betty";
36 const char d2_txt[]="- alphablend -";
37
38 /*
39  * main function
40  */
41
42 int main() {
43
44         /* variables */
45         t_button button;
46         u8 contrast;
47
48         /* system init */
49         pll_init();
50         pin_init();
51         ext_mem_init();
52
53         /* memory mapping - dirty! */
54         if((void *)announce<(void *)FLASH_BANK0)
55                 mmap_init(MEMTYPE_RAM);
56         else
57                 mmap_init(MEMTYPE_EXT);
58         
59         /* uart init */
60         uart0_init();
61
62         /* display init */
63         display_bl_init();
64
65         /* button init */
66         button_init(&button);
67         button_set_retries(&button,100);
68
69         /* flash init */
70         flash_init();
71
72         /*
73          * start it ...
74          */
75
76         /* display init */
77         display_bl_toggle();
78         display_init();
79         contrast=0x38;
80
81         /* pasue again */
82
83         /* announce */
84         uart0_send_string((char *)announce);
85
86         
87         while(1) {
88                 pause(0x0fffff);
89
90                 /* button test! */
91                 if(button_get_event(&button)) {
92                         //uart0_send_string(announce);
93                         switch(button.key[0]) {
94                                 case BUTTON_POWER:
95                                         display_logo((u8 *)default_logo);
96                                         break;
97                                 case BUTTON_DOWN:
98                                         if(contrast>0x00)
99                                                 contrast-=1;
100                                         DISPLAY_SET_CONTRAST(contrast);
101                                         break;
102                                 case BUTTON_UP:
103                                         if(contrast<0x3f)
104                                                 contrast+=1;
105                                         DISPLAY_SET_CONTRAST(contrast);
106                                         break;
107                                 case BUTTON_A:
108                                         display_fill_screen(DISPLAY_FILL_W);
109                                         break;
110                                 case BUTTON_B:
111                                         display_fill_screen(DISPLAY_FILL_LG);
112                                         break;
113                                 case BUTTON_C:
114                                         display_fill_screen(DISPLAY_FILL_DG);
115                                         break;
116                                 case BUTTON_D:
117                                         display_fill_screen(DISPLAY_FILL_B);
118                                         break;
119                                 case BUTTON_1:
120                                         display_rectangle_page(4,2,60,5,DISPLAY_FILL_B,0xff);
121                                         break;
122                                 case BUTTON_2:
123                                         display_rectangle_page(40,5,50,5,DISPLAY_FILL_LG,0x7f);
124                                         break;
125                                 case BUTTON_3:
126                                         break;
127                                 case BUTTON_4:
128                                         display_font_page(42,18,(u8 *)default_font+(0x34<<3),DISPLAY_FILL_B);
129                                         break;
130                                 case BUTTON_5:
131                                         display_font_page(50,18,(u8 *)default_font+(0x35<<3),DISPLAY_FILL_DG);
132                                         break;
133                                 case BUTTON_6:
134                                         display_font_page(58,18,(u8 *)default_font+(0x36<<3),DISPLAY_FILL_W);
135                                         break;
136                                 case BUTTON_7:
137                                         break;
138                                 case BUTTON_8:
139                                         break;
140                                 case BUTTON_BETTY:
141                                         display_string_page(50,13,(u8 *)d1_txt,DISPLAY_FILL_B,0,8);
142                                         break;
143                                 case BUTTON_EXIT:
144                                         display_string_page(10,8,(u8 *)d2_txt,DISPLAY_FILL_B,0,8);
145                                         break;
146                                 default:
147                                         display_clear_screen();
148                                         break;
149                         }
150                 }
151         }
152
153         return 0;
154 }
155