093232bcaeb1048cbaf3ab63b9ec61c2dc1f50d7
[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         t_button button;
45         u8 contrast;
46
47         /* system init */
48         pll_init();
49         pin_init();
50         ext_mem_init();
51         
52         /* uart init */
53         uart0_init();
54
55         /* display init */
56         display_bl_init();
57
58         /* button init */
59         button_init(&button);
60         button_set_retries(&button,100);
61
62         /* flash init */
63         flash_init();
64
65         /*
66          * start it ...
67          */
68
69         /* display init */
70         display_bl_toggle();
71         display_init();
72         contrast=0x38;
73
74         /* pasue again */
75
76         /* announce */
77         uart0_send_string((char *)announce);
78
79         
80         while(1) {
81                 pause(0x0fffff);
82
83                 /* button test! */
84                 if(button_get_event(&button)) {
85                         //uart0_send_string(announce);
86                         switch(button.key[0]) {
87                                 case BUTTON_POWER:
88                                         display_logo((u8 *)default_logo);
89                                         break;
90                                 case BUTTON_DOWN:
91                                         if(contrast>0x00)
92                                                 contrast-=1;
93                                         DISPLAY_SET_CONTRAST(contrast);
94                                         break;
95                                 case BUTTON_UP:
96                                         if(contrast<0x3f)
97                                                 contrast+=1;
98                                         DISPLAY_SET_CONTRAST(contrast);
99                                         break;
100                                 case BUTTON_A:
101                                         display_fill_screen(DISPLAY_FILL_W);
102                                         break;
103                                 case BUTTON_B:
104                                         display_fill_screen(DISPLAY_FILL_LG);
105                                         break;
106                                 case BUTTON_C:
107                                         display_fill_screen(DISPLAY_FILL_DG);
108                                         break;
109                                 case BUTTON_D:
110                                         display_fill_screen(DISPLAY_FILL_B);
111                                         break;
112                                 case BUTTON_1:
113                                         display_rectangle_page(4,2,60,5,DISPLAY_FILL_B,0xff);
114                                         break;
115                                 case BUTTON_2:
116                                         display_rectangle_page(40,5,50,5,DISPLAY_FILL_LG,0x7f);
117                                         break;
118                                 case BUTTON_3:
119                                         break;
120                                 case BUTTON_4:
121                                         display_font_page(42,18,(u8 *)default_font+(0x34<<3),DISPLAY_FILL_B);
122                                         break;
123                                 case BUTTON_5:
124                                         display_font_page(50,18,(u8 *)default_font+(0x35<<3),DISPLAY_FILL_DG);
125                                         break;
126                                 case BUTTON_6:
127                                         display_font_page(58,18,(u8 *)default_font+(0x36<<3),DISPLAY_FILL_W);
128                                         break;
129                                 case BUTTON_7:
130                                         break;
131                                 case BUTTON_8:
132                                         break;
133                                 case BUTTON_BETTY:
134                                         display_string_page(50,13,(u8 *)d1_txt,DISPLAY_FILL_B,0,8);
135                                         break;
136                                 case BUTTON_EXIT:
137                                         display_string_page(10,8,(u8 *)d2_txt,DISPLAY_FILL_B,0,8);
138                                         break;
139                                 default:
140                                         display_clear_screen();
141                                         break;
142                         }
143                 }
144         }
145
146         return 0;
147 }
148