diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/SOURCES | 2 | ||||
-rw-r--r-- | apps/plugins/chessclock.c | 229 | ||||
-rw-r--r-- | apps/plugins/wormlet.c | 7 |
3 files changed, 130 insertions, 108 deletions
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES index 1ce417d847..a42b919a8d 100644 --- a/apps/plugins/SOURCES +++ b/apps/plugins/SOURCES | |||
@@ -1,5 +1,6 @@ | |||
1 | /* plugins common to all models */ | 1 | /* plugins common to all models */ |
2 | battery_test.c | 2 | battery_test.c |
3 | chessclock.c | ||
3 | favorites.c | 4 | favorites.c |
4 | firmware_flash.c | 5 | firmware_flash.c |
5 | helloworld.c | 6 | helloworld.c |
@@ -48,7 +49,6 @@ wormlet.c | |||
48 | #endif /*#ifdef HAVE_LCD_BITMAP */ | 49 | #endif /*#ifdef HAVE_LCD_BITMAP */ |
49 | 50 | ||
50 | #ifdef HAVE_LCD_CHARCELLS /* Player model only */ | 51 | #ifdef HAVE_LCD_CHARCELLS /* Player model only */ |
51 | chessclock.c | ||
52 | euroconverter.c | 52 | euroconverter.c |
53 | jackpot.c | 53 | jackpot.c |
54 | nim.c | 54 | nim.c |
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c index 4df169669a..a25221d619 100644 --- a/apps/plugins/chessclock.c +++ b/apps/plugins/chessclock.c | |||
@@ -17,9 +17,49 @@ | |||
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | #include "plugin.h" | 19 | #include "plugin.h" |
20 | #ifdef HAVE_LCD_CHARCELLS | 20 | |
21 | /* We only support players at a start. I don't have simulator capacity at | 21 | /* variable button definitions */ |
22 | the time. */ | 22 | #if CONFIG_KEYPAD == RECORDER_PAD |
23 | #define CHC_QUIT BUTTON_OFF | ||
24 | #define CHC_STARTSTOP BUTTON_PLAY | ||
25 | #define CHC_RESET BUTTON_LEFT | ||
26 | #define CHC_MENU BUTTON_F1 | ||
27 | #define CHC_SETTINGS_INC BUTTON_UP | ||
28 | #define CHC_SETTINGS_DEC BUTTON_DOWN | ||
29 | #define CHC_SETTINGS_OK BUTTON_PLAY | ||
30 | #define CHC_SETTINGS_OK2 BUTTON_LEFT | ||
31 | #define CHC_SETTINGS_CANCEL BUTTON_OFF | ||
32 | |||
33 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
34 | #define CHC_QUIT BUTTON_OFF | ||
35 | #define CHC_STARTSTOP BUTTON_RIGHT | ||
36 | #define CHC_RESET BUTTON_LEFT | ||
37 | #define CHC_MENU BUTTON_MENU | ||
38 | #define CHC_SETTINGS_INC BUTTON_UP | ||
39 | #define CHC_SETTINGS_DEC BUTTON_DOWN | ||
40 | #define CHC_SETTINGS_OK BUTTON_RIGHT | ||
41 | #define CHC_SETTINGS_OK2 BUTTON_LEFT | ||
42 | #define CHC_SETTINGS_CANCEL BUTTON_MENU | ||
43 | |||
44 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
45 | #define CHC_QUIT BUTTON_ON | ||
46 | #define CHC_STARTSTOP BUTTON_PLAY | ||
47 | #define CHC_RESET BUTTON_STOP | ||
48 | #define CHC_MENU BUTTON_MENU | ||
49 | #define CHC_SETTINGS_INC BUTTON_RIGHT | ||
50 | #define CHC_SETTINGS_DEC BUTTON_LEFT | ||
51 | #define CHC_SETTINGS_OK BUTTON_PLAY | ||
52 | #define CHC_SETTINGS_CANCEL BUTTON_STOP | ||
53 | #define CHC_SETTINGS_CANCEL2 BUTTON_MENU | ||
54 | |||
55 | #endif | ||
56 | |||
57 | /* leave first line blank on bitmap display, for pause icon */ | ||
58 | #ifdef HAVE_LCD_BITMAP | ||
59 | #define FIRST_LINE 1 | ||
60 | #else | ||
61 | #define FIRST_LINE 0 | ||
62 | #endif | ||
23 | 63 | ||
24 | /* here is a global api struct pointer. while not strictly necessary, | 64 | /* here is a global api struct pointer. while not strictly necessary, |
25 | it's nice not to have to pass the api pointer in all function calls | 65 | it's nice not to have to pass the api pointer in all function calls |
@@ -99,7 +139,6 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
99 | break; | 139 | break; |
100 | } | 140 | } |
101 | if (res==-1) { | 141 | if (res==-1) { |
102 | rb->usb_screen(); | ||
103 | return PLUGIN_USB_CONNECTED; | 142 | return PLUGIN_USB_CONNECTED; |
104 | } | 143 | } |
105 | if (res==0) { | 144 | if (res==0) { |
@@ -140,7 +179,6 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
140 | done=true; | 179 | done=true; |
141 | break; | 180 | break; |
142 | case 3: | 181 | case 3: |
143 | rb->usb_screen(); | ||
144 | return PLUGIN_USB_CONNECTED; | 182 | return PLUGIN_USB_CONNECTED; |
145 | case 1: | 183 | case 1: |
146 | nr++; | 184 | nr++; |
@@ -157,6 +195,18 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
157 | return PLUGIN_OK; | 195 | return PLUGIN_OK; |
158 | } | 196 | } |
159 | 197 | ||
198 | #ifdef HAVE_LCD_BITMAP | ||
199 | static void show_pause_mode(bool enabled) | ||
200 | { | ||
201 | static const char pause_icon[] = {0x00,0x7f,0x7f,0x00,0x7f,0x7f,0x00}; | ||
202 | |||
203 | if (enabled) | ||
204 | rb->lcd_bitmap(pause_icon, 52, 0, 7, 8, true); | ||
205 | else | ||
206 | rb->lcd_clearrect(52, 0, 7, 8); | ||
207 | } | ||
208 | #endif | ||
209 | |||
160 | /* | 210 | /* |
161 | -1= exit | 211 | -1= exit |
162 | 1 = next player | 212 | 1 = next player |
@@ -173,15 +223,19 @@ static int run_timer(int nr) | |||
173 | long max_ticks=timer_holder[nr].total_time*HZ-timer_holder[nr].used_time; | 223 | long max_ticks=timer_holder[nr].total_time*HZ-timer_holder[nr].used_time; |
174 | long ticks=0; | 224 | long ticks=0; |
175 | bool round_time=false; | 225 | bool round_time=false; |
176 | 226 | ||
227 | #ifdef HAVE_LCD_CHARCELLS | ||
177 | rb->lcd_icon(ICON_PAUSE, pause); | 228 | rb->lcd_icon(ICON_PAUSE, pause); |
229 | #else | ||
230 | show_pause_mode(pause); | ||
231 | #endif | ||
178 | 232 | ||
179 | if (settings.round_time*HZ<max_ticks) { | 233 | if (settings.round_time*HZ<max_ticks) { |
180 | max_ticks=settings.round_time*HZ; | 234 | max_ticks=settings.round_time*HZ; |
181 | round_time=true; | 235 | round_time=true; |
182 | } | 236 | } |
183 | rb->snprintf(player_info, sizeof(player_info), "Player %d", nr+1); | 237 | rb->snprintf(player_info, sizeof(player_info), "Player %d", nr+1); |
184 | rb->lcd_puts(0, 0, player_info); | 238 | rb->lcd_puts(0, FIRST_LINE, player_info); |
185 | last_tick=*rb->current_tick; | 239 | last_tick=*rb->current_tick; |
186 | 240 | ||
187 | while (!done) { | 241 | while (!done) { |
@@ -189,19 +243,19 @@ static int run_timer(int nr) | |||
189 | long now; | 243 | long now; |
190 | if (ticks>max_ticks) { | 244 | if (ticks>max_ticks) { |
191 | if (round_time) | 245 | if (round_time) |
192 | rb->lcd_puts(0, 1, "ROUND UP!"); | 246 | rb->lcd_puts(0, FIRST_LINE+1, "ROUND UP!"); |
193 | else | 247 | else |
194 | rb->lcd_puts(0, 1, "TIME OUT!"); | 248 | rb->lcd_puts(0, FIRST_LINE+1, "TIME OUT!"); |
195 | rb->backlight_on(); | 249 | rb->backlight_on(); |
196 | } else { | 250 | } else { |
197 | /* | 251 | /* |
198 | if (((int)(rb->current_tick - start_ticks)/HZ)&1) { | 252 | if (((int)(rb->current_tick - start_ticks)/HZ)&1) { |
199 | rb->lcd_puts(0, 0, player_info); | 253 | rb->lcd_puts(0, FIRST_LINE, player_info); |
200 | } else { | 254 | } else { |
201 | rb->lcd_puts(0, 0, player_info); | 255 | rb->lcd_puts(0, FIRST_LINE, player_info); |
202 | } | 256 | } |
203 | */ | 257 | */ |
204 | rb->lcd_puts(0, 0, player_info); | 258 | rb->lcd_puts(0, FIRST_LINE, player_info); |
205 | now=*rb->current_tick; | 259 | now=*rb->current_tick; |
206 | if (!pause) { | 260 | if (!pause) { |
207 | ticks+=now-last_tick; | 261 | ticks+=now-last_tick; |
@@ -219,34 +273,37 @@ static int run_timer(int nr) | |||
219 | show_time((timer_holder[nr].total_time*HZ- | 273 | show_time((timer_holder[nr].total_time*HZ- |
220 | timer_holder[nr].used_time- | 274 | timer_holder[nr].used_time- |
221 | ticks+HZ-1)/HZ)); | 275 | ticks+HZ-1)/HZ)); |
222 | rb->lcd_puts(0, 1, buf); | 276 | rb->lcd_puts(0, FIRST_LINE+1, buf); |
223 | } else { | 277 | } else { |
224 | rb->lcd_puts(0, 1, show_time((max_ticks-ticks+HZ-1)/HZ)); | 278 | rb->lcd_puts(0, FIRST_LINE+1, show_time((max_ticks-ticks+HZ-1)/HZ)); |
225 | } | 279 | } |
226 | } | 280 | } |
227 | button = rb->button_get_w_tmo(10); | 281 | #ifdef HAVE_LCD_BITMAP |
228 | switch (button) { | 282 | rb->lcd_update(); |
229 | /* OFF/MENU key to exit */ | ||
230 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
231 | case BUTTON_OFF: | ||
232 | #else | ||
233 | case BUTTON_ON: | ||
234 | #endif | 283 | #endif |
284 | button = rb->button_get(false); | ||
285 | switch (button) { | ||
286 | /* OFF/ON key to exit */ | ||
287 | case CHC_QUIT: | ||
235 | return -1; /* Indicate exit */ | 288 | return -1; /* Indicate exit */ |
236 | 289 | ||
237 | /* PLAY = Stop/Start toggle */ | 290 | /* PLAY = Stop/Start toggle */ |
238 | case BUTTON_PLAY: | 291 | case CHC_STARTSTOP: |
239 | pause=!pause; | 292 | pause=!pause; |
293 | #ifdef HAVE_LCD_CHARCELLS | ||
240 | rb->lcd_icon(ICON_PAUSE, pause); | 294 | rb->lcd_icon(ICON_PAUSE, pause); |
295 | #else | ||
296 | show_pause_mode(pause); | ||
297 | #endif | ||
241 | break; | 298 | break; |
242 | 299 | ||
243 | /* LEFT = Reset timer */ | 300 | /* LEFT = Reset timer */ |
244 | case BUTTON_STOP: | 301 | case CHC_RESET: |
245 | ticks=0; | 302 | ticks=0; |
246 | break; | 303 | break; |
247 | 304 | ||
248 | /* MENU */ | 305 | /* MENU */ |
249 | case BUTTON_MENU: | 306 | case CHC_MENU: |
250 | { | 307 | { |
251 | int ret; | 308 | int ret; |
252 | char *menu[]={"Delete player", "Restart round", | 309 | char *menu[]={"Delete player", "Restart round", |
@@ -299,35 +356,29 @@ static int run_timer(int nr) | |||
299 | break; | 356 | break; |
300 | 357 | ||
301 | /* UP (RIGHT/+) = Scroll Lap timer up */ | 358 | /* UP (RIGHT/+) = Scroll Lap timer up */ |
302 | #if CONFIG_KEYPAD == RECORDER_PAD | 359 | case CHC_SETTINGS_INC: |
303 | case BUTTON_UP: | ||
304 | #else | ||
305 | case BUTTON_RIGHT: | ||
306 | #endif | ||
307 | retval = 1; | 360 | retval = 1; |
308 | done = true; | 361 | done = true; |
309 | break; | 362 | break; |
310 | 363 | ||
311 | /* DOWN (LEFT/-) = Scroll Lap timer down */ | 364 | /* DOWN (LEFT/-) = Scroll Lap timer down */ |
312 | #if CONFIG_KEYPAD == RECORDER_PAD | 365 | case CHC_SETTINGS_DEC: |
313 | case BUTTON_DOWN: | ||
314 | #else | ||
315 | case BUTTON_LEFT: | ||
316 | #endif | ||
317 | retval = 2; | 366 | retval = 2; |
318 | done = true; | 367 | done = true; |
319 | break; | 368 | break; |
320 | 369 | ||
321 | case SYS_USB_CONNECTED: | 370 | default: |
322 | retval = 3; | 371 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) { |
323 | done=true; | 372 | done = true; |
373 | return 3; /* been in usb mode */ | ||
374 | } | ||
324 | break; | 375 | break; |
325 | } | 376 | } |
326 | rb->sleep(HZ/4); /* Sleep 1/4 of a second */ | 377 | rb->sleep(HZ/4); /* Sleep 1/4 of a second */ |
327 | } | 378 | } |
328 | 379 | ||
329 | timer_holder[nr].used_time+=ticks; | 380 | timer_holder[nr].used_time+=ticks; |
330 | 381 | ||
331 | return retval; | 382 | return retval; |
332 | } | 383 | } |
333 | 384 | ||
@@ -341,15 +392,8 @@ static int chessclock_set_int(char* string, | |||
341 | bool done = false; | 392 | bool done = false; |
342 | int button; | 393 | int button; |
343 | 394 | ||
344 | #ifdef HAVE_LCD_BITMAP | ||
345 | if(global_settings.statusbar) | ||
346 | rb->lcd_setmargins(0, STATUSBAR_HEIGHT); | ||
347 | else | ||
348 | rb->lcd_setmargins(0, 0); | ||
349 | #endif | ||
350 | |||
351 | rb->lcd_clear_display(); | 395 | rb->lcd_clear_display(); |
352 | rb->lcd_puts_scroll(0, 0, string); | 396 | rb->lcd_puts_scroll(0, FIRST_LINE, string); |
353 | 397 | ||
354 | while (!done) { | 398 | while (!done) { |
355 | char str[32]; | 399 | char str[32]; |
@@ -357,53 +401,40 @@ static int chessclock_set_int(char* string, | |||
357 | rb->snprintf(str, sizeof str,"%s (m:s)", show_time(*variable)); | 401 | rb->snprintf(str, sizeof str,"%s (m:s)", show_time(*variable)); |
358 | else | 402 | else |
359 | rb->snprintf(str, sizeof str,"%d", *variable); | 403 | rb->snprintf(str, sizeof str,"%d", *variable); |
360 | rb->lcd_puts(0, 1, str); | 404 | rb->lcd_puts(0, FIRST_LINE+1, str); |
361 | #ifdef HAVE_LCD_BITMAP | 405 | #ifdef HAVE_LCD_BITMAP |
362 | rb->status_draw(true); | ||
363 | rb->lcd_update(); | 406 | rb->lcd_update(); |
364 | #endif | 407 | #endif |
365 | button = rb->button_get_w_tmo(HZ/2); | 408 | button = rb->button_get(true); |
366 | switch(button) { | 409 | switch(button) { |
367 | #if CONFIG_KEYPAD == RECORDER_PAD | 410 | case CHC_SETTINGS_INC: |
368 | case BUTTON_UP: | 411 | case CHC_SETTINGS_INC | BUTTON_REPEAT: |
369 | case BUTTON_UP | BUTTON_REPEAT: | ||
370 | #else | ||
371 | case BUTTON_RIGHT: | ||
372 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
373 | #endif | ||
374 | *variable += step; | 412 | *variable += step; |
375 | break; | 413 | break; |
376 | 414 | ||
377 | #if CONFIG_KEYPAD == RECORDER_PAD | 415 | case CHC_SETTINGS_DEC: |
378 | case BUTTON_DOWN: | 416 | case CHC_SETTINGS_DEC | BUTTON_REPEAT: |
379 | case BUTTON_DOWN | BUTTON_REPEAT: | ||
380 | #else | ||
381 | case BUTTON_LEFT: | ||
382 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
383 | #endif | ||
384 | *variable -= step; | 417 | *variable -= step; |
385 | break; | 418 | break; |
386 | 419 | ||
387 | #if CONFIG_KEYPAD == RECORDER_PAD | 420 | case CHC_SETTINGS_OK: |
388 | case BUTTON_LEFT: | 421 | #ifdef CHC_SETTINGS_OK2 |
389 | case BUTTON_PLAY: | 422 | case CHC_SETTINGS_OK2: |
390 | #else | ||
391 | case BUTTON_PLAY: | ||
392 | #endif | 423 | #endif |
393 | done = true; | 424 | done = true; |
394 | break; | 425 | break; |
395 | 426 | ||
396 | #if CONFIG_KEYPAD == RECORDER_PAD | 427 | case CHC_SETTINGS_CANCEL: |
397 | case BUTTON_OFF: | 428 | #ifdef CHC_SETTINGS_CANCEL2 |
398 | #else | 429 | case CHC_SETTINGS_CANCEL2: |
399 | case BUTTON_STOP: | ||
400 | case BUTTON_MENU: | ||
401 | #endif | 430 | #endif |
402 | return 0; /* cancel */ | 431 | return 0; /* cancel */ |
403 | break; | 432 | break; |
404 | 433 | ||
405 | case SYS_USB_CONNECTED: | 434 | default: |
406 | return -1; | 435 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) |
436 | return -1; /* been in usb mode */ | ||
437 | break; | ||
407 | 438 | ||
408 | } | 439 | } |
409 | if(*variable > max ) | 440 | if(*variable > max ) |
@@ -439,51 +470,41 @@ static int simple_menu(int nr, char **strarr) | |||
439 | show=0; | 470 | show=0; |
440 | if (show<0) | 471 | if (show<0) |
441 | show=nr-1; | 472 | show=nr-1; |
442 | rb->lcd_puts_scroll(0, 0, strarr[show]); | 473 | rb->lcd_puts_scroll(0, FIRST_LINE, strarr[show]); |
443 | button = rb->button_get(false); | 474 | #ifdef HAVE_LCD_BITMAP |
444 | switch(button) { | 475 | rb->lcd_update(); |
445 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
446 | case BUTTON_UP: | ||
447 | case BUTTON_UP | BUTTON_REPEAT: | ||
448 | #else | ||
449 | case BUTTON_RIGHT: | ||
450 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
451 | #endif | 476 | #endif |
477 | button = rb->button_get(true); | ||
478 | switch(button) { | ||
479 | case CHC_SETTINGS_INC: | ||
480 | case CHC_SETTINGS_INC | BUTTON_REPEAT: | ||
452 | show++; | 481 | show++; |
453 | break; | 482 | break; |
454 | 483 | ||
455 | #if CONFIG_KEYPAD == RECORDER_PAD | 484 | case CHC_SETTINGS_DEC: |
456 | case BUTTON_DOWN: | 485 | case CHC_SETTINGS_DEC | BUTTON_REPEAT: |
457 | case BUTTON_DOWN | BUTTON_REPEAT: | ||
458 | #else | ||
459 | case BUTTON_LEFT: | ||
460 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
461 | #endif | ||
462 | show--; | 486 | show--; |
463 | break; | 487 | break; |
464 | 488 | ||
465 | #if CONFIG_KEYPAD == RECORDER_PAD | 489 | case CHC_SETTINGS_OK: |
466 | case BUTTON_LEFT: | 490 | #ifdef CHC_SETTINGS_OK2 |
467 | case BUTTON_PLAY: | 491 | case CHC_SETTINGS_OK2: |
468 | #else | ||
469 | case BUTTON_PLAY: | ||
470 | #endif | 492 | #endif |
471 | return show; | 493 | return show; |
472 | break; | 494 | break; |
473 | 495 | ||
474 | #if CONFIG_KEYPAD == RECORDER_PAD | 496 | case CHC_SETTINGS_CANCEL: |
475 | case BUTTON_OFF: | 497 | #ifdef CHC_SETTINGS_CANCEL2 |
476 | #else | 498 | case CHC_SETTINGS_CANCEL2: |
477 | case BUTTON_STOP: | ||
478 | case BUTTON_MENU: | ||
479 | #endif | 499 | #endif |
480 | return -2; /* cancel */ | 500 | return -2; /* cancel */ |
481 | break; | 501 | break; |
482 | 502 | ||
483 | case SYS_USB_CONNECTED: | 503 | default: |
484 | return -1; | 504 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) |
505 | return -1; /* been in usb mode */ | ||
506 | break; | ||
485 | } | 507 | } |
486 | } | 508 | } |
487 | } | 509 | } |
488 | 510 | ||
489 | #endif /* HAVE_LCD_CHARCELLS */ | ||
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c index be089cdb7c..8ded341bec 100644 --- a/apps/plugins/wormlet.c +++ b/apps/plugins/wormlet.c | |||
@@ -1967,9 +1967,10 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
1967 | } | 1967 | } |
1968 | break; | 1968 | break; |
1969 | 1969 | ||
1970 | case SYS_USB_CONNECTED: | 1970 | default: |
1971 | rb->usb_screen(); | 1971 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) |
1972 | return PLUGIN_USB_CONNECTED; | 1972 | return PLUGIN_USB_CONNECTED; |
1973 | break; | ||
1973 | } | 1974 | } |
1974 | } while (button != BUTTON_PLAY && | 1975 | } while (button != BUTTON_PLAY && |
1975 | button != BUTTON_OFF && button != BUTTON_ON); | 1976 | button != BUTTON_OFF && button != BUTTON_ON); |