basical alpha blending working (modulo minor pits)
[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 /*
18  * main function
19  */
20
21 int main() {
22
23         char announce[]="betty - live from flash at 0x80000000! ;)\r\n";
24         t_button button;
25         u8 contrast;
26
27         /* system init */
28         pll_init();
29         pin_init();
30         ext_mem_init();
31         
32         /* uart init */
33         uart0_init();
34
35         /* display init */
36         display_bl_init();
37
38         /* button init */
39         button_init(&button);
40         button_set_retries(&button,100);
41
42         /* flash init */
43         flash_init();
44
45         /*
46          * start it ...
47          */
48
49         /* display init */
50         display_bl_toggle();
51         display_init();
52         contrast=0x38;
53
54         /* pasue again */
55
56         /* announce */
57         uart0_send_string(announce);
58
59         
60         while(1) {
61                 pause(0x0fffff);
62
63                 /* button test! */
64                 if(button_get_event(&button)) {
65                         //uart0_send_string(announce);
66                         switch(button.key[0]) {
67                                 case BUTTON_POWER:
68                                         display_logo((u8 *)default_logo);
69                                         break;
70                                 case BUTTON_DOWN:
71                                         if(contrast>0x00)
72                                                 contrast-=1;
73                                         DISPLAY_SET_CONTRAST(contrast);
74                                         break;
75                                 case BUTTON_UP:
76                                         if(contrast<0x3f)
77                                                 contrast+=1;
78                                         DISPLAY_SET_CONTRAST(contrast);
79                                         break;
80                                 case BUTTON_A:
81                                         display_fill_screen(DISPLAY_FILL_W);
82                                         break;
83                                 case BUTTON_B:
84                                         display_fill_screen(DISPLAY_FILL_LG);
85                                         break;
86                                 case BUTTON_C:
87                                         display_fill_screen(DISPLAY_FILL_DG);
88                                         break;
89                                 case BUTTON_D:
90                                         display_fill_screen(DISPLAY_FILL_B);
91                                         break;
92                                 case BUTTON_1:
93                                         display_draw_rectangle(20,20,40,40,
94                                                                DISPLAY_FILL_B,
95                                                                0xff);
96                                         break;
97                                 case BUTTON_2:
98                                         display_draw_rectangle(50,50,40,40,
99                                                                DISPLAY_FILL_LG,
100                                                                0x7f);
101                                         break;
102                                 case BUTTON_3:
103                                         display_draw_font(70,70,
104                                                           (u8 *)default_font+(0x33<<3),
105                                                                DISPLAY_FILL_LG,
106                                                                0xff);
107                                         break;
108                                 case BUTTON_4:
109                                         display_font_page(23,19,(u8 *)default_font+(0x34<<3),DISPLAY_FILL_B);
110                                         break;
111                                 case BUTTON_5:
112                                         display_font_page(10,19,(u8 *)default_font+(0x35<<3),DISPLAY_FILL_DG);
113                                         break;
114                                 case BUTTON_6:
115                                         display_font_page(2,19,(u8 *)default_font+(0x36<<3),DISPLAY_FILL_LG);
116                                         break;
117                                 case BUTTON_7:
118                                         display_draw_rectangle(2,2,4,4,
119                                                                DISPLAY_FILL_B,
120                                                                0xff);
121                                         break;
122                                 case BUTTON_8:
123                                         display_draw_rectangle(8,8,4,4,
124                                                                DISPLAY_FILL_DG,
125                                                                0xff);
126                                         break;
127                                 case BUTTON_BETTY:
128                                         display_rectangle_page(80,15,16,2,DISPLAY_FILL_B,0x7f);
129                                         uart0_send_byte('b');
130                                         break;
131                                 case BUTTON_EXIT:
132                                         display_rectangle_page(90,16,16,2,DISPLAY_FILL_LG,0x7f);
133                                         uart0_send_byte('e');
134                                         break;
135                                 default:
136                                         display_clear_screen();
137                                         break;
138                         }
139                 }
140         }
141
142         return 0;
143 }
144