OSDN Git Service

Update lejos_osek to nxtOSEK_v205b0.zip
[nxt-jsp/etrobo-atk.git] / nxtOSEK / samples_c / anime / anime.c
1 /* bmptest.c */ \r
2 #include <string.h>\r
3 #include "kernel.h"\r
4 #include "kernel_id.h"\r
5 #include "ecrobot_interface.h"\r
6 \r
7 /* OSEK declarations */\r
8 DeclareTask(Task1);\r
9 \r
10 /* LEJOS OSEK hook to be invoked from an ISR in category 2 */\r
11 void user_1ms_isr_type2(void){}\r
12 \r
13 /*\r
14  * a bmp file can be accessed by using following macros:\r
15  * E.g RCXintro_1.bmp\r
16  * EXTERNAL_BMP_DATA(file name without extension); <- This is external declarations\r
17  * BMP_DATA_START(file name without extension)     <- start address of a bmp file\r
18  * BMP_DATA_END(file name without extension)       <- end address of a bmp file\r
19  * BMP_DATA_SIZE(file name without extension)      <- size of a bmp file \r
20  */\r
21 EXTERNAL_BMP_DATA(anime00000);\r
22 EXTERNAL_BMP_DATA(anime00004);\r
23 EXTERNAL_BMP_DATA(anime00008);\r
24 EXTERNAL_BMP_DATA(anime00012);\r
25 EXTERNAL_BMP_DATA(anime00016);\r
26 EXTERNAL_BMP_DATA(anime00020);\r
27 EXTERNAL_BMP_DATA(anime00024);\r
28 EXTERNAL_BMP_DATA(anime00028);\r
29 EXTERNAL_BMP_DATA(anime00032);\r
30 EXTERNAL_BMP_DATA(anime00036);\r
31 EXTERNAL_BMP_DATA(anime00040);\r
32 EXTERNAL_BMP_DATA(anime00044);\r
33 EXTERNAL_BMP_DATA(anime00048);\r
34 EXTERNAL_BMP_DATA(anime00052);\r
35 EXTERNAL_BMP_DATA(anime00056);\r
36 EXTERNAL_BMP_DATA(anime00060);\r
37 EXTERNAL_BMP_DATA(anime00064);\r
38 EXTERNAL_BMP_DATA(anime00068);\r
39 EXTERNAL_BMP_DATA(anime00072);\r
40 EXTERNAL_BMP_DATA(anime00076);\r
41 EXTERNAL_BMP_DATA(anime00080);\r
42 EXTERNAL_BMP_DATA(anime00084);\r
43 EXTERNAL_BMP_DATA(anime00088);\r
44 EXTERNAL_BMP_DATA(anime00092);\r
45 EXTERNAL_BMP_DATA(anime00096);\r
46 EXTERNAL_BMP_DATA(anime00100);\r
47 EXTERNAL_BMP_DATA(anime00104);\r
48 EXTERNAL_BMP_DATA(anime00108);\r
49 EXTERNAL_BMP_DATA(anime00112);\r
50 EXTERNAL_BMP_DATA(anime00116);\r
51 EXTERNAL_BMP_DATA(anime00120);\r
52 EXTERNAL_BMP_DATA(anime00124);\r
53 EXTERNAL_BMP_DATA(anime00128);\r
54 EXTERNAL_BMP_DATA(anime00132);\r
55 EXTERNAL_BMP_DATA(anime00136);\r
56 EXTERNAL_BMP_DATA(anime00140);\r
57 EXTERNAL_BMP_DATA(anime00144);\r
58 EXTERNAL_BMP_DATA(anime00148);\r
59 EXTERNAL_BMP_DATA(anime00152);\r
60 EXTERNAL_BMP_DATA(anime00156);\r
61 EXTERNAL_BMP_DATA(anime00160);\r
62 EXTERNAL_BMP_DATA(anime00164);\r
63 EXTERNAL_BMP_DATA(anime00168);\r
64 EXTERNAL_BMP_DATA(anime00172);\r
65 EXTERNAL_BMP_DATA(anime00176);\r
66 EXTERNAL_BMP_DATA(anime00180);\r
67 EXTERNAL_BMP_DATA(anime00184);\r
68 EXTERNAL_BMP_DATA(anime00188);\r
69 EXTERNAL_BMP_DATA(anime00192);\r
70 EXTERNAL_BMP_DATA(anime00196);\r
71 EXTERNAL_BMP_DATA(anime00200);\r
72 EXTERNAL_BMP_DATA(anime00204);\r
73 EXTERNAL_BMP_DATA(anime00208);\r
74 EXTERNAL_BMP_DATA(anime00212);\r
75 EXTERNAL_BMP_DATA(anime00216);\r
76 EXTERNAL_BMP_DATA(anime00220);\r
77 EXTERNAL_BMP_DATA(anime00224);\r
78 EXTERNAL_BMP_DATA(anime00228);\r
79 EXTERNAL_BMP_DATA(anime00232);\r
80 EXTERNAL_BMP_DATA(anime00236);\r
81 EXTERNAL_BMP_DATA(anime00240);\r
82 EXTERNAL_BMP_DATA(anime00244);\r
83 EXTERNAL_BMP_DATA(anime00248);\r
84 EXTERNAL_BMP_DATA(anime00252);\r
85 EXTERNAL_BMP_DATA(anime00256);\r
86 EXTERNAL_BMP_DATA(anime00260);\r
87 EXTERNAL_BMP_DATA(anime00264);\r
88 EXTERNAL_BMP_DATA(anime00268);\r
89 EXTERNAL_BMP_DATA(anime00272);\r
90 EXTERNAL_BMP_DATA(anime00276);\r
91 EXTERNAL_BMP_DATA(anime00280);\r
92 EXTERNAL_BMP_DATA(anime00284);\r
93 EXTERNAL_BMP_DATA(anime00288);\r
94 EXTERNAL_BMP_DATA(anime00292);\r
95 EXTERNAL_BMP_DATA(anime00296);\r
96 EXTERNAL_BMP_DATA(anime00300);\r
97 EXTERNAL_BMP_DATA(anime00304);\r
98 EXTERNAL_BMP_DATA(anime00308);\r
99 EXTERNAL_BMP_DATA(anime00312);\r
100 EXTERNAL_BMP_DATA(anime00316);\r
101 EXTERNAL_BMP_DATA(anime00320);\r
102 EXTERNAL_BMP_DATA(anime00324);\r
103 EXTERNAL_BMP_DATA(anime00328);\r
104 EXTERNAL_BMP_DATA(anime00332);\r
105 EXTERNAL_BMP_DATA(anime00336);\r
106 EXTERNAL_BMP_DATA(anime00340);\r
107 EXTERNAL_BMP_DATA(anime00344);\r
108 EXTERNAL_BMP_DATA(anime00348);\r
109 EXTERNAL_BMP_DATA(anime00352);\r
110 EXTERNAL_BMP_DATA(anime00356);\r
111 EXTERNAL_BMP_DATA(anime00360);\r
112 EXTERNAL_BMP_DATA(anime00364);\r
113 EXTERNAL_BMP_DATA(anime00368);\r
114 EXTERNAL_BMP_DATA(anime00372);\r
115 EXTERNAL_BMP_DATA(anime00376);\r
116 EXTERNAL_BMP_DATA(anime00380);\r
117 EXTERNAL_BMP_DATA(anime00384);\r
118 EXTERNAL_BMP_DATA(anime00388);\r
119 EXTERNAL_BMP_DATA(anime00392);\r
120 EXTERNAL_BMP_DATA(anime00396);\r
121 EXTERNAL_BMP_DATA(anime00400);\r
122 EXTERNAL_BMP_DATA(anime00404);\r
123 EXTERNAL_BMP_DATA(anime00408);\r
124 EXTERNAL_BMP_DATA(anime00412);\r
125 EXTERNAL_BMP_DATA(anime00416);\r
126 EXTERNAL_BMP_DATA(anime00420);\r
127 EXTERNAL_BMP_DATA(anime00424);\r
128 EXTERNAL_BMP_DATA(anime00428);\r
129 EXTERNAL_BMP_DATA(anime00432);\r
130 EXTERNAL_BMP_DATA(anime00436);\r
131 EXTERNAL_BMP_DATA(anime00440);\r
132 EXTERNAL_BMP_DATA(anime00444);\r
133 EXTERNAL_BMP_DATA(anime00448);\r
134 EXTERNAL_BMP_DATA(anime00452);\r
135 EXTERNAL_BMP_DATA(anime00456);\r
136 EXTERNAL_BMP_DATA(anime00460);\r
137 EXTERNAL_BMP_DATA(anime00464);\r
138 \r
139 typedef struct\r
140 {\r
141         const char *bmp;\r
142         int width;\r
143         int height;\r
144         int x;\r
145         int y;\r
146 } BMP_DATA;\r
147 \r
148 const BMP_DATA bmp_table[] = {\r
149         { BMP_DATA_START(anime00000),  93, 63, 4, 0 },\r
150         { BMP_DATA_START(anime00004),  93, 63, 4, 0 },\r
151         { BMP_DATA_START(anime00008),  93, 63, 4, 0 },\r
152         { BMP_DATA_START(anime00012),  93, 63, 4, 0 },\r
153         { BMP_DATA_START(anime00016),  93, 63, 4, 0 },\r
154         { BMP_DATA_START(anime00020),  93, 63, 4, 0 },\r
155         { BMP_DATA_START(anime00024),  93, 63, 4, 0 },\r
156         { BMP_DATA_START(anime00028),  93, 63, 4, 0 },\r
157         { BMP_DATA_START(anime00032),  93, 63, 4, 0 },\r
158         { BMP_DATA_START(anime00036),  93, 63, 4, 0 },\r
159         { BMP_DATA_START(anime00040),  93, 63, 4, 0 },\r
160         { BMP_DATA_START(anime00044),  93, 63, 4, 0 },\r
161         { BMP_DATA_START(anime00048),  93, 63, 4, 0 },\r
162         { BMP_DATA_START(anime00052),  93, 63, 4, 0 },\r
163         { BMP_DATA_START(anime00056),  93, 63, 4, 0 },\r
164         { BMP_DATA_START(anime00060),  93, 63, 4, 0 },\r
165         { BMP_DATA_START(anime00064),  93, 63, 4, 0 },\r
166         { BMP_DATA_START(anime00068),  93, 63, 4, 0 },\r
167         { BMP_DATA_START(anime00072),  93, 63, 4, 0 },\r
168         { BMP_DATA_START(anime00076),  93, 63, 4, 0 },\r
169         { BMP_DATA_START(anime00080),  93, 63, 4, 0 },\r
170         { BMP_DATA_START(anime00084),  93, 63, 4, 0 },\r
171         { BMP_DATA_START(anime00088),  93, 63, 4, 0 },\r
172         { BMP_DATA_START(anime00092),  93, 63, 4, 0 },\r
173         { BMP_DATA_START(anime00096),  93, 63, 4, 0 },\r
174         { BMP_DATA_START(anime00100),  93, 63, 4, 0 },\r
175         { BMP_DATA_START(anime00104),  93, 63, 4, 0 },\r
176         { BMP_DATA_START(anime00108),  93, 63, 4, 0 },\r
177         { BMP_DATA_START(anime00112),  93, 63, 4, 0 },\r
178         { BMP_DATA_START(anime00116),  93, 63, 4, 0 },\r
179         { BMP_DATA_START(anime00120),  93, 63, 4, 0 },\r
180         { BMP_DATA_START(anime00124),  93, 63, 4, 0 },\r
181         { BMP_DATA_START(anime00128),  93, 63, 4, 0 },\r
182         { BMP_DATA_START(anime00132),  93, 63, 4, 0 },\r
183         { BMP_DATA_START(anime00136),  93, 63, 4, 0 },\r
184         { BMP_DATA_START(anime00140),  93, 63, 4, 0 },\r
185         { BMP_DATA_START(anime00144),  93, 63, 4, 0 },\r
186         { BMP_DATA_START(anime00148),  93, 63, 4, 0 },\r
187         { BMP_DATA_START(anime00152),  93, 63, 4, 0 },\r
188         { BMP_DATA_START(anime00156),  93, 63, 4, 0 },\r
189         { BMP_DATA_START(anime00160),  93, 63, 4, 0 },\r
190         { BMP_DATA_START(anime00164),  93, 63, 4, 0 },\r
191         { BMP_DATA_START(anime00168),  93, 63, 4, 0 },\r
192         { BMP_DATA_START(anime00172),  93, 63, 4, 0 },\r
193         { BMP_DATA_START(anime00176),  93, 63, 4, 0 },\r
194         { BMP_DATA_START(anime00180),  93, 63, 4, 0 },\r
195         { BMP_DATA_START(anime00184),  93, 63, 4, 0 },\r
196         { BMP_DATA_START(anime00188),  93, 63, 4, 0 },\r
197         { BMP_DATA_START(anime00192),  93, 63, 4, 0 },\r
198         { BMP_DATA_START(anime00196),  93, 63, 4, 0 },\r
199         { BMP_DATA_START(anime00200),  93, 63, 4, 0 },\r
200         { BMP_DATA_START(anime00204),  93, 63, 4, 0 },\r
201         { BMP_DATA_START(anime00208),  93, 63, 4, 0 },\r
202         { BMP_DATA_START(anime00212),  93, 63, 4, 0 },\r
203         { BMP_DATA_START(anime00216),  93, 63, 4, 0 },\r
204         { BMP_DATA_START(anime00220),  93, 63, 4, 0 },\r
205         { BMP_DATA_START(anime00224),  93, 63, 4, 0 },\r
206         { BMP_DATA_START(anime00228),  93, 63, 4, 0 },\r
207         { BMP_DATA_START(anime00232),  93, 63, 4, 0 },\r
208         { BMP_DATA_START(anime00236),  93, 63, 4, 0 },\r
209         { BMP_DATA_START(anime00240),  93, 63, 4, 0 },\r
210         { BMP_DATA_START(anime00244),  93, 63, 4, 0 },\r
211         { BMP_DATA_START(anime00248),  93, 63, 4, 0 },\r
212         { BMP_DATA_START(anime00252),  93, 63, 4, 0 },\r
213         { BMP_DATA_START(anime00256),  93, 63, 4, 0 },\r
214         { BMP_DATA_START(anime00260),  93, 63, 4, 0 },\r
215         { BMP_DATA_START(anime00264),  93, 63, 4, 0 },\r
216         { BMP_DATA_START(anime00268),  93, 63, 4, 0 },\r
217         { BMP_DATA_START(anime00272),  93, 63, 4, 0 },\r
218         { BMP_DATA_START(anime00276),  93, 63, 4, 0 },\r
219         { BMP_DATA_START(anime00280),  93, 63, 4, 0 },\r
220         { BMP_DATA_START(anime00284),  93, 63, 4, 0 },\r
221         { BMP_DATA_START(anime00288),  93, 63, 4, 0 },\r
222         { BMP_DATA_START(anime00292),  93, 63, 4, 0 },\r
223         { BMP_DATA_START(anime00296),  93, 63, 4, 0 },\r
224         { BMP_DATA_START(anime00300),  93, 63, 4, 0 },\r
225         { BMP_DATA_START(anime00304),  93, 63, 4, 0 },\r
226         { BMP_DATA_START(anime00308),  93, 63, 4, 0 },\r
227         { BMP_DATA_START(anime00312),  93, 63, 4, 0 },\r
228         { BMP_DATA_START(anime00316),  93, 63, 4, 0 },\r
229         { BMP_DATA_START(anime00320),  93, 63, 4, 0 },\r
230         { BMP_DATA_START(anime00324),  93, 63, 4, 0 },\r
231         { BMP_DATA_START(anime00328),  93, 63, 4, 0 },\r
232         { BMP_DATA_START(anime00332),  93, 63, 4, 0 },\r
233         { BMP_DATA_START(anime00336),  93, 63, 4, 0 },\r
234         { BMP_DATA_START(anime00340),  93, 63, 4, 0 },\r
235         { BMP_DATA_START(anime00344),  93, 63, 4, 0 },\r
236         { BMP_DATA_START(anime00348),  93, 63, 4, 0 },\r
237         { BMP_DATA_START(anime00352),  93, 63, 4, 0 },\r
238         { BMP_DATA_START(anime00356),  93, 63, 4, 0 },\r
239         { BMP_DATA_START(anime00360),  93, 63, 4, 0 },\r
240         { BMP_DATA_START(anime00364),  93, 63, 4, 0 },\r
241         { BMP_DATA_START(anime00368),  93, 63, 4, 0 },\r
242         { BMP_DATA_START(anime00372),  93, 63, 4, 0 },\r
243         { BMP_DATA_START(anime00376),  93, 63, 4, 0 },\r
244         { BMP_DATA_START(anime00380),  93, 63, 4, 0 },\r
245         { BMP_DATA_START(anime00384),  93, 63, 4, 0 },\r
246         { BMP_DATA_START(anime00388),  93, 63, 4, 0 },\r
247         { BMP_DATA_START(anime00392),  93, 63, 4, 0 },\r
248         { BMP_DATA_START(anime00396),  93, 63, 4, 0 },\r
249         { BMP_DATA_START(anime00400),  93, 63, 4, 0 },\r
250         { BMP_DATA_START(anime00404),  93, 63, 4, 0 },\r
251         { BMP_DATA_START(anime00408),  93, 63, 4, 0 },\r
252         { BMP_DATA_START(anime00412),  93, 63, 4, 0 },\r
253         { BMP_DATA_START(anime00416),  93, 63, 4, 0 },\r
254         { BMP_DATA_START(anime00420),  93, 63, 4, 0 },\r
255         { BMP_DATA_START(anime00424),  93, 63, 4, 0 },\r
256         { BMP_DATA_START(anime00428),  93, 63, 4, 0 },\r
257         { BMP_DATA_START(anime00432),  93, 63, 4, 0 },\r
258         { BMP_DATA_START(anime00436),  93, 63, 4, 0 },\r
259         { BMP_DATA_START(anime00440),  93, 63, 4, 0 },\r
260         { BMP_DATA_START(anime00444),  93, 63, 4, 0 },\r
261         { BMP_DATA_START(anime00448),  93, 63, 4, 0 },\r
262         { BMP_DATA_START(anime00452),  93, 63, 4, 0 },\r
263         { BMP_DATA_START(anime00456),  93, 63, 4, 0 },\r
264         { BMP_DATA_START(anime00460),  93, 63, 4, 0 },\r
265         { BMP_DATA_START(anime00464),  93, 63, 4, 0 }\r
266 };\r
267 \r
268 TASK(Task1)\r
269 {\r
270         static U8 lcd[NXT_LCD_DEPTH*NXT_LCD_WIDTH];\r
271         int i;\r
272 \r
273         while(1)\r
274         {\r
275                 if (ecrobot_is_RUN_button_pressed())\r
276                 {\r
277                         for (i = 0; i < sizeof(bmp_table)/sizeof(BMP_DATA); i++)\r
278                         {\r
279                                 memset(lcd, 0x00, sizeof(lcd));\r
280                                 ecrobot_bmp2lcd(bmp_table[i].bmp, lcd, bmp_table[i].width, bmp_table[i].height);\r
281                                 display_clear(0);\r
282                                 display_bitmap_copy(lcd, 100, 8, bmp_table[i].x, bmp_table[i].y);\r
283                                 display_update();\r
284                                 systick_wait_ms(200);\r
285                         }\r
286                 }\r
287         }\r
288 \r
289         TerminateTask();\r
290 }\r