diff options
36 files changed, 1053 insertions, 1167 deletions
diff --git a/apps/bookmark.c b/apps/bookmark.c index ed85ff6222..9488e52d3d 100644 --- a/apps/bookmark.c +++ b/apps/bookmark.c | |||
@@ -256,33 +256,25 @@ bool bookmark_autobookmark(void) | |||
256 | { | 256 | { |
257 | /* Wait for a key to be pushed */ | 257 | /* Wait for a key to be pushed */ |
258 | key = button_get(true); | 258 | key = button_get(true); |
259 | switch (key) | 259 | if (key & BUTTON_REL) |
260 | { | 260 | { |
261 | case BUTTON_DOWN | BUTTON_REL: | 261 | #ifdef BUTTON_PLAY |
262 | case BUTTON_ON | BUTTON_REL: | 262 | if (key & BUTTON_PLAY) |
263 | #ifdef HAVE_RECORDER_KEYPAD | 263 | #else |
264 | case BUTTON_OFF | BUTTON_REL: | 264 | if (key & BUTTON_RIGHT) |
265 | case BUTTON_RIGHT | BUTTON_REL: | ||
266 | case BUTTON_UP | BUTTON_REL: | ||
267 | #endif | 265 | #endif |
268 | case BUTTON_LEFT | BUTTON_REL: | 266 | { |
269 | done = true; | ||
270 | break; | ||
271 | |||
272 | case BUTTON_PLAY | BUTTON_REL: | ||
273 | if (global_settings.autocreatebookmark == | 267 | if (global_settings.autocreatebookmark == |
274 | BOOKMARK_RECENT_ONLY_ASK) | 268 | BOOKMARK_RECENT_ONLY_ASK) |
275 | write_bookmark(false); | 269 | write_bookmark(false); |
276 | else | 270 | else |
277 | write_bookmark(true); | 271 | write_bookmark(true); |
278 | done = true; | 272 | } |
279 | break; | 273 | done = true; |
280 | |||
281 | default: | ||
282 | if(default_event_handler(key) == SYS_USB_CONNECTED) | ||
283 | return false; | ||
284 | break; | ||
285 | } | 274 | } |
275 | |||
276 | if (default_event_handler(key) == SYS_USB_CONNECTED) | ||
277 | return false; | ||
286 | } | 278 | } |
287 | return true; | 279 | return true; |
288 | } | 280 | } |
@@ -520,7 +512,11 @@ bool bookmark_autoload(const char* file) | |||
520 | case BUTTON_DOWN: | 512 | case BUTTON_DOWN: |
521 | return bookmark_load(global_bookmark_file_name, false); | 513 | return bookmark_load(global_bookmark_file_name, false); |
522 | #endif | 514 | #endif |
515 | #ifdef BUTTON_PLAY | ||
523 | case BUTTON_PLAY: | 516 | case BUTTON_PLAY: |
517 | #else | ||
518 | case BUTTON_RIGHT: | ||
519 | #endif | ||
524 | return bookmark_load(global_bookmark_file_name, true); | 520 | return bookmark_load(global_bookmark_file_name, true); |
525 | 521 | ||
526 | default: | 522 | default: |
@@ -668,7 +664,10 @@ static char* select_bookmark(const char* bookmark_file_name) | |||
668 | key = button_get(true); | 664 | key = button_get(true); |
669 | switch(key) | 665 | switch(key) |
670 | { | 666 | { |
671 | case BUTTON_PLAY: | 667 | case SETTINGS_OK: |
668 | #ifdef SETTINGS_OK2 | ||
669 | case SETTINGS_OK2: | ||
670 | #endif | ||
672 | /* User wants to use this bookmark */ | 671 | /* User wants to use this bookmark */ |
673 | #ifdef HAVE_LCD_BITMAP | 672 | #ifdef HAVE_LCD_BITMAP |
674 | if (global_settings.statusbar) | 673 | if (global_settings.statusbar) |
@@ -678,7 +677,11 @@ static char* select_bookmark(const char* bookmark_file_name) | |||
678 | #endif | 677 | #endif |
679 | return bookmark; | 678 | return bookmark; |
680 | 679 | ||
680 | #if defined(BUTTON_ON) && defined(BUTTON_PLAY) | ||
681 | case BUTTON_ON | BUTTON_PLAY: | 681 | case BUTTON_ON | BUTTON_PLAY: |
682 | #elif defined(BUTTON_MENU) && defined(BUTTON_RIGHT) | ||
683 | case BUTTON_MENU | BUTTON_RIGHT: | ||
684 | #endif | ||
682 | /* User wants to delete this bookmark */ | 685 | /* User wants to delete this bookmark */ |
683 | delete_bookmark(bookmark_file_name, bookmark_id); | 686 | delete_bookmark(bookmark_file_name, bookmark_id); |
684 | bookmark_id_prev=-1; | 687 | bookmark_id_prev=-1; |
@@ -687,36 +690,20 @@ static char* select_bookmark(const char* bookmark_file_name) | |||
687 | while (button_get(false)); /* clear button queue */ | 690 | while (button_get(false)); /* clear button queue */ |
688 | break; | 691 | break; |
689 | 692 | ||
690 | #ifdef HAVE_RECORDER_KEYPAD | 693 | case SETTINGS_DEC: |
691 | case BUTTON_UP: | ||
692 | bookmark_id--; | 694 | bookmark_id--; |
693 | break; | 695 | break; |
694 | 696 | ||
695 | case BUTTON_DOWN: | 697 | case SETTINGS_INC: |
696 | bookmark_id++; | 698 | bookmark_id++; |
697 | break; | 699 | break; |
698 | 700 | ||
699 | case BUTTON_LEFT: | 701 | case SETTINGS_CANCEL: |
700 | case BUTTON_OFF: | 702 | #ifdef SETTINGS_CANCEL2 |
701 | #ifdef HAVE_LCD_BITMAP | 703 | case SETTINGS_CANCEL2: |
702 | if (global_settings.statusbar) | ||
703 | lcd_setmargins(0, STATUSBAR_HEIGHT); | ||
704 | else | ||
705 | lcd_setmargins(0, 0); | ||
706 | #endif | 704 | #endif |
707 | return NULL; | 705 | return NULL; |
708 | #else | ||
709 | case BUTTON_LEFT: | ||
710 | bookmark_id--; | ||
711 | break; | ||
712 | 706 | ||
713 | case BUTTON_RIGHT: | ||
714 | bookmark_id++; | ||
715 | break; | ||
716 | |||
717 | case BUTTON_STOP: | ||
718 | return NULL; | ||
719 | #endif | ||
720 | default: | 707 | default: |
721 | if(default_event_handler(key) == SYS_USB_CONNECTED) | 708 | if(default_event_handler(key) == SYS_USB_CONNECTED) |
722 | return NULL; | 709 | return NULL; |
diff --git a/apps/credits.c b/apps/credits.c index d8cda66677..492426ef8d 100644 --- a/apps/credits.c +++ b/apps/credits.c | |||
@@ -54,7 +54,7 @@ void roll_credits(void) | |||
54 | } | 54 | } |
55 | 55 | ||
56 | /* abort on keypress */ | 56 | /* abort on keypress */ |
57 | if (button_get_w_tmo(DISPLAY_TIME)) | 57 | if (button_get_w_tmo(DISPLAY_TIME) & BUTTON_REL) |
58 | return; | 58 | return; |
59 | } | 59 | } |
60 | return; | 60 | return; |
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index 12ba0c5fbe..7ef531f4df 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c | |||
@@ -93,10 +93,7 @@ bool dbg_os(void) | |||
93 | 93 | ||
94 | switch(button) | 94 | switch(button) |
95 | { | 95 | { |
96 | #ifdef BUTTON_OFF | 96 | case SETTINGS_CANCEL: |
97 | case BUTTON_OFF: | ||
98 | #endif | ||
99 | case BUTTON_LEFT: | ||
100 | return false; | 97 | return false; |
101 | } | 98 | } |
102 | } | 99 | } |
@@ -127,16 +124,16 @@ bool dbg_os(void) | |||
127 | 124 | ||
128 | switch(button) | 125 | switch(button) |
129 | { | 126 | { |
130 | case BUTTON_STOP: | 127 | case SETTINGS_CANCEL: |
131 | return false; | 128 | return false; |
132 | 129 | ||
133 | case BUTTON_LEFT: | 130 | case SETTINGS_DEC: |
134 | currval--; | 131 | currval--; |
135 | if(currval < 0) | 132 | if(currval < 0) |
136 | currval = num_threads-1; | 133 | currval = num_threads-1; |
137 | break; | 134 | break; |
138 | 135 | ||
139 | case BUTTON_RIGHT: | 136 | case SETTINGS_INC: |
140 | currval++; | 137 | currval++; |
141 | if(currval > num_threads-1) | 138 | if(currval > num_threads-1) |
142 | currval = 0; | 139 | currval = 0; |
@@ -161,7 +158,7 @@ bool dbg_mpeg_thread(void) | |||
161 | button = button_get_w_tmo(HZ/5); | 158 | button = button_get_w_tmo(HZ/5); |
162 | switch(button) | 159 | switch(button) |
163 | { | 160 | { |
164 | case BUTTON_OFF | BUTTON_REL: | 161 | case SETTINGS_CANCEL: |
165 | return false; | 162 | return false; |
166 | } | 163 | } |
167 | 164 | ||
@@ -375,7 +372,7 @@ bool dbg_hw_info(void) | |||
375 | while(1) | 372 | while(1) |
376 | { | 373 | { |
377 | button = button_get(true); | 374 | button = button_get(true); |
378 | if(button == (BUTTON_OFF | BUTTON_REL)) | 375 | if(button == SETTINGS_CANCEL) |
379 | return false; | 376 | return false; |
380 | } | 377 | } |
381 | 378 | ||
@@ -460,16 +457,16 @@ bool dbg_hw_info(void) | |||
460 | 457 | ||
461 | switch(button) | 458 | switch(button) |
462 | { | 459 | { |
463 | case BUTTON_STOP: | 460 | case SETTINGS_CANCEL: |
464 | return false; | 461 | return false; |
465 | 462 | ||
466 | case BUTTON_LEFT: | 463 | case SETTINGS_DEC: |
467 | currval--; | 464 | currval--; |
468 | if(currval < 0) | 465 | if(currval < 0) |
469 | currval = 5; | 466 | currval = 5; |
470 | break; | 467 | break; |
471 | 468 | ||
472 | case BUTTON_RIGHT: | 469 | case SETTINGS_INC: |
473 | currval++; | 470 | currval++; |
474 | if(currval > 5) | 471 | if(currval > 5) |
475 | currval = 0; | 472 | currval = 0; |
@@ -507,26 +504,17 @@ bool dbg_partitions(void) | |||
507 | 504 | ||
508 | switch(button) | 505 | switch(button) |
509 | { | 506 | { |
510 | #ifdef HAVE_RECORDER_KEYPAD | 507 | case SETTINGS_OK: |
511 | case BUTTON_OFF: | 508 | case SETTINGS_CANCEL: |
512 | #else | ||
513 | case BUTTON_STOP: | ||
514 | #endif | ||
515 | return false; | 509 | return false; |
516 | 510 | ||
517 | #ifdef HAVE_RECORDER_KEYPAD | 511 | case SETTINGS_DEC: |
518 | case BUTTON_UP: | ||
519 | #endif | ||
520 | case BUTTON_LEFT: | ||
521 | partition--; | 512 | partition--; |
522 | if (partition < 0) | 513 | if (partition < 0) |
523 | partition = 3; | 514 | partition = 3; |
524 | break; | 515 | break; |
525 | 516 | ||
526 | #ifdef HAVE_RECORDER_KEYPAD | 517 | case SETTINGS_INC: |
527 | case BUTTON_DOWN: | ||
528 | #endif | ||
529 | case BUTTON_RIGHT: | ||
530 | partition++; | 518 | partition++; |
531 | if (partition > 3) | 519 | if (partition > 3) |
532 | partition = 0; | 520 | partition = 0; |
@@ -595,7 +583,7 @@ bool dbg_ports(void) | |||
595 | 583 | ||
596 | switch(button) | 584 | switch(button) |
597 | { | 585 | { |
598 | case BUTTON_OFF | BUTTON_REL: | 586 | case SETTINGS_CANCEL: |
599 | return false; | 587 | return false; |
600 | } | 588 | } |
601 | } | 589 | } |
@@ -675,16 +663,16 @@ bool dbg_ports(void) | |||
675 | 663 | ||
676 | switch(button) | 664 | switch(button) |
677 | { | 665 | { |
678 | case BUTTON_STOP | BUTTON_REL: | 666 | case SETTINGS_CANCEL: |
679 | return false; | 667 | return false; |
680 | 668 | ||
681 | case BUTTON_LEFT: | 669 | case SETTINGS_DEC: |
682 | currval--; | 670 | currval--; |
683 | if(currval < 0) | 671 | if(currval < 0) |
684 | currval = 10; | 672 | currval = 10; |
685 | break; | 673 | break; |
686 | 674 | ||
687 | case BUTTON_RIGHT: | 675 | case SETTINGS_INC: |
688 | currval++; | 676 | currval++; |
689 | if(currval > 10) | 677 | if(currval > 10) |
690 | currval = 0; | 678 | currval = 0; |
@@ -727,20 +715,25 @@ bool dbg_rtc(void) | |||
727 | 715 | ||
728 | switch(button) | 716 | switch(button) |
729 | { | 717 | { |
730 | case BUTTON_DOWN: | 718 | case SETTINGS_INC: |
731 | if (addr < 63-16) { addr += 16; } | 719 | if (addr < 63-16) { addr += 16; } |
732 | break; | 720 | break; |
733 | case BUTTON_UP: | 721 | |
734 | if (addr) { addr -= 16; } | 722 | case SETTINGS_DEC: |
735 | break; | 723 | if (addr) { addr -= 16; } |
736 | case BUTTON_F2: | 724 | break; |
737 | /* clear the user RAM space */ | 725 | |
738 | for (c = 0; c <= 43; c++) | 726 | #ifdef BUTTON_F2 |
739 | rtc_write(0x14 + c, 0); | 727 | case BUTTON_F2: |
740 | break; | 728 | /* clear the user RAM space */ |
741 | case BUTTON_OFF | BUTTON_REL: | 729 | for (c = 0; c <= 43; c++) |
742 | case BUTTON_LEFT | BUTTON_REL: | 730 | rtc_write(0x14 + c, 0); |
743 | return false; | 731 | break; |
732 | #endif | ||
733 | |||
734 | case SETTINGS_OK: | ||
735 | case SETTINGS_CANCEL: | ||
736 | return false; | ||
744 | } | 737 | } |
745 | } | 738 | } |
746 | return false; | 739 | return false; |
@@ -781,26 +774,17 @@ bool dbg_mas(void) | |||
781 | 774 | ||
782 | switch(button_get_w_tmo(HZ/16)) | 775 | switch(button_get_w_tmo(HZ/16)) |
783 | { | 776 | { |
784 | #ifdef HAVE_RECORDER_KEYPAD | 777 | case SETTINGS_INC: |
785 | case BUTTON_DOWN: | 778 | addr = (addr + NUMROWS) & 0xFF; /* register addrs are 8 bit */ |
786 | #else | 779 | break; |
787 | case BUTTON_RIGHT: | 780 | |
788 | #endif | 781 | case SETTINGS_DEC: |
789 | addr = (addr + NUMROWS) & 0xFF; /* register addrs are 8 bit */ | 782 | addr = (addr - NUMROWS) & 0xFF; /* register addrs are 8 bit */ |
790 | break; | 783 | break; |
791 | #ifdef HAVE_RECORDER_KEYPAD | 784 | |
792 | case BUTTON_UP: | 785 | case SETTINGS_OK: |
793 | #else | 786 | case SETTINGS_CANCEL: |
794 | case BUTTON_LEFT: | 787 | return false; |
795 | #endif | ||
796 | addr = (addr - NUMROWS) & 0xFF; /* register addrs are 8 bit */ | ||
797 | break; | ||
798 | #ifdef HAVE_RECORDER_KEYPAD | ||
799 | case BUTTON_LEFT: | ||
800 | #else | ||
801 | case BUTTON_DOWN: | ||
802 | #endif | ||
803 | return false; | ||
804 | } | 788 | } |
805 | } | 789 | } |
806 | return false; | 790 | return false; |
@@ -830,15 +814,16 @@ bool dbg_mas_codec(void) | |||
830 | 814 | ||
831 | switch(button_get_w_tmo(HZ/16)) | 815 | switch(button_get_w_tmo(HZ/16)) |
832 | { | 816 | { |
833 | case BUTTON_DOWN: | 817 | case SETTINGS_INC: |
834 | addr += 4; | 818 | addr += 4; |
835 | break; | 819 | break; |
836 | case BUTTON_UP: | 820 | case SETTINGS_DEC: |
837 | if (addr) { addr -= 4; } | 821 | if (addr) { addr -= 4; } |
838 | break; | 822 | break; |
839 | case BUTTON_LEFT | BUTTON_REL: | 823 | |
840 | case BUTTON_OFF | BUTTON_REL: | 824 | case SETTINGS_OK: |
841 | return false; | 825 | case SETTINGS_CANCEL: |
826 | return false; | ||
842 | } | 827 | } |
843 | } | 828 | } |
844 | return false; | 829 | return false; |
@@ -994,18 +979,18 @@ bool view_battery(void) | |||
994 | 979 | ||
995 | switch(button_get_w_tmo(HZ/2)) | 980 | switch(button_get_w_tmo(HZ/2)) |
996 | { | 981 | { |
997 | case BUTTON_UP: | 982 | case SETTINGS_DEC: |
998 | if (view) | 983 | if (view) |
999 | view--; | 984 | view--; |
1000 | break; | 985 | break; |
1001 | 986 | ||
1002 | case BUTTON_DOWN: | 987 | case SETTINGS_INC: |
1003 | if (view < 3) | 988 | if (view < 3) |
1004 | view++; | 989 | view++; |
1005 | break; | 990 | break; |
1006 | 991 | ||
1007 | case BUTTON_LEFT | BUTTON_REL: | 992 | case SETTINGS_OK: |
1008 | case BUTTON_OFF | BUTTON_REL: | 993 | case SETTINGS_CANCEL: |
1009 | return false; | 994 | return false; |
1010 | } | 995 | } |
1011 | } | 996 | } |
@@ -1031,158 +1016,159 @@ bool dbg_mas_info(void) | |||
1031 | { | 1016 | { |
1032 | switch(currval) | 1017 | switch(currval) |
1033 | { | 1018 | { |
1034 | case 0: | 1019 | case 0: |
1035 | mas_readmem(MAS_BANK_D1, 0xff7, &val, 1); | 1020 | mas_readmem(MAS_BANK_D1, 0xff7, &val, 1); |
1036 | lcd_puts(0, 0, "Design Code"); | 1021 | lcd_puts(0, 0, "Design Code"); |
1037 | snprintf(buf, 32, "%05x ", val); | 1022 | snprintf(buf, 32, "%05x ", val); |
1038 | break; | 1023 | break; |
1039 | case 1: | 1024 | case 1: |
1040 | lcd_puts(0, 0, "DC/DC mode "); | 1025 | lcd_puts(0, 0, "DC/DC mode "); |
1041 | snprintf(buf, 32, "8e: %05x ", mas_readreg(0x8e) & 0xfffff); | 1026 | snprintf(buf, 32, "8e: %05x ", mas_readreg(0x8e) & 0xfffff); |
1042 | break; | 1027 | break; |
1043 | case 2: | 1028 | case 2: |
1044 | lcd_puts(0, 0, "Mute/Bypass"); | 1029 | lcd_puts(0, 0, "Mute/Bypass"); |
1045 | snprintf(buf, 32, "aa: %05x ", mas_readreg(0xaa) & 0xfffff); | 1030 | snprintf(buf, 32, "aa: %05x ", mas_readreg(0xaa) & 0xfffff); |
1046 | break; | 1031 | break; |
1047 | case 3: | 1032 | case 3: |
1048 | lcd_puts(0, 0, "PIOData "); | 1033 | lcd_puts(0, 0, "PIOData "); |
1049 | snprintf(buf, 32, "ed: %05x ", mas_readreg(0xed) & 0xfffff); | 1034 | snprintf(buf, 32, "ed: %05x ", mas_readreg(0xed) & 0xfffff); |
1050 | break; | 1035 | break; |
1051 | case 4: | 1036 | case 4: |
1052 | lcd_puts(0, 0, "Startup Cfg"); | 1037 | lcd_puts(0, 0, "Startup Cfg"); |
1053 | snprintf(buf, 32, "e6: %05x ", mas_readreg(0xe6) & 0xfffff); | 1038 | snprintf(buf, 32, "e6: %05x ", mas_readreg(0xe6) & 0xfffff); |
1054 | break; | 1039 | break; |
1055 | case 5: | 1040 | case 5: |
1056 | lcd_puts(0, 0, "KPrescale "); | 1041 | lcd_puts(0, 0, "KPrescale "); |
1057 | snprintf(buf, 32, "e7: %05x ", mas_readreg(0xe7) & 0xfffff); | 1042 | snprintf(buf, 32, "e7: %05x ", mas_readreg(0xe7) & 0xfffff); |
1058 | break; | 1043 | break; |
1059 | case 6: | 1044 | case 6: |
1060 | lcd_puts(0, 0, "KBass "); | 1045 | lcd_puts(0, 0, "KBass "); |
1061 | snprintf(buf, 32, "6b: %05x ", mas_readreg(0x6b) & 0xfffff); | 1046 | snprintf(buf, 32, "6b: %05x ", mas_readreg(0x6b) & 0xfffff); |
1062 | break; | 1047 | break; |
1063 | case 7: | 1048 | case 7: |
1064 | lcd_puts(0, 0, "KTreble "); | 1049 | lcd_puts(0, 0, "KTreble "); |
1065 | snprintf(buf, 32, "6f: %05x ", mas_readreg(0x6f) & 0xfffff); | 1050 | snprintf(buf, 32, "6f: %05x ", mas_readreg(0x6f) & 0xfffff); |
1066 | break; | 1051 | break; |
1067 | case 8: | 1052 | case 8: |
1068 | mas_readmem(MAS_BANK_D0, 0x300, &val, 1); | 1053 | mas_readmem(MAS_BANK_D0, 0x300, &val, 1); |
1069 | lcd_puts(0, 0, "Frame Count"); | 1054 | lcd_puts(0, 0, "Frame Count"); |
1070 | snprintf(buf, 32, "0/300: %04x", val & 0xffff); | 1055 | snprintf(buf, 32, "0/300: %04x", val & 0xffff); |
1071 | break; | 1056 | break; |
1072 | case 9: | 1057 | case 9: |
1073 | mas_readmem(MAS_BANK_D0, 0x301, &val, 1); | 1058 | mas_readmem(MAS_BANK_D0, 0x301, &val, 1); |
1074 | lcd_puts(0, 0, "Status1 "); | 1059 | lcd_puts(0, 0, "Status1 "); |
1075 | snprintf(buf, 32, "0/301: %04x", val & 0xffff); | 1060 | snprintf(buf, 32, "0/301: %04x", val & 0xffff); |
1076 | break; | 1061 | break; |
1077 | case 10: | 1062 | case 10: |
1078 | mas_readmem(MAS_BANK_D0, 0x302, &val, 1); | 1063 | mas_readmem(MAS_BANK_D0, 0x302, &val, 1); |
1079 | lcd_puts(0, 0, "Status2 "); | 1064 | lcd_puts(0, 0, "Status2 "); |
1080 | snprintf(buf, 32, "0/302: %04x", val & 0xffff); | 1065 | snprintf(buf, 32, "0/302: %04x", val & 0xffff); |
1081 | break; | 1066 | break; |
1082 | case 11: | 1067 | case 11: |
1083 | mas_readmem(MAS_BANK_D0, 0x303, &val, 1); | 1068 | mas_readmem(MAS_BANK_D0, 0x303, &val, 1); |
1084 | lcd_puts(0, 0, "CRC Count "); | 1069 | lcd_puts(0, 0, "CRC Count "); |
1085 | snprintf(buf, 32, "0/303: %04x", val & 0xffff); | 1070 | snprintf(buf, 32, "0/303: %04x", val & 0xffff); |
1086 | break; | 1071 | break; |
1087 | case 12: | 1072 | case 12: |
1088 | mas_readmem(MAS_BANK_D0, 0x36d, &val, 1); | 1073 | mas_readmem(MAS_BANK_D0, 0x36d, &val, 1); |
1089 | lcd_puts(0, 0, "PLLOffset48"); | 1074 | lcd_puts(0, 0, "PLLOffset48"); |
1090 | snprintf(buf, 32, "0/36d %05x", val & 0xfffff); | 1075 | snprintf(buf, 32, "0/36d %05x", val & 0xfffff); |
1091 | break; | 1076 | break; |
1092 | case 13: | 1077 | case 13: |
1093 | mas_readmem(MAS_BANK_D0, 0x32d, &val, 1); | 1078 | mas_readmem(MAS_BANK_D0, 0x32d, &val, 1); |
1094 | lcd_puts(0, 0, "PLLOffset48"); | 1079 | lcd_puts(0, 0, "PLLOffset48"); |
1095 | snprintf(buf, 32, "0/32d %05x", val & 0xfffff); | 1080 | snprintf(buf, 32, "0/32d %05x", val & 0xfffff); |
1096 | break; | 1081 | break; |
1097 | case 14: | 1082 | case 14: |
1098 | mas_readmem(MAS_BANK_D0, 0x36e, &val, 1); | 1083 | mas_readmem(MAS_BANK_D0, 0x36e, &val, 1); |
1099 | lcd_puts(0, 0, "PLLOffset44"); | 1084 | lcd_puts(0, 0, "PLLOffset44"); |
1100 | snprintf(buf, 32, "0/36e %05x", val & 0xfffff); | 1085 | snprintf(buf, 32, "0/36e %05x", val & 0xfffff); |
1101 | break; | 1086 | break; |
1102 | case 15: | 1087 | case 15: |
1103 | mas_readmem(MAS_BANK_D0, 0x32e, &val, 1); | 1088 | mas_readmem(MAS_BANK_D0, 0x32e, &val, 1); |
1104 | lcd_puts(0, 0, "PLLOffset44"); | 1089 | lcd_puts(0, 0, "PLLOffset44"); |
1105 | snprintf(buf, 32, "0/32e %05x", val & 0xfffff); | 1090 | snprintf(buf, 32, "0/32e %05x", val & 0xfffff); |
1106 | break; | 1091 | break; |
1107 | case 16: | 1092 | case 16: |
1108 | mas_readmem(MAS_BANK_D0, 0x36f, &val, 1); | 1093 | mas_readmem(MAS_BANK_D0, 0x36f, &val, 1); |
1109 | lcd_puts(0, 0, "OutputConf "); | 1094 | lcd_puts(0, 0, "OutputConf "); |
1110 | snprintf(buf, 32, "0/36f %05x", val & 0xfffff); | 1095 | snprintf(buf, 32, "0/36f %05x", val & 0xfffff); |
1111 | break; | 1096 | break; |
1112 | case 17: | 1097 | case 17: |
1113 | mas_readmem(MAS_BANK_D0, 0x32f, &val, 1); | 1098 | mas_readmem(MAS_BANK_D0, 0x32f, &val, 1); |
1114 | lcd_puts(0, 0, "OutputConf "); | 1099 | lcd_puts(0, 0, "OutputConf "); |
1115 | snprintf(buf, 32, "0/32f %05x", val & 0xfffff); | 1100 | snprintf(buf, 32, "0/32f %05x", val & 0xfffff); |
1116 | break; | 1101 | break; |
1117 | case 18: | 1102 | case 18: |
1118 | mas_readmem(MAS_BANK_D1, 0x7f8, &val, 1); | 1103 | mas_readmem(MAS_BANK_D1, 0x7f8, &val, 1); |
1119 | lcd_puts(0, 0, "LL Gain "); | 1104 | lcd_puts(0, 0, "LL Gain "); |
1120 | snprintf(buf, 32, "1/7f8 %05x", val & 0xfffff); | 1105 | snprintf(buf, 32, "1/7f8 %05x", val & 0xfffff); |
1121 | break; | 1106 | break; |
1122 | case 19: | 1107 | case 19: |
1123 | mas_readmem(MAS_BANK_D1, 0x7f9, &val, 1); | 1108 | mas_readmem(MAS_BANK_D1, 0x7f9, &val, 1); |
1124 | lcd_puts(0, 0, "LR Gain "); | 1109 | lcd_puts(0, 0, "LR Gain "); |
1125 | snprintf(buf, 32, "1/7f9 %05x", val & 0xfffff); | 1110 | snprintf(buf, 32, "1/7f9 %05x", val & 0xfffff); |
1126 | break; | 1111 | break; |
1127 | case 20: | 1112 | case 20: |
1128 | mas_readmem(MAS_BANK_D1, 0x7fa, &val, 1); | 1113 | mas_readmem(MAS_BANK_D1, 0x7fa, &val, 1); |
1129 | lcd_puts(0, 0, "RL Gain "); | 1114 | lcd_puts(0, 0, "RL Gain "); |
1130 | snprintf(buf, 32, "1/7fa %05x", val & 0xfffff); | 1115 | snprintf(buf, 32, "1/7fa %05x", val & 0xfffff); |
1131 | break; | 1116 | break; |
1132 | case 21: | 1117 | case 21: |
1133 | mas_readmem(MAS_BANK_D1, 0x7fb, &val, 1); | 1118 | mas_readmem(MAS_BANK_D1, 0x7fb, &val, 1); |
1134 | lcd_puts(0, 0, "RR Gain "); | 1119 | lcd_puts(0, 0, "RR Gain "); |
1135 | snprintf(buf, 32, "1/7fb %05x", val & 0xfffff); | 1120 | snprintf(buf, 32, "1/7fb %05x", val & 0xfffff); |
1136 | break; | 1121 | break; |
1137 | case 22: | 1122 | case 22: |
1138 | lcd_puts(0, 0, "L Trailbits"); | 1123 | lcd_puts(0, 0, "L Trailbits"); |
1139 | snprintf(buf, 32, "c5: %05x ", mas_readreg(0xc5) & 0xfffff); | 1124 | snprintf(buf, 32, "c5: %05x ", mas_readreg(0xc5) & 0xfffff); |
1140 | break; | 1125 | break; |
1141 | case 23: | 1126 | case 23: |
1142 | lcd_puts(0, 0, "R Trailbits"); | 1127 | lcd_puts(0, 0, "R Trailbits"); |
1143 | snprintf(buf, 32, "c6: %05x ", mas_readreg(0xc6) & 0xfffff); | 1128 | snprintf(buf, 32, "c6: %05x ", mas_readreg(0xc6) & 0xfffff); |
1144 | break; | 1129 | break; |
1145 | } | 1130 | } |
1146 | lcd_puts(0, 1, buf); | 1131 | lcd_puts(0, 1, buf); |
1147 | 1132 | ||
1148 | button = button_get_w_tmo(HZ/5); | 1133 | button = button_get_w_tmo(HZ/5); |
1149 | switch(button) | 1134 | switch(button) |
1150 | { | 1135 | { |
1151 | case BUTTON_STOP: | 1136 | case SETTINGS_CANCEL: |
1152 | return false; | 1137 | return false; |
1153 | 1138 | ||
1154 | case BUTTON_LEFT: | 1139 | case SETTINGS_DEC: |
1155 | currval--; | 1140 | currval--; |
1156 | if(currval < 0) | 1141 | if(currval < 0) |
1157 | currval = 23; | 1142 | currval = 23; |
1158 | break; | 1143 | break; |
1159 | 1144 | ||
1160 | case BUTTON_RIGHT: | 1145 | case SETTINGS_INC: |
1161 | currval++; | 1146 | currval++; |
1162 | if(currval > 23) | 1147 | if(currval > 23) |
1163 | currval = 0; | 1148 | currval = 0; |
1164 | break; | 1149 | break; |
1165 | case BUTTON_PLAY: | 1150 | |
1166 | pll_toggle = !pll_toggle; | 1151 | case SETTINGS_OK: |
1167 | if(pll_toggle) | 1152 | pll_toggle = !pll_toggle; |
1168 | { | 1153 | if(pll_toggle) |
1169 | /* 14.31818 MHz crystal */ | 1154 | { |
1170 | pll48 = 0x5d9d0; | 1155 | /* 14.31818 MHz crystal */ |
1171 | pll44 = 0xfffceceb; | 1156 | pll48 = 0x5d9d0; |
1172 | config = 0; | 1157 | pll44 = 0xfffceceb; |
1173 | } | 1158 | config = 0; |
1174 | else | 1159 | } |
1175 | { | 1160 | else |
1176 | /* 14.725 MHz crystal */ | 1161 | { |
1177 | pll48 = 0x2d0de; | 1162 | /* 14.725 MHz crystal */ |
1178 | pll44 = 0xfffa2319; | 1163 | pll48 = 0x2d0de; |
1179 | config = 0; | 1164 | pll44 = 0xfffa2319; |
1180 | } | 1165 | config = 0; |
1181 | mas_writemem(MAS_BANK_D0, 0x32d, &pll48, 1); | 1166 | } |
1182 | mas_writemem(MAS_BANK_D0, 0x32e, &pll44, 1); | 1167 | mas_writemem(MAS_BANK_D0, 0x32d, &pll48, 1); |
1183 | mas_writemem(MAS_BANK_D0, 0x32f, &config, 1); | 1168 | mas_writemem(MAS_BANK_D0, 0x32e, &pll44, 1); |
1184 | mas_run(0x475); | 1169 | mas_writemem(MAS_BANK_D0, 0x32f, &config, 1); |
1185 | break; | 1170 | mas_run(0x475); |
1171 | break; | ||
1186 | } | 1172 | } |
1187 | } | 1173 | } |
1188 | return false; | 1174 | return false; |
@@ -1233,23 +1219,19 @@ static bool view_runtime(void) | |||
1233 | /* Wait for a key to be pushed */ | 1219 | /* Wait for a key to be pushed */ |
1234 | key = button_get_w_tmo(HZ); | 1220 | key = button_get_w_tmo(HZ); |
1235 | switch(key) { | 1221 | switch(key) { |
1236 | #if defined(HAVE_PLAYER_KEYPAD) || defined(HAVE_NEO_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | 1222 | case SETTINGS_CANCEL: |
1237 | case BUTTON_STOP | BUTTON_REL: | ||
1238 | #elif HAVE_RECORDER_KEYPAD | ||
1239 | case BUTTON_OFF | BUTTON_REL: | ||
1240 | #endif | ||
1241 | done = true; | 1223 | done = true; |
1242 | break; | 1224 | break; |
1243 | 1225 | ||
1244 | case BUTTON_LEFT: | 1226 | case SETTINGS_INC: |
1245 | case BUTTON_RIGHT: | 1227 | case SETTINGS_DEC: |
1246 | if (state == 1) | 1228 | if (state == 1) |
1247 | state = 2; | 1229 | state = 2; |
1248 | else | 1230 | else |
1249 | state = 1; | 1231 | state = 1; |
1250 | break; | 1232 | break; |
1251 | 1233 | ||
1252 | case BUTTON_PLAY: | 1234 | case SETTINGS_OK: |
1253 | lcd_clear_display(); | 1235 | lcd_clear_display(); |
1254 | lcd_puts(0,0,"Clear time?"); | 1236 | lcd_puts(0,0,"Clear time?"); |
1255 | lcd_puts(0,1,"PLAY = Yes"); | 1237 | lcd_puts(0,1,"PLAY = Yes"); |
@@ -1258,7 +1240,7 @@ static bool view_runtime(void) | |||
1258 | key = button_get_w_tmo(HZ*10); | 1240 | key = button_get_w_tmo(HZ*10); |
1259 | if ( key & BUTTON_REL ) | 1241 | if ( key & BUTTON_REL ) |
1260 | continue; | 1242 | continue; |
1261 | if ( key == BUTTON_PLAY ) { | 1243 | if ( key == SETTINGS_OK ) { |
1262 | if ( state == 1 ) | 1244 | if ( state == 1 ) |
1263 | global_settings.runtime = 0; | 1245 | global_settings.runtime = 0; |
1264 | else | 1246 | else |
@@ -1412,25 +1394,21 @@ static bool dbg_disk_info(void) | |||
1412 | /* Wait for a key to be pushed */ | 1394 | /* Wait for a key to be pushed */ |
1413 | key = button_get_w_tmo(HZ*5); | 1395 | key = button_get_w_tmo(HZ*5); |
1414 | switch(key) { | 1396 | switch(key) { |
1415 | #if defined(HAVE_PLAYER_KEYPAD) || defined(HAVE_NEO_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | 1397 | case SETTINGS_CANCEL: |
1416 | case BUTTON_STOP | BUTTON_REL: | ||
1417 | #else | ||
1418 | case BUTTON_OFF | BUTTON_REL: | ||
1419 | #endif | ||
1420 | done = true; | 1398 | done = true; |
1421 | break; | 1399 | break; |
1422 | 1400 | ||
1423 | case BUTTON_LEFT: | 1401 | case SETTINGS_DEC: |
1424 | if (--page < 0) | 1402 | if (--page < 0) |
1425 | page = max_page; | 1403 | page = max_page; |
1426 | break; | 1404 | break; |
1427 | 1405 | ||
1428 | case BUTTON_RIGHT: | 1406 | case SETTINGS_INC: |
1429 | if (++page > max_page) | 1407 | if (++page > max_page) |
1430 | page = 0; | 1408 | page = 0; |
1431 | break; | 1409 | break; |
1432 | 1410 | ||
1433 | case BUTTON_PLAY: | 1411 | case SETTINGS_OK: |
1434 | if (page == 3) { | 1412 | if (page == 3) { |
1435 | mpeg_stop(); /* stop playback, to avoid disk access */ | 1413 | mpeg_stop(); /* stop playback, to avoid disk access */ |
1436 | lcd_clear_display(); | 1414 | lcd_clear_display(); |
@@ -1498,11 +1476,7 @@ bool dbg_fm_radio(void) | |||
1498 | 1476 | ||
1499 | switch(button) | 1477 | switch(button) |
1500 | { | 1478 | { |
1501 | #ifdef HAVE_RECORDER_KEYPAD | 1479 | case SETTINGS_CANCEL: |
1502 | case BUTTON_OFF: | ||
1503 | #else | ||
1504 | case BUTTON_STOP: | ||
1505 | #endif | ||
1506 | return false; | 1480 | return false; |
1507 | } | 1481 | } |
1508 | } | 1482 | } |
diff --git a/apps/main.c b/apps/main.c index 54d3955f4d..70dc9e2fed 100644 --- a/apps/main.c +++ b/apps/main.c | |||
@@ -169,7 +169,7 @@ void init(void) | |||
169 | lcd_puts(0, 1, str); | 169 | lcd_puts(0, 1, str); |
170 | lcd_puts(0, 3, "Press ON to debug"); | 170 | lcd_puts(0, 3, "Press ON to debug"); |
171 | lcd_update(); | 171 | lcd_update(); |
172 | while(button_get(true) != BUTTON_ON); | 172 | while(!(button_get(true) & BUTTON_REL)); |
173 | dbg_ports(); | 173 | dbg_ports(); |
174 | #endif | 174 | #endif |
175 | panicf("ata: %d", rc); | 175 | panicf("ata: %d", rc); |
diff --git a/apps/main_menu.c b/apps/main_menu.c index 1d2978e65e..da3d8ad5c1 100644 --- a/apps/main_menu.c +++ b/apps/main_menu.c | |||
@@ -231,24 +231,19 @@ bool show_info(void) | |||
231 | /* Wait for a key to be pushed */ | 231 | /* Wait for a key to be pushed */ |
232 | key = button_get_w_tmo(HZ*5); | 232 | key = button_get_w_tmo(HZ*5); |
233 | switch(key) { | 233 | switch(key) { |
234 | #if defined(HAVE_PLAYER_KEYPAD) || defined(HAVE_NEO_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | 234 | case SETTINGS_OK: |
235 | case BUTTON_STOP | BUTTON_REL: | 235 | case SETTINGS_CANCEL: |
236 | #else | ||
237 | case BUTTON_LEFT | BUTTON_REL: | ||
238 | case BUTTON_OFF | BUTTON_REL: | ||
239 | #endif | ||
240 | done = true; | 236 | done = true; |
241 | break; | 237 | break; |
242 | 238 | ||
243 | #if defined(HAVE_RECORDER_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | 239 | case SETTINGS_INC: |
244 | case BUTTON_LEFT: | 240 | case SETTINGS_DEC: |
245 | case BUTTON_RIGHT: | ||
246 | if (state == 1) | 241 | if (state == 1) |
247 | state = 2; | 242 | state = 2; |
248 | else | 243 | else |
249 | state = 1; | 244 | state = 1; |
250 | break; | 245 | break; |
251 | #endif | 246 | |
252 | default: | 247 | default: |
253 | if(default_event_handler(key) == SYS_USB_CONNECTED) | 248 | if(default_event_handler(key) == SYS_USB_CONNECTED) |
254 | return true; | 249 | return true; |
diff --git a/apps/menu.c b/apps/menu.c index fccc88479b..e999c5f774 100644 --- a/apps/menu.c +++ b/apps/menu.c | |||
@@ -288,11 +288,17 @@ int menu_show(int m) | |||
288 | } | 288 | } |
289 | 289 | ||
290 | menu_lines = height / fh; | 290 | menu_lines = height / fh; |
291 | #else | ||
292 | int menu_lines = MENU_LINES; | ||
291 | #endif | 293 | #endif |
292 | 294 | ||
293 | /* Put the cursor on the first line and draw the menu */ | 295 | /* Put the cursor on the first line and draw the menu */ |
294 | put_cursor(m, menus[m].cursor); | 296 | put_cursor(m, menus[m].cursor); |
295 | 297 | ||
298 | /* wait until all keys are released */ | ||
299 | while (button_get(false) != BUTTON_NONE) | ||
300 | yield(); | ||
301 | |||
296 | while (!exit) { | 302 | while (!exit) { |
297 | key = button_get_w_tmo(HZ/2); | 303 | key = button_get_w_tmo(HZ/2); |
298 | 304 | ||
@@ -308,25 +314,15 @@ int menu_show(int m) | |||
308 | key = menus[m].callback(key, m); | 314 | key = menus[m].callback(key, m); |
309 | 315 | ||
310 | switch( key ) { | 316 | switch( key ) { |
311 | 317 | case MENU_PREV: | |
312 | #ifdef HAVE_RECORDER_KEYPAD | 318 | case MENU_PREV | BUTTON_REPEAT: |
313 | case BUTTON_UP: | ||
314 | case BUTTON_UP | BUTTON_REPEAT: | ||
315 | #else | ||
316 | case BUTTON_LEFT: | ||
317 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
318 | #endif | ||
319 | if (menus[m].cursor) { | 319 | if (menus[m].cursor) { |
320 | /* move up */ | 320 | /* move up */ |
321 | put_cursor(m, menus[m].cursor-1); | 321 | put_cursor(m, menus[m].cursor-1); |
322 | } | 322 | } |
323 | else { | 323 | else { |
324 | /* move to bottom */ | 324 | /* move to bottom */ |
325 | #ifdef HAVE_RECORDER_KEYPAD | ||
326 | menus[m].top = menus[m].itemcount-(menu_lines+1); | 325 | menus[m].top = menus[m].itemcount-(menu_lines+1); |
327 | #else | ||
328 | menus[m].top = menus[m].itemcount-3; | ||
329 | #endif | ||
330 | if (menus[m].top < 0) | 326 | if (menus[m].top < 0) |
331 | menus[m].top = 0; | 327 | menus[m].top = 0; |
332 | menus[m].cursor = menus[m].itemcount-1; | 328 | menus[m].cursor = menus[m].itemcount-1; |
@@ -334,13 +330,8 @@ int menu_show(int m) | |||
334 | } | 330 | } |
335 | break; | 331 | break; |
336 | 332 | ||
337 | #ifdef HAVE_RECORDER_KEYPAD | 333 | case MENU_NEXT: |
338 | case BUTTON_DOWN: | 334 | case MENU_NEXT | BUTTON_REPEAT: |
339 | case BUTTON_DOWN | BUTTON_REPEAT: | ||
340 | #else | ||
341 | case BUTTON_RIGHT: | ||
342 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
343 | #endif | ||
344 | if (menus[m].cursor < menus[m].itemcount-1) { | 335 | if (menus[m].cursor < menus[m].itemcount-1) { |
345 | /* move down */ | 336 | /* move down */ |
346 | put_cursor(m, menus[m].cursor+1); | 337 | put_cursor(m, menus[m].cursor+1); |
@@ -353,22 +344,23 @@ int menu_show(int m) | |||
353 | } | 344 | } |
354 | break; | 345 | break; |
355 | 346 | ||
356 | #ifdef HAVE_RECORDER_KEYPAD | 347 | case MENU_ENTER: |
357 | case BUTTON_RIGHT: | 348 | #ifdef MENU_ENTER2 |
349 | case MENU_ENTER2: | ||
358 | #endif | 350 | #endif |
359 | case BUTTON_PLAY: | ||
360 | /* Erase current display state */ | 351 | /* Erase current display state */ |
361 | lcd_clear_display(); | 352 | lcd_clear_display(); |
362 | return menus[m].cursor; | 353 | return menus[m].cursor; |
363 | 354 | ||
364 | #ifdef HAVE_RECORDER_KEYPAD | 355 | case MENU_EXIT: |
365 | case BUTTON_LEFT: | 356 | case MENU_EXIT | BUTTON_REPEAT: |
366 | case BUTTON_F1: | 357 | #ifdef MENU_EXIT2 |
367 | case BUTTON_OFF | BUTTON_REPEAT: | 358 | case MENU_EXIT2: |
368 | #else | 359 | case MENU_EXIT2 | BUTTON_REPEAT: |
369 | case BUTTON_STOP: | 360 | #endif |
370 | case BUTTON_MENU: | 361 | #ifdef MENU_EXIT3 |
371 | case BUTTON_STOP | BUTTON_REPEAT: | 362 | case MENU_EXIT3: |
363 | case MENU_EXIT3 | BUTTON_REPEAT: | ||
372 | #endif | 364 | #endif |
373 | lcd_stop_scroll(); | 365 | lcd_stop_scroll(); |
374 | exit = true; | 366 | exit = true; |
@@ -388,18 +380,21 @@ int menu_show(int m) | |||
388 | 380 | ||
389 | bool menu_run(int m) | 381 | bool menu_run(int m) |
390 | { | 382 | { |
391 | bool stop=false; | 383 | while (1) { |
392 | while (!stop) { | 384 | switch (menu_show(m)) |
393 | int result=menu_show(m); | 385 | { |
394 | if (result == MENU_SELECTED_EXIT) | 386 | case MENU_SELECTED_EXIT: |
395 | return false; | 387 | return false; |
396 | else if (result == MENU_ATTACHED_USB) | 388 | |
397 | return true; | 389 | case MENU_ATTACHED_USB: |
398 | if (menus[m].items[menus[m].cursor].function()) { | 390 | return true; |
399 | return true; | 391 | |
392 | default: | ||
393 | if (menus[m].items[menus[m].cursor].function()) | ||
394 | return true; | ||
395 | } | ||
400 | } | 396 | } |
401 | } | 397 | return false; |
402 | return false; | ||
403 | } | 398 | } |
404 | 399 | ||
405 | /* | 400 | /* |
diff --git a/apps/menu.h b/apps/menu.h index 12d934fc18..99ef3443ba 100644 --- a/apps/menu.h +++ b/apps/menu.h | |||
@@ -22,6 +22,32 @@ | |||
22 | 22 | ||
23 | #include <stdbool.h> | 23 | #include <stdbool.h> |
24 | 24 | ||
25 | /* button definitions */ | ||
26 | #ifdef HAVE_RECORDER_KEYPAD | ||
27 | #define MENU_NEXT BUTTON_DOWN | ||
28 | #define MENU_PREV BUTTON_UP | ||
29 | #define MENU_EXIT (BUTTON_LEFT | BUTTON_REL) | ||
30 | #define MENU_EXIT2 (BUTTON_OFF | BUTTON_REL) | ||
31 | #define MENU_EXIT3 (BUTTON_F1 | BUTTON_REL) | ||
32 | #define MENU_ENTER (BUTTON_RIGHT | BUTTON_REL) | ||
33 | #define MENU_ENTER2 (BUTTON_PLAY | BUTTON_REL) | ||
34 | |||
35 | #elif defined HAVE_PLAYER_KEYPAD | ||
36 | #define MENU_NEXT BUTTON_RIGHT | ||
37 | #define MENU_PREV BUTTON_LEFT | ||
38 | #define MENU_EXIT (BUTTON_STOP | BUTTON_REL) | ||
39 | #define MENU_EXIT2 (BUTTON_MENU | BUTTON_REL) | ||
40 | #define MENU_ENTER (BUTTON_PLAY | BUTTON_REL) | ||
41 | |||
42 | #elif defined HAVE_ONDIO_KEYPAD | ||
43 | #define MENU_NEXT BUTTON_DOWN | ||
44 | #define MENU_PREV BUTTON_UP | ||
45 | #define MENU_EXIT (BUTTON_LEFT | BUTTON_REL) | ||
46 | #define MENU_EXIT2 (BUTTON_MENU | BUTTON_REL) | ||
47 | #define MENU_ENTER (BUTTON_RIGHT | BUTTON_REL) | ||
48 | |||
49 | #endif | ||
50 | |||
25 | struct menu_item { | 51 | struct menu_item { |
26 | unsigned char *desc; /* string or ID */ | 52 | unsigned char *desc; /* string or ID */ |
27 | bool (*function) (void); /* return true if USB was connected */ | 53 | bool (*function) (void); /* return true if USB was connected */ |
diff --git a/apps/misc.c b/apps/misc.c index fc84386d56..ced0668ae6 100644 --- a/apps/misc.c +++ b/apps/misc.c | |||
@@ -16,6 +16,7 @@ | |||
16 | * KIND, either express or implied. | 16 | * KIND, either express or implied. |
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | #include <stdlib.h> | ||
19 | #include <ctype.h> | 20 | #include <ctype.h> |
20 | #include "lang.h" | 21 | #include "lang.h" |
21 | #include "string.h" | 22 | #include "string.h" |
@@ -206,7 +207,9 @@ bool settings_parseline(char* line, char** name, char** value) | |||
206 | 207 | ||
207 | bool clean_shutdown(void) | 208 | bool clean_shutdown(void) |
208 | { | 209 | { |
209 | #ifndef SIMULATOR | 210 | #ifdef SIMULATOR |
211 | exit(0); | ||
212 | #else | ||
210 | if(!charger_inserted()) | 213 | if(!charger_inserted()) |
211 | { | 214 | { |
212 | lcd_clear_display(); | 215 | lcd_clear_display(); |
diff --git a/apps/onplay.c b/apps/onplay.c index 5ef595a774..41e8d2d192 100644 --- a/apps/onplay.c +++ b/apps/onplay.c | |||
@@ -116,21 +116,22 @@ static bool add_to_playlist(int position, bool queue) | |||
116 | while (!exit) { | 116 | while (!exit) { |
117 | int btn = button_get(true); | 117 | int btn = button_get(true); |
118 | switch (btn) { | 118 | switch (btn) { |
119 | case BUTTON_PLAY: | 119 | case SETTINGS_OK: |
120 | recurse = true; | 120 | recurse = true; |
121 | exit = true; | ||
122 | break; | ||
123 | default: | ||
124 | /* ignore button releases */ | ||
125 | if (!(btn & BUTTON_REL)) | ||
126 | exit = true; | 121 | exit = true; |
127 | break; | 122 | break; |
123 | |||
124 | default: | ||
125 | /* ignore button releases */ | ||
126 | if (!(btn & BUTTON_REL)) | ||
127 | exit = true; | ||
128 | break; | ||
128 | } | 129 | } |
129 | } | 130 | } |
130 | } | 131 | } |
131 | 132 | ||
132 | playlist_insert_directory(NULL, selected_file, position, queue, | 133 | playlist_insert_directory(NULL, selected_file, position, queue, |
133 | recurse); | 134 | recurse); |
134 | } | 135 | } |
135 | else if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_M3U) | 136 | else if ((selected_file_attr & TREE_ATTR_MASK) == TREE_ATTR_M3U) |
136 | playlist_insert_playlist(NULL, selected_file, position, queue); | 137 | playlist_insert_playlist(NULL, selected_file, position, queue); |
@@ -303,34 +304,34 @@ static bool delete_handler(bool is_dir) | |||
303 | while (!exit) { | 304 | while (!exit) { |
304 | int btn = button_get(true); | 305 | int btn = button_get(true); |
305 | switch (btn) { | 306 | switch (btn) { |
306 | case BUTTON_PLAY: | 307 | case SETTINGS_OK: |
307 | if (is_dir) | 308 | if (is_dir) |
308 | { | 309 | { |
309 | char pathname[MAX_PATH]; /* space to go deep */ | 310 | char pathname[MAX_PATH]; /* space to go deep */ |
310 | strncpy(pathname, selected_file, sizeof pathname); | 311 | strncpy(pathname, selected_file, sizeof pathname); |
311 | res = remove_dir(pathname, sizeof(pathname)); | 312 | res = remove_dir(pathname, sizeof(pathname)); |
312 | } | 313 | } |
313 | else | 314 | else |
314 | { | 315 | { |
315 | res = remove(selected_file); | 316 | res = remove(selected_file); |
316 | } | 317 | } |
317 | 318 | ||
318 | if (!res) { | 319 | if (!res) { |
319 | onplay_result = ONPLAY_RELOAD_DIR; | 320 | onplay_result = ONPLAY_RELOAD_DIR; |
320 | lcd_clear_display(); | 321 | lcd_clear_display(); |
321 | lcd_puts(0,0,str(LANG_DELETED)); | 322 | lcd_puts(0,0,str(LANG_DELETED)); |
322 | lcd_puts_scroll(0,1,selected_file); | 323 | lcd_puts_scroll(0,1,selected_file); |
323 | lcd_update(); | 324 | lcd_update(); |
324 | sleep(HZ); | 325 | sleep(HZ); |
325 | exit = true; | 326 | exit = true; |
326 | } | 327 | } |
327 | break; | 328 | break; |
328 | 329 | ||
329 | default: | 330 | default: |
330 | /* ignore button releases */ | 331 | /* ignore button releases */ |
331 | if (!(btn & BUTTON_REL)) | 332 | if (!(btn & BUTTON_REL)) |
332 | exit = true; | 333 | exit = true; |
333 | break; | 334 | break; |
334 | } | 335 | } |
335 | } | 336 | } |
336 | return false; | 337 | return false; |
diff --git a/apps/player/keyboard.c b/apps/player/keyboard.c index 495102b29a..7752ce3ff7 100644 --- a/apps/player/keyboard.c +++ b/apps/player/keyboard.c | |||
@@ -181,14 +181,15 @@ int kbd_input(char* text, int buflen) | |||
181 | case MENU_LINE_INPUT: | 181 | case MENU_LINE_INPUT: |
182 | switch (button_pressed) | 182 | switch (button_pressed) |
183 | { | 183 | { |
184 | case BUTTON_UP: | 184 | case BUTTON_PLAY: |
185 | case BUTTON_UP | BUTTON_REPEAT: | 185 | case BUTTON_PLAY | BUTTON_REPEAT: |
186 | if (cursor_pos<len) | 186 | if (cursor_pos<len) |
187 | cursor_pos++; | 187 | cursor_pos++; |
188 | button_pressed=BUTTON_NONE; | 188 | button_pressed=BUTTON_NONE; |
189 | break; | 189 | break; |
190 | case BUTTON_DOWN: | 190 | |
191 | case BUTTON_DOWN | BUTTON_REPEAT: | 191 | case BUTTON_STOP: |
192 | case BUTTON_STOP | BUTTON_REPEAT: | ||
192 | if (cursor_pos>0) | 193 | if (cursor_pos>0) |
193 | cursor_pos--; | 194 | cursor_pos--; |
194 | button_pressed=BUTTON_NONE; | 195 | button_pressed=BUTTON_NONE; |
@@ -199,13 +200,13 @@ int kbd_input(char* text, int buflen) | |||
199 | case MENU_LINE_NEWCHARS: | 200 | case MENU_LINE_NEWCHARS: |
200 | switch (button_pressed) | 201 | switch (button_pressed) |
201 | { | 202 | { |
202 | case BUTTON_UP: | 203 | case BUTTON_PLAY: |
203 | case BUTTON_UP | BUTTON_REPEAT: | 204 | case BUTTON_PLAY | BUTTON_REPEAT: |
204 | x=(x+1+linelen)%linelen; | 205 | x=(x+1+linelen)%linelen; |
205 | button_pressed=BUTTON_NONE; | 206 | button_pressed=BUTTON_NONE; |
206 | break; | 207 | break; |
207 | case BUTTON_DOWN: | 208 | case BUTTON_STOP: |
208 | case BUTTON_DOWN | BUTTON_REPEAT: | 209 | case BUTTON_STOP | BUTTON_REPEAT: |
209 | x=(x-1+linelen)%linelen; | 210 | x=(x-1+linelen)%linelen; |
210 | button_pressed=BUTTON_NONE; | 211 | button_pressed=BUTTON_NONE; |
211 | break; | 212 | break; |
diff --git a/apps/playlist.c b/apps/playlist.c index 5725c4be85..ecdb45c104 100644 --- a/apps/playlist.c +++ b/apps/playlist.c | |||
@@ -564,11 +564,7 @@ static int add_directory_to_playlist(struct playlist_info* playlist, | |||
564 | for (i=0; i<num_files; i++) | 564 | for (i=0; i<num_files; i++) |
565 | { | 565 | { |
566 | /* user abort */ | 566 | /* user abort */ |
567 | #if defined(HAVE_PLAYER_KEYPAD) || defined(HAVE_NEO_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | 567 | if (button_get(false) == SETTINGS_CANCEL) |
568 | if (button_get(false) == BUTTON_STOP) | ||
569 | #else | ||
570 | if (button_get(false) == BUTTON_OFF) | ||
571 | #endif | ||
572 | { | 568 | { |
573 | result = -1; | 569 | result = -1; |
574 | break; | 570 | break; |
@@ -2016,11 +2012,7 @@ int playlist_insert_playlist(struct playlist_info* playlist, char *filename, | |||
2016 | while ((max = read_line(fd, temp_buf, sizeof(temp_buf))) > 0) | 2012 | while ((max = read_line(fd, temp_buf, sizeof(temp_buf))) > 0) |
2017 | { | 2013 | { |
2018 | /* user abort */ | 2014 | /* user abort */ |
2019 | #if defined(HAVE_PLAYER_KEYPAD) || defined(HAVE_NEO_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | 2015 | if (button_get(false) == SETTINGS_CANCEL) |
2020 | if (button_get(false) == BUTTON_STOP) | ||
2021 | #else | ||
2022 | if (button_get(false) == BUTTON_OFF) | ||
2023 | #endif | ||
2024 | break; | 2016 | break; |
2025 | 2017 | ||
2026 | if (temp_buf[0] != '#' && temp_buf[0] != '\0') | 2018 | if (temp_buf[0] != '#' && temp_buf[0] != '\0') |
@@ -2384,11 +2376,7 @@ int playlist_save(struct playlist_info* playlist, char *filename) | |||
2384 | int seek; | 2376 | int seek; |
2385 | 2377 | ||
2386 | /* user abort */ | 2378 | /* user abort */ |
2387 | #if defined(HAVE_PLAYER_KEYPAD) || defined(HAVE_NEO_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | 2379 | if (button_get(false) == SETTINGS_CANCEL) |
2388 | if (button_get(false) == BUTTON_STOP) | ||
2389 | #else | ||
2390 | if (button_get(false) == BUTTON_OFF) | ||
2391 | #endif | ||
2392 | break; | 2380 | break; |
2393 | 2381 | ||
2394 | control_file = playlist->indices[index] & PLAYLIST_INSERT_TYPE_MASK; | 2382 | control_file = playlist->indices[index] & PLAYLIST_INSERT_TYPE_MASK; |
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c index f093efd172..4268a28c86 100644 --- a/apps/playlist_viewer.c +++ b/apps/playlist_viewer.c | |||
@@ -130,7 +130,7 @@ static void update_display_line(int line, bool scroll); | |||
130 | static void scroll_display(int lines); | 130 | static void scroll_display(int lines); |
131 | static void update_first_index(void); | 131 | static void update_first_index(void); |
132 | static bool update_playlist(bool force); | 132 | static bool update_playlist(bool force); |
133 | #ifdef BUTTON_ON | 133 | #ifdef TREE_SHIFT |
134 | static int onplay_menu(int index); | 134 | static int onplay_menu(int index); |
135 | #endif | 135 | #endif |
136 | static bool viewer_menu(void); | 136 | static bool viewer_menu(void); |
@@ -672,7 +672,7 @@ static bool update_playlist(bool force) | |||
672 | return true; | 672 | return true; |
673 | } | 673 | } |
674 | 674 | ||
675 | #ifdef BUTTON_ON | 675 | #ifdef TREE_SHIFT |
676 | /* Menu of playlist commands. Invoked via ON+PLAY on main viewer screen. | 676 | /* Menu of playlist commands. Invoked via ON+PLAY on main viewer screen. |
677 | Returns -1 if USB attached, 0 if no playlist change, and 1 if playlist | 677 | Returns -1 if USB attached, 0 if no playlist change, and 1 if playlist |
678 | changed. */ | 678 | changed. */ |
@@ -902,67 +902,37 @@ bool playlist_viewer_ex(char* filename) | |||
902 | 902 | ||
903 | switch (button) | 903 | switch (button) |
904 | { | 904 | { |
905 | #ifdef HAVE_RECORDER_KEYPAD | 905 | case TREE_EXIT: |
906 | case BUTTON_OFF: | ||
907 | case BUTTON_LEFT: | ||
908 | #else | ||
909 | case BUTTON_STOP: | ||
910 | #endif | ||
911 | exit = true; | 906 | exit = true; |
912 | break; | 907 | break; |
913 | 908 | ||
914 | #ifdef HAVE_RECORDER_KEYPAD | 909 | case TREE_PREV: |
915 | case BUTTON_UP: | 910 | case TREE_PREV | BUTTON_REPEAT: |
916 | case BUTTON_UP | BUTTON_REPEAT: | ||
917 | #else | ||
918 | case BUTTON_LEFT: | ||
919 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
920 | #endif | ||
921 | scroll_display(-1); | 911 | scroll_display(-1); |
922 | update = true; | 912 | update = true; |
923 | break; | 913 | break; |
924 | 914 | ||
925 | #ifdef HAVE_RECORDER_KEYPAD | 915 | case TREE_NEXT: |
926 | case BUTTON_DOWN: | 916 | case TREE_NEXT | BUTTON_REPEAT: |
927 | case BUTTON_DOWN | BUTTON_REPEAT: | ||
928 | #else | ||
929 | case BUTTON_RIGHT: | ||
930 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
931 | #endif | ||
932 | scroll_display(1); | 917 | scroll_display(1); |
933 | update = true; | 918 | update = true; |
934 | break; | 919 | break; |
935 | 920 | ||
936 | #ifdef BUTTON_ON | 921 | case TREE_SHIFT | TREE_PREV: |
937 | #ifdef HAVE_RECORDER_KEYPAD | 922 | case TREE_SHIFT | TREE_PREV | BUTTON_REPEAT: |
938 | case BUTTON_ON | BUTTON_UP: | ||
939 | case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT: | ||
940 | #else | ||
941 | case BUTTON_ON | BUTTON_LEFT: | ||
942 | case BUTTON_ON | BUTTON_LEFT | BUTTON_REPEAT: | ||
943 | #endif | ||
944 | /* Pageup */ | 923 | /* Pageup */ |
945 | scroll_display(-viewer.num_display_lines); | 924 | scroll_display(-viewer.num_display_lines); |
946 | update = true; | 925 | update = true; |
947 | break; | 926 | break; |
948 | 927 | ||
949 | #ifdef HAVE_RECORDER_KEYPAD | 928 | case TREE_SHIFT | TREE_NEXT: |
950 | case BUTTON_ON | BUTTON_DOWN: | 929 | case TREE_SHIFT | TREE_NEXT | BUTTON_REPEAT: |
951 | case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT: | ||
952 | #else | ||
953 | case BUTTON_ON | BUTTON_RIGHT: | ||
954 | case BUTTON_ON | BUTTON_RIGHT | BUTTON_REPEAT: | ||
955 | #endif | ||
956 | /* Pagedown */ | 930 | /* Pagedown */ |
957 | scroll_display(viewer.num_display_lines); | 931 | scroll_display(viewer.num_display_lines); |
958 | update = true; | 932 | update = true; |
959 | break; | 933 | break; |
960 | #endif /* BUTTON_ON */ | 934 | |
961 | 935 | case TREE_RUN: | |
962 | #ifdef HAVE_RECORDER_KEYPAD | ||
963 | case BUTTON_RIGHT: | ||
964 | #endif | ||
965 | case BUTTON_PLAY: | ||
966 | if (viewer.move_track >= 0) | 936 | if (viewer.move_track >= 0) |
967 | { | 937 | { |
968 | /* Move track */ | 938 | /* Move track */ |
@@ -1003,8 +973,7 @@ bool playlist_viewer_ex(char* filename) | |||
1003 | update = true; | 973 | update = true; |
1004 | break; | 974 | break; |
1005 | 975 | ||
1006 | #ifdef BUTTON_ON | 976 | case TREE_SHIFT | TREE_RUN: |
1007 | case BUTTON_ON | BUTTON_PLAY: | ||
1008 | { | 977 | { |
1009 | /* ON+PLAY menu */ | 978 | /* ON+PLAY menu */ |
1010 | int ret; | 979 | int ret; |
@@ -1030,12 +999,8 @@ bool playlist_viewer_ex(char* filename) | |||
1030 | update = true; | 999 | update = true; |
1031 | break; | 1000 | break; |
1032 | } | 1001 | } |
1033 | #endif /* BUTTON_ON */ | 1002 | |
1034 | #ifdef HAVE_RECORDER_KEYPAD | 1003 | case TREE_MENU: |
1035 | case BUTTON_F1: | ||
1036 | #else | ||
1037 | case BUTTON_MENU: | ||
1038 | #endif | ||
1039 | if (viewer_menu()) | 1004 | if (viewer_menu()) |
1040 | { | 1005 | { |
1041 | ret = true; | 1006 | ret = true; |
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c index f3ee8d82db..b501115618 100644 --- a/apps/plugins/calendar.c +++ b/apps/plugins/calendar.c | |||
@@ -71,6 +71,8 @@ static void calendar_init(struct today *today, struct shown *shown) | |||
71 | int w,h; | 71 | int w,h; |
72 | #ifdef HAVE_RTC | 72 | #ifdef HAVE_RTC |
73 | struct tm *tm; | 73 | struct tm *tm; |
74 | #else | ||
75 | (void)today; | ||
74 | #endif | 76 | #endif |
75 | rb->lcd_getstringsize("A",&w,&h); | 77 | rb->lcd_getstringsize("A",&w,&h); |
76 | if ( ((w * 14) > LCD_WIDTH) || ((h * 7) > LCD_HEIGHT) ) | 78 | if ( ((w * 14) > LCD_WIDTH) || ((h * 7) > LCD_HEIGHT) ) |
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c index 1c9ba7bed4..c1bd25e0aa 100644 --- a/apps/recorder/keyboard.c +++ b/apps/recorder/keyboard.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #define KEYBOARD_LINES 4 | 33 | #define KEYBOARD_LINES 4 |
34 | #define KEYBOARD_PAGES 3 | 34 | #define KEYBOARD_PAGES 3 |
35 | 35 | ||
36 | #ifdef HAVE_RECORDER_KEYPAD | ||
36 | static void kbd_setupkeys(const char* line[KEYBOARD_LINES], int page) | 37 | static void kbd_setupkeys(const char* line[KEYBOARD_LINES], int page) |
37 | { | 38 | { |
38 | switch (page) { | 39 | switch (page) { |
@@ -58,6 +59,7 @@ static void kbd_setupkeys(const char* line[KEYBOARD_LINES], int page) | |||
58 | break; | 59 | break; |
59 | } | 60 | } |
60 | } | 61 | } |
62 | #endif | ||
61 | 63 | ||
62 | /* helper function to spell a char if voice UI is enabled */ | 64 | /* helper function to spell a char if voice UI is enabled */ |
63 | void kbd_spellchar(char c) | 65 | void kbd_spellchar(char c) |
@@ -75,6 +77,12 @@ void kbd_spellchar(char c) | |||
75 | 77 | ||
76 | int kbd_input(char* text, int buflen) | 78 | int kbd_input(char* text, int buflen) |
77 | { | 79 | { |
80 | #ifndef HAVE_RECORDER_KEYPAD | ||
81 | (void)text; | ||
82 | (void)buflen; | ||
83 | splash(HZ*2, true, "Keyboard not implemented yet"); | ||
84 | return 0; | ||
85 | #else | ||
78 | bool done = false; | 86 | bool done = false; |
79 | int page = 0; | 87 | int page = 0; |
80 | 88 | ||
@@ -240,7 +248,6 @@ int kbd_input(char* text, int buflen) | |||
240 | kbd_spellchar(line[y][x]); | 248 | kbd_spellchar(line[y][x]); |
241 | break; | 249 | break; |
242 | 250 | ||
243 | #if (BUTTON_UP != BUTTON_PLAY) /* FixMe, this is just to make the Ondio compile */ | ||
244 | case BUTTON_UP: | 251 | case BUTTON_UP: |
245 | case BUTTON_UP | BUTTON_REPEAT: | 252 | case BUTTON_UP | BUTTON_REPEAT: |
246 | if (y) | 253 | if (y) |
@@ -249,7 +256,7 @@ int kbd_input(char* text, int buflen) | |||
249 | y = KEYBOARD_LINES - 1; | 256 | y = KEYBOARD_LINES - 1; |
250 | kbd_spellchar(line[y][x]); | 257 | kbd_spellchar(line[y][x]); |
251 | break; | 258 | break; |
252 | #endif | 259 | |
253 | case BUTTON_F3: | 260 | case BUTTON_F3: |
254 | case BUTTON_F3 | BUTTON_REPEAT: | 261 | case BUTTON_F3 | BUTTON_REPEAT: |
255 | /* backspace */ | 262 | /* backspace */ |
@@ -326,5 +333,7 @@ int kbd_input(char* text, int buflen) | |||
326 | } | 333 | } |
327 | } | 334 | } |
328 | lcd_setfont(FONT_UI); | 335 | lcd_setfont(FONT_UI); |
336 | |||
329 | return 0; | 337 | return 0; |
338 | #endif /* ONDIO */ | ||
330 | } | 339 | } |
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index 6b056dfe31..c163cc4552 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c | |||
@@ -167,6 +167,10 @@ static void remember_frequency(void) | |||
167 | 167 | ||
168 | bool radio_screen(void) | 168 | bool radio_screen(void) |
169 | { | 169 | { |
170 | #ifndef HAVE_RECORDER_KEYPAD | ||
171 | splash(HZ*2, true, "Radio not supported yet"); | ||
172 | return false; | ||
173 | #else | ||
170 | char buf[MAX_PATH]; | 174 | char buf[MAX_PATH]; |
171 | bool done = false; | 175 | bool done = false; |
172 | int button; | 176 | int button; |
@@ -554,6 +558,7 @@ bool radio_screen(void) | |||
554 | } | 558 | } |
555 | #endif | 559 | #endif |
556 | return have_recorded; | 560 | return have_recorded; |
561 | #endif /* ONDIO */ | ||
557 | } | 562 | } |
558 | 563 | ||
559 | void radio_save_presets(void) | 564 | void radio_save_presets(void) |
@@ -663,12 +668,14 @@ static bool radio_add_preset(void) | |||
663 | static int handle_radio_presets_menu_cb(int key, int m) | 668 | static int handle_radio_presets_menu_cb(int key, int m) |
664 | { | 669 | { |
665 | (void)m; | 670 | (void)m; |
671 | #ifdef HAVE_RECORDER_KEYPAD | ||
666 | switch(key) | 672 | switch(key) |
667 | { | 673 | { |
668 | case BUTTON_F3: | 674 | case BUTTON_F3: |
669 | key = BUTTON_LEFT; /* Fake an exit */ | 675 | key = BUTTON_LEFT; /* Fake an exit */ |
670 | break; | 676 | break; |
671 | } | 677 | } |
678 | #endif | ||
672 | return key; | 679 | return key; |
673 | } | 680 | } |
674 | 681 | ||
@@ -725,6 +732,11 @@ bool handle_radio_presets_menu(void) | |||
725 | 732 | ||
726 | int handle_radio_presets_cb(int key, int m) | 733 | int handle_radio_presets_cb(int key, int m) |
727 | { | 734 | { |
735 | #ifdef HAVE_ONDIO_KEYPAD | ||
736 | (void)key; | ||
737 | (void)m; | ||
738 | return BUTTON_NONE; | ||
739 | #else | ||
728 | bool ret; | 740 | bool ret; |
729 | 741 | ||
730 | switch(key) | 742 | switch(key) |
@@ -750,6 +762,7 @@ int handle_radio_presets_cb(int key, int m) | |||
750 | break; | 762 | break; |
751 | } | 763 | } |
752 | return key; | 764 | return key; |
765 | #endif | ||
753 | } | 766 | } |
754 | 767 | ||
755 | bool handle_radio_presets(void) | 768 | bool handle_radio_presets(void) |
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c index 392f20d9ed..2c39c367b8 100644 --- a/apps/recorder/recording.c +++ b/apps/recorder/recording.c | |||
@@ -166,6 +166,10 @@ int rec_create_directory(void) | |||
166 | 166 | ||
167 | bool recording_screen(void) | 167 | bool recording_screen(void) |
168 | { | 168 | { |
169 | #ifndef HAVE_RECORDING_KEYPAD | ||
170 | splash(HZ*2, true, "Recording not supported yet"); | ||
171 | return false; | ||
172 | #else | ||
169 | int button; | 173 | int button; |
170 | bool done = false; | 174 | bool done = false; |
171 | char buf[32]; | 175 | char buf[32]; |
@@ -280,13 +284,12 @@ bool recording_screen(void) | |||
280 | } | 284 | } |
281 | break; | 285 | break; |
282 | 286 | ||
283 | #if (BUTTON_UP != BUTTON_PLAY) /* FixMe, this is just to make the Ondio compile */ | ||
284 | case BUTTON_UP: | 287 | case BUTTON_UP: |
285 | cursor--; | 288 | cursor--; |
286 | adjust_cursor(); | 289 | adjust_cursor(); |
287 | update_countdown = 1; /* Update immediately */ | 290 | update_countdown = 1; /* Update immediately */ |
288 | break; | 291 | break; |
289 | #endif | 292 | |
290 | case BUTTON_DOWN: | 293 | case BUTTON_DOWN: |
291 | cursor++; | 294 | cursor++; |
292 | adjust_cursor(); | 295 | adjust_cursor(); |
@@ -619,8 +622,10 @@ bool recording_screen(void) | |||
619 | reload_directory(); | 622 | reload_directory(); |
620 | 623 | ||
621 | return been_in_usb_mode; | 624 | return been_in_usb_mode; |
625 | #endif | ||
622 | } | 626 | } |
623 | 627 | ||
628 | #ifdef HAVE_RECORDER_KEYPAD | ||
624 | bool f2_rec_screen(void) | 629 | bool f2_rec_screen(void) |
625 | { | 630 | { |
626 | bool exit = false; | 631 | bool exit = false; |
@@ -813,3 +818,4 @@ bool f3_rec_screen(void) | |||
813 | 818 | ||
814 | return false; | 819 | return false; |
815 | } | 820 | } |
821 | #endif | ||
diff --git a/apps/screens.c b/apps/screens.c index ebb7981bd1..b0d95e0a7a 100644 --- a/apps/screens.c +++ b/apps/screens.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include "action.h" | 40 | #include "action.h" |
41 | #include "talk.h" | 41 | #include "talk.h" |
42 | #include "misc.h" | 42 | #include "misc.h" |
43 | #include "id3.h" | ||
43 | 44 | ||
44 | #ifdef HAVE_LCD_BITMAP | 45 | #ifdef HAVE_LCD_BITMAP |
45 | #define BMPHEIGHT_usb_logo 32 | 46 | #define BMPHEIGHT_usb_logo 32 |
@@ -240,7 +241,7 @@ int charging_screen(void) | |||
240 | { | 241 | { |
241 | int button; | 242 | int button; |
242 | int rc = 0; | 243 | int rc = 0; |
243 | #ifdef HAVE_RECORDER_KEYPAD | 244 | #ifdef BUTTON_OFF |
244 | const int offbutton = BUTTON_OFF; | 245 | const int offbutton = BUTTON_OFF; |
245 | #else | 246 | #else |
246 | const int offbutton = BUTTON_STOP; | 247 | const int offbutton = BUTTON_STOP; |
@@ -263,7 +264,11 @@ int charging_screen(void) | |||
263 | status_draw(false); | 264 | status_draw(false); |
264 | charging_display_info(true); | 265 | charging_display_info(true); |
265 | button = button_get_w_tmo(HZ/3); | 266 | button = button_get_w_tmo(HZ/3); |
267 | #ifdef BUTTON_ON | ||
266 | if (button == (BUTTON_ON | BUTTON_REL)) | 268 | if (button == (BUTTON_ON | BUTTON_REL)) |
269 | #else | ||
270 | if (button == (BUTTON_RIGHT | BUTTON_REL)) | ||
271 | #endif | ||
267 | rc = 3; | 272 | rc = 3; |
268 | else if (button == offbutton) | 273 | else if (button == offbutton) |
269 | rc = 2; | 274 | rc = 2; |
@@ -286,7 +291,7 @@ int charging_screen(void) | |||
286 | 0 if no key was pressed | 291 | 0 if no key was pressed |
287 | 1 if a key was pressed (or if ON was held down long enough to repeat) | 292 | 1 if a key was pressed (or if ON was held down long enough to repeat) |
288 | 2 if USB was connected */ | 293 | 2 if USB was connected */ |
289 | int on_screen(void) | 294 | int pitch_screen(void) |
290 | { | 295 | { |
291 | int button; | 296 | int button; |
292 | static int pitch = 1000; | 297 | static int pitch = 1000; |
@@ -1082,15 +1087,19 @@ bool set_time_screen(const char* string, struct tm *tm) | |||
1082 | *valptr = min; | 1087 | *valptr = min; |
1083 | say_time(cursorpos, tm); | 1088 | say_time(cursorpos, tm); |
1084 | break; | 1089 | break; |
1090 | |||
1091 | #ifdef BUTTON_ON | ||
1085 | case BUTTON_ON: | 1092 | case BUTTON_ON: |
1093 | #elif defined BUTTON_MENU | ||
1094 | case BUTTON_MENU: | ||
1095 | #endif | ||
1086 | done = true; | 1096 | done = true; |
1087 | break; | 1097 | break; |
1088 | #if (BUTTON_ON != BUTTON_OFF) /* FixMe, this is just to make the Ondio compile */ | 1098 | |
1089 | case BUTTON_OFF: | 1099 | case BUTTON_OFF: |
1090 | done = true; | 1100 | done = true; |
1091 | tm->tm_year = -1; | 1101 | tm->tm_year = -1; |
1092 | break; | 1102 | break; |
1093 | #endif | ||
1094 | 1103 | ||
1095 | default: | 1104 | default: |
1096 | if (default_event_handler(button) == SYS_USB_CONNECTED) | 1105 | if (default_event_handler(button) == SYS_USB_CONNECTED) |
@@ -1140,3 +1149,143 @@ bool shutdown_screen(void) | |||
1140 | return false; | 1149 | return false; |
1141 | } | 1150 | } |
1142 | #endif | 1151 | #endif |
1152 | |||
1153 | bool browse_id3(void) | ||
1154 | { | ||
1155 | struct mp3entry* id3 = mpeg_current_track(); | ||
1156 | int button; | ||
1157 | int menu_pos = 0; | ||
1158 | int menu_max = 8; | ||
1159 | bool exit = false; | ||
1160 | char scroll_text[MAX_PATH]; | ||
1161 | |||
1162 | if (!(mpeg_status() & MPEG_STATUS_PLAY)) | ||
1163 | return false; | ||
1164 | |||
1165 | while (!exit) | ||
1166 | { | ||
1167 | lcd_clear_display(); | ||
1168 | |||
1169 | switch (menu_pos) | ||
1170 | { | ||
1171 | case 0: | ||
1172 | lcd_puts(0, 0, str(LANG_ID3_TITLE)); | ||
1173 | lcd_puts_scroll(0, 1, id3->title ? id3->title : | ||
1174 | (char*)str(LANG_ID3_NO_TITLE)); | ||
1175 | break; | ||
1176 | |||
1177 | case 1: | ||
1178 | lcd_puts(0, 0, str(LANG_ID3_ARTIST)); | ||
1179 | lcd_puts_scroll(0, 1, | ||
1180 | id3->artist ? id3->artist : | ||
1181 | (char*)str(LANG_ID3_NO_ARTIST)); | ||
1182 | break; | ||
1183 | |||
1184 | case 2: | ||
1185 | lcd_puts(0, 0, str(LANG_ID3_ALBUM)); | ||
1186 | lcd_puts_scroll(0, 1, id3->album ? id3->album : | ||
1187 | (char*)str(LANG_ID3_NO_ALBUM)); | ||
1188 | break; | ||
1189 | |||
1190 | case 3: | ||
1191 | lcd_puts(0, 0, str(LANG_ID3_TRACKNUM)); | ||
1192 | |||
1193 | if (id3->tracknum) { | ||
1194 | snprintf(scroll_text,sizeof(scroll_text), "%d", | ||
1195 | id3->tracknum); | ||
1196 | lcd_puts_scroll(0, 1, scroll_text); | ||
1197 | } | ||
1198 | else | ||
1199 | lcd_puts_scroll(0, 1, str(LANG_ID3_NO_TRACKNUM)); | ||
1200 | break; | ||
1201 | |||
1202 | case 4: | ||
1203 | lcd_puts(0, 0, str(LANG_ID3_GENRE)); | ||
1204 | lcd_puts_scroll(0, 1, | ||
1205 | id3_get_genre(id3) ? | ||
1206 | id3_get_genre(id3) : | ||
1207 | (char*)str(LANG_ID3_NO_INFO)); | ||
1208 | break; | ||
1209 | |||
1210 | case 5: | ||
1211 | lcd_puts(0, 0, str(LANG_ID3_YEAR)); | ||
1212 | if (id3->year) { | ||
1213 | snprintf(scroll_text,sizeof(scroll_text), "%d", | ||
1214 | id3->year); | ||
1215 | lcd_puts_scroll(0, 1, scroll_text); | ||
1216 | } | ||
1217 | else | ||
1218 | lcd_puts_scroll(0, 1, str(LANG_ID3_NO_INFO)); | ||
1219 | break; | ||
1220 | |||
1221 | case 6: | ||
1222 | lcd_puts(0, 0, str(LANG_ID3_LENGHT)); | ||
1223 | snprintf(scroll_text,sizeof(scroll_text), "%d:%02d", | ||
1224 | id3->length / 60000, | ||
1225 | id3->length % 60000 / 1000 ); | ||
1226 | lcd_puts(0, 1, scroll_text); | ||
1227 | break; | ||
1228 | |||
1229 | case 7: | ||
1230 | lcd_puts(0, 0, str(LANG_ID3_PLAYLIST)); | ||
1231 | snprintf(scroll_text,sizeof(scroll_text), "%d/%d", | ||
1232 | playlist_get_display_index(), playlist_amount()); | ||
1233 | lcd_puts_scroll(0, 1, scroll_text); | ||
1234 | break; | ||
1235 | |||
1236 | |||
1237 | case 8: | ||
1238 | lcd_puts(0, 0, str(LANG_ID3_BITRATE)); | ||
1239 | snprintf(scroll_text,sizeof(scroll_text), "%d kbps", | ||
1240 | id3->bitrate); | ||
1241 | lcd_puts(0, 1, scroll_text); | ||
1242 | break; | ||
1243 | |||
1244 | case 9: | ||
1245 | lcd_puts(0, 0, str(LANG_ID3_FRECUENCY)); | ||
1246 | snprintf(scroll_text,sizeof(scroll_text), "%d Hz", | ||
1247 | id3->frequency); | ||
1248 | lcd_puts(0, 1, scroll_text); | ||
1249 | break; | ||
1250 | |||
1251 | case 10: | ||
1252 | lcd_puts(0, 0, str(LANG_ID3_PATH)); | ||
1253 | lcd_puts_scroll(0, 1, id3->path); | ||
1254 | break; | ||
1255 | } | ||
1256 | lcd_update(); | ||
1257 | |||
1258 | button = button_get(true); | ||
1259 | |||
1260 | switch(button) | ||
1261 | { | ||
1262 | case SETTINGS_DEC: | ||
1263 | if (menu_pos > 0) | ||
1264 | menu_pos--; | ||
1265 | else | ||
1266 | menu_pos = menu_max; | ||
1267 | break; | ||
1268 | |||
1269 | case SETTINGS_INC: | ||
1270 | if (menu_pos < menu_max) | ||
1271 | menu_pos++; | ||
1272 | else | ||
1273 | menu_pos = 0; | ||
1274 | break; | ||
1275 | |||
1276 | case SETTINGS_CANCEL: | ||
1277 | lcd_stop_scroll(); | ||
1278 | /* eat release event */ | ||
1279 | button_get(true); | ||
1280 | exit = true; | ||
1281 | break; | ||
1282 | |||
1283 | default: | ||
1284 | if(default_event_handler(button) == SYS_USB_CONNECTED) | ||
1285 | return true; | ||
1286 | break; | ||
1287 | } | ||
1288 | } | ||
1289 | return false; | ||
1290 | } | ||
1291 | |||
diff --git a/apps/screens.h b/apps/screens.h index a119a9b853..9f15ff3228 100644 --- a/apps/screens.h +++ b/apps/screens.h | |||
@@ -27,7 +27,7 @@ int charging_screen(void); | |||
27 | void charging_splash(void); | 27 | void charging_splash(void); |
28 | 28 | ||
29 | #ifdef HAVE_RECORDER_KEYPAD | 29 | #ifdef HAVE_RECORDER_KEYPAD |
30 | int on_screen(void); | 30 | int pitch_screen(void); |
31 | bool quick_screen(const int, const int); | 31 | bool quick_screen(const int, const int); |
32 | #endif | 32 | #endif |
33 | 33 | ||
@@ -42,6 +42,7 @@ bool set_time_screen(const char* string, struct tm *tm); | |||
42 | #endif | 42 | #endif |
43 | 43 | ||
44 | bool shutdown_screen(void); | 44 | bool shutdown_screen(void); |
45 | bool browse_id3(void); | ||
45 | 46 | ||
46 | #endif | 47 | #endif |
47 | 48 | ||
diff --git a/apps/settings.c b/apps/settings.c index ccb7703ab2..708a38b678 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -70,6 +70,7 @@ struct user_settings global_settings; | |||
70 | const char rec_base_directory[] = REC_BASE_DIR; | 70 | const char rec_base_directory[] = REC_BASE_DIR; |
71 | 71 | ||
72 | 72 | ||
73 | |||
73 | #define CONFIG_BLOCK_VERSION 16 | 74 | #define CONFIG_BLOCK_VERSION 16 |
74 | #define CONFIG_BLOCK_SIZE 512 | 75 | #define CONFIG_BLOCK_SIZE 512 |
75 | #define RTC_BLOCK_SIZE 44 | 76 | #define RTC_BLOCK_SIZE 44 |
@@ -1319,40 +1320,26 @@ bool set_int(const char* string, | |||
1319 | 1320 | ||
1320 | button = button_get_w_tmo(HZ/2); | 1321 | button = button_get_w_tmo(HZ/2); |
1321 | switch(button) { | 1322 | switch(button) { |
1322 | #ifdef HAVE_RECORDER_KEYPAD | 1323 | case SETTINGS_INC: |
1323 | case BUTTON_UP: | 1324 | case SETTINGS_INC | BUTTON_REPEAT: |
1324 | case BUTTON_UP | BUTTON_REPEAT: | ||
1325 | #else | ||
1326 | case BUTTON_RIGHT: | ||
1327 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
1328 | #endif | ||
1329 | *variable += step; | 1325 | *variable += step; |
1330 | break; | 1326 | break; |
1331 | 1327 | ||
1332 | #ifdef HAVE_RECORDER_KEYPAD | 1328 | case SETTINGS_DEC: |
1333 | case BUTTON_DOWN: | 1329 | case SETTINGS_DEC | BUTTON_REPEAT: |
1334 | case BUTTON_DOWN | BUTTON_REPEAT: | ||
1335 | #else | ||
1336 | case BUTTON_LEFT: | ||
1337 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
1338 | #endif | ||
1339 | *variable -= step; | 1330 | *variable -= step; |
1340 | break; | 1331 | break; |
1341 | 1332 | ||
1342 | #ifdef HAVE_RECORDER_KEYPAD | 1333 | case SETTINGS_OK: |
1343 | case BUTTON_LEFT: | 1334 | #ifdef SETTINGS_OK2 |
1344 | case BUTTON_PLAY: | 1335 | case SETTINGS_OK2: |
1345 | #else | ||
1346 | case BUTTON_PLAY: | ||
1347 | #endif | 1336 | #endif |
1348 | done = true; | 1337 | done = true; |
1349 | break; | 1338 | break; |
1350 | 1339 | ||
1351 | #ifdef HAVE_RECORDER_KEYPAD | 1340 | case SETTINGS_CANCEL: |
1352 | case BUTTON_OFF: | 1341 | #ifdef SETTINGS_CANCEL2 |
1353 | #else | 1342 | case SETTINGS_CANCEL2: |
1354 | case BUTTON_STOP: | ||
1355 | case BUTTON_MENU: | ||
1356 | #endif | 1343 | #endif |
1357 | if (*variable != org_value) { | 1344 | if (*variable != org_value) { |
1358 | *variable=org_value; | 1345 | *variable=org_value; |
@@ -1431,13 +1418,8 @@ bool set_option(const char* string, void* variable, enum optiontype type, | |||
1431 | 1418 | ||
1432 | button = button_get_w_tmo(HZ/2); | 1419 | button = button_get_w_tmo(HZ/2); |
1433 | switch (button) { | 1420 | switch (button) { |
1434 | #ifdef HAVE_RECORDER_KEYPAD | 1421 | case SETTINGS_INC: |
1435 | case BUTTON_UP: | 1422 | case SETTINGS_INC | BUTTON_REPEAT: |
1436 | case BUTTON_UP | BUTTON_REPEAT: | ||
1437 | #else | ||
1438 | case BUTTON_RIGHT: | ||
1439 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
1440 | #endif | ||
1441 | if (type == INT) { | 1423 | if (type == INT) { |
1442 | if ( *intvar < (numoptions-1) ) | 1424 | if ( *intvar < (numoptions-1) ) |
1443 | (*intvar)++; | 1425 | (*intvar)++; |
@@ -1448,13 +1430,8 @@ bool set_option(const char* string, void* variable, enum optiontype type, | |||
1448 | *boolvar = !*boolvar; | 1430 | *boolvar = !*boolvar; |
1449 | break; | 1431 | break; |
1450 | 1432 | ||
1451 | #ifdef HAVE_RECORDER_KEYPAD | 1433 | case SETTINGS_DEC: |
1452 | case BUTTON_DOWN: | 1434 | case SETTINGS_DEC | BUTTON_REPEAT: |
1453 | case BUTTON_DOWN | BUTTON_REPEAT: | ||
1454 | #else | ||
1455 | case BUTTON_LEFT: | ||
1456 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
1457 | #endif | ||
1458 | if (type == INT) { | 1435 | if (type == INT) { |
1459 | if ( *intvar > 0 ) | 1436 | if ( *intvar > 0 ) |
1460 | (*intvar)--; | 1437 | (*intvar)--; |
@@ -1465,20 +1442,16 @@ bool set_option(const char* string, void* variable, enum optiontype type, | |||
1465 | *boolvar = !*boolvar; | 1442 | *boolvar = !*boolvar; |
1466 | break; | 1443 | break; |
1467 | 1444 | ||
1468 | #ifdef HAVE_RECORDER_KEYPAD | 1445 | case SETTINGS_OK: |
1469 | case BUTTON_LEFT: | 1446 | #ifdef SETTINGS_OK2 |
1470 | case BUTTON_PLAY: | 1447 | case SETTINGS_OK2: |
1471 | #else | ||
1472 | case BUTTON_PLAY: | ||
1473 | #endif | 1448 | #endif |
1474 | done = true; | 1449 | done = true; |
1475 | break; | 1450 | break; |
1476 | 1451 | ||
1477 | #ifdef HAVE_RECORDER_KEYPAD | 1452 | case SETTINGS_CANCEL: |
1478 | case BUTTON_OFF: | 1453 | #ifdef SETTINGS_CANCEL2 |
1479 | #else | 1454 | case SETTINGS_CANCEL2: |
1480 | case BUTTON_STOP: | ||
1481 | case BUTTON_MENU: | ||
1482 | #endif | 1455 | #endif |
1483 | if (((type==INT) && (*intvar != oldval)) || | 1456 | if (((type==INT) && (*intvar != oldval)) || |
1484 | ((type==BOOL) && (*boolvar != (bool)oldval))) { | 1457 | ((type==BOOL) && (*boolvar != (bool)oldval))) { |
diff --git a/apps/settings.h b/apps/settings.h index 331e8dc904..0af466c5f7 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -33,6 +33,31 @@ | |||
33 | 33 | ||
34 | #define MAX_FILENAME 20 | 34 | #define MAX_FILENAME 20 |
35 | 35 | ||
36 | /* button definitions */ | ||
37 | #ifdef HAVE_RECORDER_KEYPAD | ||
38 | #define SETTINGS_INC BUTTON_UP | ||
39 | #define SETTINGS_DEC BUTTON_DOWN | ||
40 | #define SETTINGS_OK (BUTTON_PLAY|BUTTON_REL) | ||
41 | #define SETTINGS_OK2 (BUTTON_LEFT|BUTTON_REL) | ||
42 | #define SETTINGS_CANCEL (BUTTON_OFF|BUTTON_REL) | ||
43 | #define SETTINGS_CANCEL2 (BUTTON_F1|BUTTON_REL) | ||
44 | |||
45 | #elif defined HAVE_PLAYER_KEYPAD | ||
46 | #define SETTINGS_INC BUTTON_RIGHT | ||
47 | #define SETTINGS_DEC BUTTON_LEFT | ||
48 | #define SETTINGS_OK (BUTTON_PLAY|BUTTON_REL) | ||
49 | #define SETTINGS_CANCEL (BUTTON_STOP|BUTTON_REL) | ||
50 | #define SETTINGS_CANCEL2 (BUTTON_MENU|BUTTON_REL) | ||
51 | |||
52 | #elif defined HAVE_ONDIO_KEYPAD | ||
53 | #define SETTINGS_INC BUTTON_UP | ||
54 | #define SETTINGS_DEC BUTTON_DOWN | ||
55 | #define SETTINGS_OK (BUTTON_RIGHT|BUTTON_REL) | ||
56 | #define SETTINGS_OK2 (BUTTON_LEFT|BUTTON_REL) | ||
57 | #define SETTINGS_CANCEL (BUTTON_MENU|BUTTON_REL) | ||
58 | |||
59 | #endif | ||
60 | |||
36 | /* data structures */ | 61 | /* data structures */ |
37 | 62 | ||
38 | #define RESUME_OFF 0 | 63 | #define RESUME_OFF 0 |
diff --git a/apps/settings_menu.c b/apps/settings_menu.c index 4d2e2f9a44..9e95fe9d9a 100644 --- a/apps/settings_menu.c +++ b/apps/settings_menu.c | |||
@@ -1066,27 +1066,23 @@ static bool reset_settings(void) | |||
1066 | while(!done) { | 1066 | while(!done) { |
1067 | button = button_get(true); | 1067 | button = button_get(true); |
1068 | switch(button) { | 1068 | switch(button) { |
1069 | case BUTTON_PLAY: | 1069 | case SETTINGS_OK: |
1070 | settings_reset(); | 1070 | settings_reset(); |
1071 | settings_apply(); | 1071 | settings_apply(); |
1072 | lcd_clear_display(); | 1072 | lcd_clear_display(); |
1073 | lcd_puts(0,1,str(LANG_RESET_DONE_CLEAR)); | 1073 | lcd_puts(0,1,str(LANG_RESET_DONE_CLEAR)); |
1074 | done = true; | 1074 | done = true; |
1075 | break; | 1075 | break; |
1076 | 1076 | ||
1077 | #ifdef HAVE_RECORDER_KEYPAD | 1077 | case SETTINGS_CANCEL: |
1078 | case BUTTON_OFF: | 1078 | lcd_clear_display(); |
1079 | #else | 1079 | lcd_puts(0,1,str(LANG_RESET_DONE_CANCEL)); |
1080 | case BUTTON_STOP: | 1080 | done = true; |
1081 | #endif | 1081 | break; |
1082 | lcd_clear_display(); | 1082 | |
1083 | lcd_puts(0,1,str(LANG_RESET_DONE_CANCEL)); | 1083 | default: |
1084 | done = true; | 1084 | if(default_event_handler(button) == SYS_USB_CONNECTED) |
1085 | break; | 1085 | return true; |
1086 | |||
1087 | default: | ||
1088 | if(default_event_handler(button) == SYS_USB_CONNECTED) | ||
1089 | return true; | ||
1090 | } | 1086 | } |
1091 | } | 1087 | } |
1092 | 1088 | ||
diff --git a/apps/sleeptimer.c b/apps/sleeptimer.c index 4fc7515ac0..55599bf7b3 100644 --- a/apps/sleeptimer.c +++ b/apps/sleeptimer.c | |||
@@ -69,68 +69,50 @@ bool sleeptimer_screen(void) | |||
69 | button = button_get_w_tmo(HZ); | 69 | button = button_get_w_tmo(HZ); |
70 | switch(button) | 70 | switch(button) |
71 | { | 71 | { |
72 | #ifdef HAVE_RECORDER_KEYPAD | 72 | case SETTINGS_OK: |
73 | case BUTTON_LEFT: | 73 | done = true; |
74 | case BUTTON_PLAY: | 74 | break; |
75 | #else | 75 | |
76 | case BUTTON_PLAY: | 76 | case SETTINGS_CANCEL: |
77 | #endif | 77 | if (changed) { |
78 | done = true; | 78 | lcd_stop_scroll(); |
79 | break; | 79 | lcd_puts(0, 0, str(LANG_MENU_SETTING_CANCEL)); |
80 | 80 | lcd_update(); | |
81 | #ifdef HAVE_RECORDER_KEYPAD | 81 | set_sleep_timer(org_timer); |
82 | case BUTTON_OFF: | 82 | sleep(HZ/2); |
83 | #else | 83 | } |
84 | case BUTTON_STOP: | 84 | done = true; |
85 | case BUTTON_MENU: | 85 | break; |
86 | #endif | 86 | |
87 | if (changed) { | 87 | case SETTINGS_INC: |
88 | lcd_stop_scroll(); | 88 | oldtime = (get_sleep_timer()+59) / 60; |
89 | lcd_puts(0, 0, str(LANG_MENU_SETTING_CANCEL)); | 89 | if(oldtime < THRESHOLD) |
90 | lcd_update(); | 90 | amount = SMALL_STEP_SIZE; |
91 | set_sleep_timer(org_timer); | 91 | else |
92 | sleep(HZ/2); | 92 | amount = LARGE_STEP_SIZE; |
93 | } | ||
94 | done = true; | ||
95 | break; | ||
96 | |||
97 | #if defined(HAVE_PLAYER_KEYPAD) || defined(HAVE_NEO_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | ||
98 | case BUTTON_RIGHT: | ||
99 | #else | ||
100 | case BUTTON_UP: | ||
101 | #endif | ||
102 | oldtime = (get_sleep_timer()+59) / 60; | ||
103 | if(oldtime < THRESHOLD) | ||
104 | amount = SMALL_STEP_SIZE; | ||
105 | else | ||
106 | amount = LARGE_STEP_SIZE; | ||
107 | 93 | ||
108 | newtime = oldtime * 60 + amount; | 94 | newtime = oldtime * 60 + amount; |
109 | if(newtime > MAX_TIME) | 95 | if(newtime > MAX_TIME) |
110 | newtime = MAX_TIME; | 96 | newtime = MAX_TIME; |
111 | 97 | ||
112 | changed = sayit = true; | 98 | changed = sayit = true; |
113 | set_sleep_timer(newtime); | 99 | set_sleep_timer(newtime); |
114 | break; | 100 | break; |
115 | 101 | ||
116 | #if defined(HAVE_PLAYER_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | 102 | case SETTINGS_DEC: |
117 | case BUTTON_LEFT: | 103 | oldtime = (get_sleep_timer()+59) / 60; |
118 | #else | 104 | if(oldtime <= THRESHOLD) |
119 | case BUTTON_DOWN: | 105 | amount = SMALL_STEP_SIZE; |
120 | #endif | 106 | else |
121 | oldtime = (get_sleep_timer()+59) / 60; | 107 | amount = LARGE_STEP_SIZE; |
122 | if(oldtime <= THRESHOLD) | ||
123 | amount = SMALL_STEP_SIZE; | ||
124 | else | ||
125 | amount = LARGE_STEP_SIZE; | ||
126 | 108 | ||
127 | newtime = oldtime*60 - amount; | 109 | newtime = oldtime*60 - amount; |
128 | if(newtime < 0) | 110 | if(newtime < 0) |
129 | newtime = 0; | 111 | newtime = 0; |
130 | 112 | ||
131 | changed = sayit = true; | 113 | changed = sayit = true; |
132 | set_sleep_timer(newtime); | 114 | set_sleep_timer(newtime); |
133 | break; | 115 | break; |
134 | } | 116 | } |
135 | 117 | ||
136 | seconds = get_sleep_timer(); | 118 | seconds = get_sleep_timer(); |
diff --git a/apps/sound_menu.c b/apps/sound_menu.c index a037c94084..fdb2043171 100644 --- a/apps/sound_menu.c +++ b/apps/sound_menu.c | |||
@@ -103,38 +103,29 @@ bool set_sound(const char* string, | |||
103 | changed = false; | 103 | changed = false; |
104 | button = button_get_w_tmo(HZ/2); | 104 | button = button_get_w_tmo(HZ/2); |
105 | switch( button ) { | 105 | switch( button ) { |
106 | #ifdef HAVE_RECORDER_KEYPAD | 106 | case SETTINGS_INC: |
107 | case BUTTON_UP: | 107 | case SETTINGS_INC | BUTTON_REPEAT: |
108 | case BUTTON_UP | BUTTON_REPEAT: | ||
109 | #else | ||
110 | case BUTTON_RIGHT: | ||
111 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
112 | #endif | ||
113 | (*variable)+=steps; | 108 | (*variable)+=steps; |
114 | if(*variable > max ) | 109 | if(*variable > max ) |
115 | *variable = max; | 110 | *variable = max; |
116 | changed = true; | 111 | changed = true; |
117 | break; | 112 | break; |
118 | 113 | ||
119 | #ifdef HAVE_RECORDER_KEYPAD | 114 | case SETTINGS_DEC: |
120 | case BUTTON_DOWN: | 115 | case SETTINGS_DEC | BUTTON_REPEAT: |
121 | case BUTTON_DOWN | BUTTON_REPEAT: | ||
122 | #else | ||
123 | case BUTTON_LEFT: | ||
124 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
125 | #endif | ||
126 | (*variable)-=steps; | 116 | (*variable)-=steps; |
127 | if(*variable < min ) | 117 | if(*variable < min ) |
128 | *variable = min; | 118 | *variable = min; |
129 | changed = true; | 119 | changed = true; |
130 | break; | 120 | break; |
131 | 121 | ||
132 | #ifdef HAVE_RECORDER_KEYPAD | 122 | case SETTINGS_OK: |
133 | case BUTTON_LEFT: | 123 | case SETTINGS_CANCEL: |
134 | #else | 124 | #ifdef SETTINGS_OK2 |
135 | case BUTTON_STOP: | 125 | case SETTINGS_OK2: |
136 | case BUTTON_MENU: | 126 | #endif |
137 | case BUTTON_PLAY: | 127 | #ifdef SETTINGS_CANCEL2 |
128 | case SETTINGS_CANCEL2: | ||
138 | #endif | 129 | #endif |
139 | done = true; | 130 | done = true; |
140 | break; | 131 | break; |
diff --git a/apps/tree.c b/apps/tree.c index 90d7010d03..a83346b8d2 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -194,20 +194,6 @@ void tree_get_filetypes(const struct filetype** types, int* count) | |||
194 | 194 | ||
195 | #endif /* HAVE_LCD_BITMAP */ | 195 | #endif /* HAVE_LCD_BITMAP */ |
196 | 196 | ||
197 | #ifdef HAVE_RECORDER_KEYPAD | ||
198 | #define TREE_NEXT BUTTON_DOWN | ||
199 | #define TREE_PREV BUTTON_UP | ||
200 | #define TREE_EXIT BUTTON_LEFT | ||
201 | #define TREE_ENTER BUTTON_RIGHT | ||
202 | #define TREE_MENU BUTTON_F1 | ||
203 | #else | ||
204 | #define TREE_NEXT BUTTON_RIGHT | ||
205 | #define TREE_PREV BUTTON_LEFT | ||
206 | #define TREE_EXIT BUTTON_STOP | ||
207 | #define TREE_ENTER BUTTON_PLAY | ||
208 | #define TREE_MENU BUTTON_MENU | ||
209 | #endif /* HAVE_RECORDER_KEYPAD */ | ||
210 | |||
211 | /* talkbox hovering delay, to avoid immediate disk activity */ | 197 | /* talkbox hovering delay, to avoid immediate disk activity */ |
212 | #define HOVER_DELAY (HZ/2) | 198 | #define HOVER_DELAY (HZ/2) |
213 | 199 | ||
@@ -641,9 +627,9 @@ static bool ask_resume(bool ask_once) | |||
641 | while (!stop) { | 627 | while (!stop) { |
642 | button = button_get(true); | 628 | button = button_get(true); |
643 | switch (button) { | 629 | switch (button) { |
644 | case BUTTON_PLAY: | 630 | case TREE_RUN: |
645 | #ifdef BUTTON_RC_PLAY | 631 | #ifdef TREE_RC_RUN |
646 | case BUTTON_RC_PLAY: | 632 | case TREE_RC_RUN: |
647 | #endif | 633 | #endif |
648 | return true; | 634 | return true; |
649 | 635 | ||
@@ -771,9 +757,10 @@ void set_current_file(char *path) | |||
771 | } | 757 | } |
772 | } | 758 | } |
773 | 759 | ||
774 | #ifdef BUTTON_ON | 760 | #ifdef TREE_SHIFT |
775 | static bool handle_on(int *ds, int *dc, int numentries, int tree_max_on_screen, | 761 | static bool handle_shift(int *ds, int *dc, int numentries, |
776 | const int *dirfilter) | 762 | int tree_max_on_screen, |
763 | const int *dirfilter) | ||
777 | { | 764 | { |
778 | bool exit = false; | 765 | bool exit = false; |
779 | bool used = false; | 766 | bool used = false; |
@@ -790,12 +777,12 @@ static bool handle_on(int *ds, int *dc, int numentries, int tree_max_on_screen, | |||
790 | while (!exit) { | 777 | while (!exit) { |
791 | switch (button_get(true)) { | 778 | switch (button_get(true)) { |
792 | case TREE_PREV: | 779 | case TREE_PREV: |
793 | #ifdef BUTTON_RC_LEFT | 780 | #ifdef TREE_RC_PREV |
794 | case BUTTON_RC_LEFT: | 781 | case TREE_RC_PREV: |
795 | #endif | 782 | #endif |
796 | #ifdef BUTTON_ON | 783 | #ifdef TREE_SHIFT |
797 | case BUTTON_ON | TREE_PREV: | 784 | case TREE_SHIFT | TREE_PREV: |
798 | case BUTTON_ON | TREE_PREV | BUTTON_REPEAT: | 785 | case TREE_SHIFT | TREE_PREV | BUTTON_REPEAT: |
799 | #endif | 786 | #endif |
800 | used = true; | 787 | used = true; |
801 | if ( dirstart ) { | 788 | if ( dirstart ) { |
@@ -808,12 +795,12 @@ static bool handle_on(int *ds, int *dc, int numentries, int tree_max_on_screen, | |||
808 | break; | 795 | break; |
809 | 796 | ||
810 | case TREE_NEXT: | 797 | case TREE_NEXT: |
811 | #ifdef BUTTON_RC_RIGHT | 798 | #ifdef TREE_RC_NEXT |
812 | case BUTTON_RC_RIGHT: | 799 | case TREE_RC_NEXT: |
813 | #endif | 800 | #endif |
814 | #ifdef BUTTON_ON | 801 | #ifdef TREE_SHIFT |
815 | case BUTTON_ON | TREE_NEXT: | 802 | case TREE_SHIFT | TREE_NEXT: |
816 | case BUTTON_ON | TREE_NEXT | BUTTON_REPEAT: | 803 | case TREE_SHIFT | TREE_NEXT | BUTTON_REPEAT: |
817 | #endif | 804 | #endif |
818 | used = true; | 805 | used = true; |
819 | if ( dirstart < numentries - tree_max_on_screen ) { | 806 | if ( dirstart < numentries - tree_max_on_screen ) { |
@@ -827,12 +814,12 @@ static bool handle_on(int *ds, int *dc, int numentries, int tree_max_on_screen, | |||
827 | break; | 814 | break; |
828 | 815 | ||
829 | 816 | ||
830 | case BUTTON_PLAY: | 817 | case TREE_RUN: |
831 | #ifdef BUTTON_RC_PLAY | 818 | #ifdef TREE_RC_PLAY |
832 | case BUTTON_RC_PLAY: | 819 | case TREE_RC_RUN: |
833 | #endif | 820 | #endif |
834 | #ifdef BUTTON_ON | 821 | #ifdef TREE_SHIFT |
835 | case BUTTON_ON | BUTTON_PLAY: | 822 | case TREE_SHIFT | TREE_RUN: |
836 | #endif | 823 | #endif |
837 | { | 824 | { |
838 | int onplay_result; | 825 | int onplay_result; |
@@ -866,10 +853,10 @@ static bool handle_on(int *ds, int *dc, int numentries, int tree_max_on_screen, | |||
866 | exit = true; | 853 | exit = true; |
867 | break; | 854 | break; |
868 | } | 855 | } |
869 | #ifdef BUTTON_ON | 856 | #ifdef TREE_SHIFT |
870 | case BUTTON_ON | BUTTON_REL: | 857 | case TREE_SHIFT | BUTTON_REL: |
871 | case BUTTON_ON | TREE_PREV | BUTTON_REL: | 858 | case TREE_SHIFT | TREE_PREV | BUTTON_REL: |
872 | case BUTTON_ON | TREE_NEXT | BUTTON_REL: | 859 | case TREE_SHIFT | TREE_NEXT | BUTTON_REL: |
873 | exit = true; | 860 | exit = true; |
874 | break; | 861 | break; |
875 | #endif | 862 | #endif |
@@ -969,7 +956,7 @@ static bool dirbrowse(const char *root, const int *dirfilter) | |||
969 | while (!stop) { | 956 | while (!stop) { |
970 | button = button_get(true); | 957 | button = button_get(true); |
971 | switch (button) { | 958 | switch (button) { |
972 | case BUTTON_PLAY: | 959 | case TREE_RUN: |
973 | rolo_load("/" BOOTFILE); | 960 | rolo_load("/" BOOTFILE); |
974 | stop = true; | 961 | stop = true; |
975 | break; | 962 | break; |
@@ -988,11 +975,9 @@ static bool dirbrowse(const char *root, const int *dirfilter) | |||
988 | 975 | ||
989 | switch ( button ) { | 976 | switch ( button ) { |
990 | case TREE_EXIT: | 977 | case TREE_EXIT: |
991 | #ifdef BUTTON_RC_STOP | 978 | case TREE_EXIT | BUTTON_REPEAT: |
992 | case BUTTON_RC_STOP: | 979 | #ifdef TREE_RC_EXIT |
993 | #endif | 980 | case TREE_RC_EXIT: |
994 | #ifdef HAVE_RECORDER_KEYPAD | ||
995 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
996 | #endif | 981 | #endif |
997 | i=strlen(currdir); | 982 | i=strlen(currdir); |
998 | if (i>1) { | 983 | if (i>1) { |
@@ -1027,8 +1012,8 @@ static bool dirbrowse(const char *root, const int *dirfilter) | |||
1027 | } | 1012 | } |
1028 | break; | 1013 | break; |
1029 | 1014 | ||
1030 | #ifdef HAVE_RECORDER_KEYPAD | 1015 | #ifdef TREE_OFF |
1031 | case BUTTON_OFF: | 1016 | case TREE_OFF: |
1032 | /* Stop the music if it is playing, else show the shutdown | 1017 | /* Stop the music if it is playing, else show the shutdown |
1033 | screen */ | 1018 | screen */ |
1034 | if(mpeg_status()) | 1019 | if(mpeg_status()) |
@@ -1042,27 +1027,23 @@ static bool dirbrowse(const char *root, const int *dirfilter) | |||
1042 | restore = true; | 1027 | restore = true; |
1043 | } | 1028 | } |
1044 | break; | 1029 | break; |
1045 | #endif | ||
1046 | 1030 | ||
1047 | #ifdef HAVE_RECORDER_KEYPAD | 1031 | case TREE_OFF | BUTTON_REPEAT: |
1048 | case BUTTON_OFF | BUTTON_REPEAT: | ||
1049 | #else | ||
1050 | case BUTTON_STOP | BUTTON_REPEAT: | ||
1051 | #endif | ||
1052 | if (charger_inserted()) { | 1032 | if (charger_inserted()) { |
1053 | charging_splash(); | 1033 | charging_splash(); |
1054 | restore = true; | 1034 | restore = true; |
1055 | } | 1035 | } |
1056 | break; | 1036 | break; |
1037 | #endif | ||
1057 | 1038 | ||
1058 | case TREE_ENTER: | 1039 | case TREE_ENTER: |
1059 | case TREE_ENTER | BUTTON_REPEAT: | 1040 | case TREE_ENTER | BUTTON_REPEAT: |
1060 | #ifdef BUTTON_RC_PLAY | 1041 | #if defined TREE_RC_ENTER && (TREE_RC_ENTER != TREE_RC_RUN) |
1061 | case BUTTON_RC_PLAY: | 1042 | case TREE_RC_ENTER: |
1062 | #endif | 1043 | #endif |
1063 | #ifdef HAVE_RECORDER_KEYPAD | 1044 | #if defined TREE_RUN && (TREE_RUN != TREE_ENTER) |
1064 | case BUTTON_PLAY: | 1045 | case TREE_RUN: |
1065 | case BUTTON_PLAY | BUTTON_REPEAT: | 1046 | case TREE_RUN | BUTTON_REPEAT: |
1066 | #endif | 1047 | #endif |
1067 | if ( !numentries ) | 1048 | if ( !numentries ) |
1068 | break; | 1049 | break; |
@@ -1255,8 +1236,9 @@ static bool dirbrowse(const char *root, const int *dirfilter) | |||
1255 | 1236 | ||
1256 | case TREE_PREV: | 1237 | case TREE_PREV: |
1257 | case TREE_PREV | BUTTON_REPEAT: | 1238 | case TREE_PREV | BUTTON_REPEAT: |
1258 | #ifdef BUTTON_RC_LEFT | 1239 | #ifdef TREE_RC_PREV |
1259 | case BUTTON_RC_LEFT: | 1240 | case TREE_RC_PREV: |
1241 | case TREE_RC_PREV | BUTTON_REPEAT: | ||
1260 | #endif | 1242 | #endif |
1261 | if(filesindir) { | 1243 | if(filesindir) { |
1262 | if(dircursor) { | 1244 | if(dircursor) { |
@@ -1295,8 +1277,9 @@ static bool dirbrowse(const char *root, const int *dirfilter) | |||
1295 | 1277 | ||
1296 | case TREE_NEXT: | 1278 | case TREE_NEXT: |
1297 | case TREE_NEXT | BUTTON_REPEAT: | 1279 | case TREE_NEXT | BUTTON_REPEAT: |
1298 | #ifdef BUTTON_RC_RIGHT | 1280 | #ifdef TREE_RC_NEXT |
1299 | case BUTTON_RC_RIGHT: | 1281 | case TREE_RC_NEXT: |
1282 | case TREE_RC_NEXT | BUTTON_REPEAT: | ||
1300 | #endif | 1283 | #endif |
1301 | if(filesindir) | 1284 | if(filesindir) |
1302 | { | 1285 | { |
@@ -1340,11 +1323,11 @@ static bool dirbrowse(const char *root, const int *dirfilter) | |||
1340 | } | 1323 | } |
1341 | break; | 1324 | break; |
1342 | 1325 | ||
1343 | #ifdef BUTTON_ON /* I bet the folks without ON-button want this to | 1326 | #ifdef TREE_SHIFT /* I bet the folks without ON-button want this to |
1344 | work on a different button */ | 1327 | work on a different button */ |
1345 | case BUTTON_ON: | 1328 | case TREE_SHIFT: |
1346 | if (handle_on(&dirstart, &dircursor, numentries, | 1329 | if (handle_shift(&dirstart, &dircursor, numentries, |
1347 | tree_max_on_screen, dirfilter)) | 1330 | tree_max_on_screen, dirfilter)) |
1348 | { | 1331 | { |
1349 | /* start scroll */ | 1332 | /* start scroll */ |
1350 | restore = true; | 1333 | restore = true; |
diff --git a/apps/tree.h b/apps/tree.h index dd08ca9392..eb4f0cd00c 100644 --- a/apps/tree.h +++ b/apps/tree.h | |||
@@ -21,6 +21,48 @@ | |||
21 | 21 | ||
22 | #include <stdbool.h> | 22 | #include <stdbool.h> |
23 | 23 | ||
24 | #ifdef HAVE_RECORDER_KEYPAD | ||
25 | #define TREE_NEXT BUTTON_DOWN | ||
26 | #define TREE_PREV BUTTON_UP | ||
27 | #define TREE_EXIT BUTTON_LEFT | ||
28 | #define TREE_ENTER BUTTON_RIGHT | ||
29 | #define TREE_RUN BUTTON_PLAY | ||
30 | #define TREE_MENU (BUTTON_F1 | BUTTON_REL) | ||
31 | #define TREE_SHIFT BUTTON_ON | ||
32 | #define TREE_OFF BUTTON_OFF | ||
33 | |||
34 | #define TREE_RC_NEXT BUTTON_RC_RIGHT | ||
35 | #define TREE_RC_REV BUTTON_RC_LEFT | ||
36 | #define TREE_RC_EXIT BUTTON_RC_STOP | ||
37 | #define TREE_RC_ENTER BUTTON_RC_PLAY | ||
38 | #define TREE_RC_RUN BUTTON_RC_PLAY | ||
39 | |||
40 | #elif defined HAVE_PLAYER_KEYPAD | ||
41 | #define TREE_NEXT BUTTON_RIGHT | ||
42 | #define TREE_PREV BUTTON_LEFT | ||
43 | #define TREE_EXIT BUTTON_STOP | ||
44 | #define TREE_ENTER BUTTON_PLAY | ||
45 | #define TREE_RUN BUTTON_PLAY | ||
46 | #define TREE_MENU (BUTTON_MENU | BUTTON_REL) | ||
47 | #define TREE_SHIFT BUTTON_ON | ||
48 | |||
49 | #define TREE_RC_NEXT BUTTON_RC_RIGHT | ||
50 | #define TREE_RC_REV BUTTON_RC_LEFT | ||
51 | #define TREE_RC_EXIT BUTTON_RC_STOP | ||
52 | #define TREE_RC_ENTER BUTTON_RC_PLAY | ||
53 | #define TREE_RC_RUN BUTTON_RC_PLAY | ||
54 | |||
55 | #elif defined HAVE_ONDIO_KEYPAD | ||
56 | #define TREE_NEXT BUTTON_DOWN | ||
57 | #define TREE_PREV BUTTON_UP | ||
58 | #define TREE_EXIT BUTTON_LEFT | ||
59 | #define TREE_ENTER BUTTON_RIGHT | ||
60 | #define TREE_RUN BUTTON_RIGHT | ||
61 | #define TREE_MENU (BUTTON_MENU | BUTTON_REPEAT) | ||
62 | #define TREE_SHIFT BUTTON_MENU | ||
63 | |||
64 | #endif | ||
65 | |||
24 | struct entry { | 66 | struct entry { |
25 | short attr; /* FAT attributes + file type flags */ | 67 | short attr; /* FAT attributes + file type flags */ |
26 | unsigned long time_write; /* Last write time */ | 68 | unsigned long time_write; /* Last write time */ |
diff --git a/apps/wps.c b/apps/wps.c index 92b4e008b8..49d7d3db36 100644 --- a/apps/wps.c +++ b/apps/wps.c | |||
@@ -61,63 +61,86 @@ static struct mp3entry* id3 = NULL; | |||
61 | static struct mp3entry* nid3 = NULL; | 61 | static struct mp3entry* nid3 = NULL; |
62 | static char current_track_path[MAX_PATH+1]; | 62 | static char current_track_path[MAX_PATH+1]; |
63 | 63 | ||
64 | #if defined(HAVE_PLAYER_KEYPAD) || defined(HAVE_NEO_KEYPAD) || defined(HAVE_ONDIO_KEYPAD) | 64 | /* button definitions */ |
65 | void player_change_volume(int button) | 65 | #ifdef HAVE_RECORDER_KEYPAD |
66 | #define WPS_NEXT (BUTTON_RIGHT | BUTTON_REL) | ||
67 | #define WPS_PREV (BUTTON_LEFT | BUTTON_REL) | ||
68 | #define WPS_FFWD (BUTTON_RIGHT | BUTTON_REPEAT) | ||
69 | #define WPS_REW (BUTTON_LEFT | BUTTON_REPEAT) | ||
70 | #define WPS_INCVOL BUTTON_UP | ||
71 | #define WPS_DECVOL BUTTON_DOWN | ||
72 | #define WPS_PAUSE BUTTON_PLAY | ||
73 | #define WPS_MENU (BUTTON_F1 | BUTTON_REL) | ||
74 | #define WPS_MENU_PRE BUTTON_F1 | ||
75 | #define WPS_BROWSE (BUTTON_ON | BUTTON_REL) | ||
76 | #define WPS_EXIT BUTTON_OFF | ||
77 | #define WPS_KEYLOCK (BUTTON_F1 | BUTTON_DOWN) | ||
78 | #define WPS_ID3 (BUTTON_F1 | BUTTON_ON) | ||
79 | |||
80 | #define WPS_RC_NEXT BUTTON_RC_RIGHT | ||
81 | #define WPS_RC_PREV BUTTON_RC_LEFT | ||
82 | #define WPS_RC_PAUSE BUTTON_RC_PLAY | ||
83 | #define WPS_RC_INCVOL BUTTON_RC_VOL_UP | ||
84 | #define WPS_RC_DECVOL BUTTON_RC_VOL_DOWN | ||
85 | #define WPS_RC_EXIT BUTTON_RC_STOP | ||
86 | |||
87 | #elif defined HAVE_PLAYER_KEYPAD | ||
88 | #define WPS_NEXT BUTTON_RIGHT | ||
89 | #define WPS_PREV BUTTON_LEFT | ||
90 | #define WPS_FFWD (BUTTON_RIGHT | BUTTON_REPEAT) | ||
91 | #define WPS_REW (BUTTON_LEFT | BUTTON_REPEAT) | ||
92 | #define WPS_INCVOL (BUTTON_MENU | BUTTON_RIGHT) | ||
93 | #define WPS_DECVOL (BUTTON_MENU | BUTTON_LEFT) | ||
94 | #define WPS_PAUSE BUTTON_PLAY | ||
95 | #define WPS_MENU (BUTTON_MENU | BUTTON_REL) | ||
96 | #define WPS_MENU_PRE BUTTON_MENU | ||
97 | #define WPS_BROWSE (BUTTON_ON | BUTTON_REL) | ||
98 | #define WPS_EXIT BUTTON_STOP | ||
99 | #define WPS_KEYLOCK (BUTTON_MENU | BUTTON_STOP) | ||
100 | #define WPS_ID3 (BUTTON_MENU | BUTTON_ON) | ||
101 | |||
102 | #define WPS_RC_NEXT BUTTON_RC_RIGHT | ||
103 | #define WPS_RC_PREV BUTTON_RC_LEFT | ||
104 | #define WPS_RC_PAUSE BUTTON_RC_PLAY | ||
105 | #define WPS_RC_INCVOL BUTTON_RC_VOL_UP | ||
106 | #define WPS_RC_DECVOL BUTTON_RC_VOL_DOWN | ||
107 | #define WPS_RC_EXIT BUTTON_RC_STOP | ||
108 | |||
109 | #elif defined HAVE_ONDIO_KEYPAD | ||
110 | #define WPS_NEXT (BUTTON_RIGHT | BUTTON_REL) | ||
111 | #define WPS_PREV (BUTTON_LEFT | BUTTON_REL) | ||
112 | #define WPS_FFWD (BUTTON_RIGHT | BUTTON_REPEAT) | ||
113 | #define WPS_REW (BUTTON_LEFT | BUTTON_REPEAT) | ||
114 | #define WPS_INCVOL BUTTON_UP | ||
115 | #define WPS_DECVOL BUTTON_DOWN | ||
116 | #define WPS_PAUSE BUTTON_OFF | ||
117 | #define WPS_MENU (BUTTON_MENU | BUTTON_REPEAT) | ||
118 | #define WPS_BROWSE (BUTTON_MENU | BUTTON_REL) | ||
119 | #define WPS_KEYLOCK (BUTTON_MENU | BUTTON_DOWN) | ||
120 | |||
121 | #endif | ||
122 | |||
123 | /* set volume | ||
124 | return true if screen restore is needed | ||
125 | return false otherwise | ||
126 | */ | ||
127 | static bool setvol(void) | ||
66 | { | 128 | { |
67 | bool exit = false; | 129 | if (global_settings.volume < mpeg_sound_min(SOUND_VOLUME)) |
68 | char buffer[32]; | 130 | global_settings.volume = mpeg_sound_min(SOUND_VOLUME); |
69 | 131 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | |
70 | lcd_stop_scroll(); | 132 | status_draw(false); |
71 | while (!exit) | 133 | wps_refresh(id3, nid3, 0, WPS_REFRESH_NON_STATIC); |
72 | { | 134 | settings_save(); |
73 | switch (button) | ||
74 | { | ||
75 | case BUTTON_MENU | BUTTON_RIGHT: | ||
76 | case BUTTON_MENU | BUTTON_RIGHT | BUTTON_REPEAT: | ||
77 | global_settings.volume++; | ||
78 | if(global_settings.volume > mpeg_sound_max(SOUND_VOLUME)) | ||
79 | global_settings.volume = mpeg_sound_max(SOUND_VOLUME); | ||
80 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | ||
81 | wps_refresh(id3, nid3, 0, WPS_REFRESH_NON_STATIC); | ||
82 | settings_save(); | ||
83 | break; | ||
84 | |||
85 | case BUTTON_MENU | BUTTON_LEFT: | ||
86 | case BUTTON_MENU | BUTTON_LEFT | BUTTON_REPEAT: | ||
87 | global_settings.volume--; | ||
88 | if(global_settings.volume < mpeg_sound_min(SOUND_VOLUME)) | ||
89 | global_settings.volume = mpeg_sound_min(SOUND_VOLUME); | ||
90 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | ||
91 | wps_refresh(id3, nid3, 0, WPS_REFRESH_NON_STATIC); | ||
92 | settings_save(); | ||
93 | break; | ||
94 | |||
95 | case BUTTON_MENU | BUTTON_REL: | ||
96 | case BUTTON_MENU | BUTTON_LEFT | BUTTON_REL: | ||
97 | case BUTTON_MENU | BUTTON_RIGHT | BUTTON_REL: | ||
98 | exit = true; | ||
99 | break; | ||
100 | } | ||
101 | |||
102 | snprintf(buffer,sizeof(buffer),"Vol: %d %% ", | ||
103 | mpeg_val2phys(SOUND_VOLUME, global_settings.volume)); | ||
104 | |||
105 | #ifdef HAVE_LCD_CHARCELLS | 135 | #ifdef HAVE_LCD_CHARCELLS |
106 | lcd_puts(0, 0, buffer); | 136 | splash(0, false, "Vol: %d %% ", |
107 | #else | 137 | mpeg_val2phys(SOUND_VOLUME, global_settings.volume)); |
108 | lcd_puts(2, 3, buffer); | 138 | return true; |
109 | lcd_update(); | ||
110 | #endif | 139 | #endif |
111 | status_draw(false); | 140 | return false; |
112 | |||
113 | if (!exit) | ||
114 | button = button_get(true); | ||
115 | } | ||
116 | wps_refresh(id3, nid3, 0, WPS_REFRESH_ALL); | ||
117 | } | 141 | } |
118 | #endif | ||
119 | 142 | ||
120 | void display_keylock_text(bool locked) | 143 | static void display_keylock_text(bool locked) |
121 | { | 144 | { |
122 | char* s; | 145 | char* s; |
123 | lcd_stop_scroll(); | 146 | lcd_stop_scroll(); |
@@ -135,176 +158,6 @@ void display_keylock_text(bool locked) | |||
135 | splash(HZ, true, s); | 158 | splash(HZ, true, s); |
136 | } | 159 | } |
137 | 160 | ||
138 | void display_mute_text(bool muted) | ||
139 | { | ||
140 | char *s; | ||
141 | lcd_stop_scroll(); | ||
142 | #ifdef HAVE_LCD_CHARCELLS | ||
143 | if (muted) | ||
144 | s = str(LANG_MUTE_ON_PLAYER); | ||
145 | else | ||
146 | s = str(LANG_MUTE_OFF_PLAYER); | ||
147 | #else | ||
148 | if (muted) | ||
149 | s = str(LANG_MUTE_ON_RECORDER); | ||
150 | else | ||
151 | s = str(LANG_MUTE_OFF_RECORDER); | ||
152 | #endif | ||
153 | splash(HZ, true, s); | ||
154 | } | ||
155 | |||
156 | bool browse_id3(void) | ||
157 | { | ||
158 | int button; | ||
159 | int menu_pos = 0; | ||
160 | int menu_max = 8; | ||
161 | bool exit = false; | ||
162 | char scroll_text[MAX_PATH]; | ||
163 | |||
164 | if (!(mpeg_status() & MPEG_STATUS_PLAY)) | ||
165 | return false; | ||
166 | |||
167 | while (!exit) | ||
168 | { | ||
169 | lcd_clear_display(); | ||
170 | |||
171 | switch (menu_pos) | ||
172 | { | ||
173 | case 0: | ||
174 | lcd_puts(0, 0, str(LANG_ID3_TITLE)); | ||
175 | lcd_puts_scroll(0, 1, id3->title ? id3->title : | ||
176 | (char*)str(LANG_ID3_NO_TITLE)); | ||
177 | break; | ||
178 | |||
179 | case 1: | ||
180 | lcd_puts(0, 0, str(LANG_ID3_ARTIST)); | ||
181 | lcd_puts_scroll(0, 1, | ||
182 | id3->artist ? id3->artist : | ||
183 | (char*)str(LANG_ID3_NO_ARTIST)); | ||
184 | break; | ||
185 | |||
186 | case 2: | ||
187 | lcd_puts(0, 0, str(LANG_ID3_ALBUM)); | ||
188 | lcd_puts_scroll(0, 1, id3->album ? id3->album : | ||
189 | (char*)str(LANG_ID3_NO_ALBUM)); | ||
190 | break; | ||
191 | |||
192 | case 3: | ||
193 | lcd_puts(0, 0, str(LANG_ID3_TRACKNUM)); | ||
194 | |||
195 | if (id3->tracknum) { | ||
196 | snprintf(scroll_text,sizeof(scroll_text), "%d", | ||
197 | id3->tracknum); | ||
198 | lcd_puts_scroll(0, 1, scroll_text); | ||
199 | } | ||
200 | else | ||
201 | lcd_puts_scroll(0, 1, str(LANG_ID3_NO_TRACKNUM)); | ||
202 | break; | ||
203 | |||
204 | case 4: | ||
205 | lcd_puts(0, 0, str(LANG_ID3_GENRE)); | ||
206 | lcd_puts_scroll(0, 1, | ||
207 | id3_get_genre(id3) ? | ||
208 | id3_get_genre(id3) : | ||
209 | (char*)str(LANG_ID3_NO_INFO)); | ||
210 | break; | ||
211 | |||
212 | case 5: | ||
213 | lcd_puts(0, 0, str(LANG_ID3_YEAR)); | ||
214 | if (id3->year) { | ||
215 | snprintf(scroll_text,sizeof(scroll_text), "%d", | ||
216 | id3->year); | ||
217 | lcd_puts_scroll(0, 1, scroll_text); | ||
218 | } | ||
219 | else | ||
220 | lcd_puts_scroll(0, 1, str(LANG_ID3_NO_INFO)); | ||
221 | break; | ||
222 | |||
223 | case 6: | ||
224 | lcd_puts(0, 0, str(LANG_ID3_LENGHT)); | ||
225 | snprintf(scroll_text,sizeof(scroll_text), "%d:%02d", | ||
226 | id3->length / 60000, | ||
227 | id3->length % 60000 / 1000 ); | ||
228 | lcd_puts(0, 1, scroll_text); | ||
229 | break; | ||
230 | |||
231 | case 7: | ||
232 | lcd_puts(0, 0, str(LANG_ID3_PLAYLIST)); | ||
233 | snprintf(scroll_text,sizeof(scroll_text), "%d/%d", | ||
234 | playlist_get_display_index(), playlist_amount()); | ||
235 | lcd_puts_scroll(0, 1, scroll_text); | ||
236 | break; | ||
237 | |||
238 | |||
239 | case 8: | ||
240 | lcd_puts(0, 0, str(LANG_ID3_BITRATE)); | ||
241 | snprintf(scroll_text,sizeof(scroll_text), "%d kbps", | ||
242 | id3->bitrate); | ||
243 | lcd_puts(0, 1, scroll_text); | ||
244 | break; | ||
245 | |||
246 | case 9: | ||
247 | lcd_puts(0, 0, str(LANG_ID3_FRECUENCY)); | ||
248 | snprintf(scroll_text,sizeof(scroll_text), "%d Hz", | ||
249 | id3->frequency); | ||
250 | lcd_puts(0, 1, scroll_text); | ||
251 | break; | ||
252 | |||
253 | case 10: | ||
254 | lcd_puts(0, 0, str(LANG_ID3_PATH)); | ||
255 | lcd_puts_scroll(0, 1, id3->path); | ||
256 | break; | ||
257 | } | ||
258 | lcd_update(); | ||
259 | |||
260 | button = button_get(true); | ||
261 | |||
262 | switch(button) | ||
263 | { | ||
264 | case BUTTON_LEFT: | ||
265 | #ifdef HAVE_RECORDER_KEYPAD | ||
266 | case BUTTON_UP: | ||
267 | #endif | ||
268 | if (menu_pos > 0) | ||
269 | menu_pos--; | ||
270 | else | ||
271 | menu_pos = menu_max; | ||
272 | break; | ||
273 | |||
274 | case BUTTON_RIGHT: | ||
275 | #ifdef HAVE_RECORDER_KEYPAD | ||
276 | case BUTTON_DOWN: | ||
277 | #endif | ||
278 | if (menu_pos < menu_max) | ||
279 | menu_pos++; | ||
280 | else | ||
281 | menu_pos = 0; | ||
282 | break; | ||
283 | |||
284 | case BUTTON_REPEAT: | ||
285 | break; | ||
286 | |||
287 | #ifdef BUTTON_STOP | ||
288 | case BUTTON_STOP: | ||
289 | #else | ||
290 | case BUTTON_OFF: | ||
291 | #endif | ||
292 | case BUTTON_PLAY: | ||
293 | lcd_stop_scroll(); | ||
294 | /* eat release event */ | ||
295 | button_get(true); | ||
296 | exit = true; | ||
297 | break; | ||
298 | |||
299 | default: | ||
300 | if(default_event_handler(button) == SYS_USB_CONNECTED) | ||
301 | return true; | ||
302 | break; | ||
303 | } | ||
304 | } | ||
305 | return false; | ||
306 | } | ||
307 | |||
308 | static bool ffwd_rew(int button) | 161 | static bool ffwd_rew(int button) |
309 | { | 162 | { |
310 | static const int ff_rew_steps[] = { | 163 | static const int ff_rew_steps[] = { |
@@ -324,8 +177,8 @@ static bool ffwd_rew(int button) | |||
324 | 177 | ||
325 | while (!exit) { | 178 | while (!exit) { |
326 | switch ( button ) { | 179 | switch ( button ) { |
327 | case BUTTON_LEFT | BUTTON_REPEAT: | 180 | case WPS_FFWD: |
328 | case BUTTON_RIGHT | BUTTON_REPEAT: | 181 | case WPS_REW: |
329 | if (ff_rewind) | 182 | if (ff_rewind) |
330 | { | 183 | { |
331 | if (direction == 1) | 184 | if (direction == 1) |
@@ -367,7 +220,7 @@ static bool ffwd_rew(int button) | |||
367 | #ifdef HAVE_PLAYER_KEYPAD | 220 | #ifdef HAVE_PLAYER_KEYPAD |
368 | lcd_stop_scroll(); | 221 | lcd_stop_scroll(); |
369 | #endif | 222 | #endif |
370 | direction = (button & BUTTON_RIGHT) ? 1 : -1; | 223 | direction = (button & WPS_FFWD) ? 1 : -1; |
371 | 224 | ||
372 | if (direction > 0) | 225 | if (direction > 0) |
373 | status_set_ffmode(STATUS_FASTFORWARD); | 226 | status_set_ffmode(STATUS_FASTFORWARD); |
@@ -405,8 +258,8 @@ static bool ffwd_rew(int button) | |||
405 | 258 | ||
406 | break; | 259 | break; |
407 | 260 | ||
408 | case BUTTON_LEFT | BUTTON_REL: | 261 | case WPS_PREV: |
409 | case BUTTON_RIGHT | BUTTON_REL: | 262 | case WPS_NEXT: |
410 | mpeg_ff_rewind(id3->elapsed+ff_rewind_count); | 263 | mpeg_ff_rewind(id3->elapsed+ff_rewind_count); |
411 | ff_rewind_count = 0; | 264 | ff_rewind_count = 0; |
412 | ff_rewind = false; | 265 | ff_rewind = false; |
@@ -483,133 +336,6 @@ static bool update(void) | |||
483 | return retcode; | 336 | return retcode; |
484 | } | 337 | } |
485 | 338 | ||
486 | static bool menu(void) | ||
487 | { | ||
488 | static bool muted = false; | ||
489 | bool exit = false; | ||
490 | int last_button = 0; | ||
491 | |||
492 | #ifdef HAVE_LCD_CHARCELLS | ||
493 | status_set_param(true); | ||
494 | status_draw(false); | ||
495 | #endif | ||
496 | |||
497 | while (!exit) { | ||
498 | int button = button_get(true); | ||
499 | |||
500 | /* these are never locked */ | ||
501 | switch (button) | ||
502 | { | ||
503 | /* key lock */ | ||
504 | #ifdef HAVE_RECORDER_KEYPAD | ||
505 | case BUTTON_F1 | BUTTON_DOWN: | ||
506 | #else | ||
507 | case BUTTON_MENU | BUTTON_STOP: | ||
508 | #endif | ||
509 | keys_locked = !keys_locked; | ||
510 | display_keylock_text(keys_locked); | ||
511 | exit = true; | ||
512 | while (button_get(false)); /* clear button queue */ | ||
513 | break; | ||
514 | |||
515 | default: | ||
516 | if(default_event_handler(button) == SYS_USB_CONNECTED) { | ||
517 | keys_locked = false; | ||
518 | return true; | ||
519 | } | ||
520 | break; | ||
521 | } | ||
522 | |||
523 | if (keys_locked) { | ||
524 | display_keylock_text(true); | ||
525 | break; | ||
526 | } | ||
527 | |||
528 | switch ( button ) { | ||
529 | /* go into menu */ | ||
530 | #ifdef HAVE_RECORDER_KEYPAD | ||
531 | case BUTTON_F1 | BUTTON_REL: | ||
532 | #else | ||
533 | case BUTTON_MENU | BUTTON_REL: | ||
534 | #endif | ||
535 | exit = true; | ||
536 | if ( !last_button && !keys_locked ) { | ||
537 | lcd_stop_scroll(); | ||
538 | |||
539 | if (main_menu()) | ||
540 | return true; | ||
541 | #ifdef HAVE_LCD_BITMAP | ||
542 | if(global_settings.statusbar) | ||
543 | lcd_setmargins(0, STATUSBAR_HEIGHT); | ||
544 | else | ||
545 | lcd_setmargins(0, 0); | ||
546 | #endif | ||
547 | } | ||
548 | break; | ||
549 | |||
550 | /* mute */ | ||
551 | #ifdef BUTTON_MENU | ||
552 | case BUTTON_MENU | BUTTON_PLAY: | ||
553 | #else | ||
554 | case BUTTON_F1 | BUTTON_PLAY: | ||
555 | #endif | ||
556 | if ( muted ) | ||
557 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | ||
558 | else | ||
559 | mpeg_sound_set(SOUND_VOLUME, 0); | ||
560 | muted = !muted; | ||
561 | #ifdef HAVE_LCD_CHARCELLS | ||
562 | status_set_param(false); | ||
563 | #endif | ||
564 | display_mute_text(muted); | ||
565 | break; | ||
566 | |||
567 | #ifdef BUTTON_MENU | ||
568 | /* change volume */ | ||
569 | case BUTTON_MENU | BUTTON_LEFT: | ||
570 | case BUTTON_MENU | BUTTON_LEFT | BUTTON_REPEAT: | ||
571 | case BUTTON_MENU | BUTTON_RIGHT: | ||
572 | case BUTTON_MENU | BUTTON_RIGHT | BUTTON_REPEAT: | ||
573 | player_change_volume(button); | ||
574 | exit = true; | ||
575 | break; | ||
576 | |||
577 | /* show id3 tags */ | ||
578 | #ifdef BUTTON_ON | ||
579 | case BUTTON_MENU | BUTTON_ON: | ||
580 | #ifdef HAVE_LCD_CHARCELLS | ||
581 | status_set_param(true); | ||
582 | status_set_audio(true); | ||
583 | #endif | ||
584 | #endif | ||
585 | #else | ||
586 | case BUTTON_F1 | BUTTON_ON: | ||
587 | #endif | ||
588 | lcd_clear_display(); | ||
589 | lcd_puts(0, 0, str(LANG_ID3_INFO)); | ||
590 | lcd_puts(0, 1, str(LANG_ID3_SCREEN)); | ||
591 | lcd_update(); | ||
592 | sleep(HZ); | ||
593 | |||
594 | if(browse_id3()) | ||
595 | return true; | ||
596 | #ifdef HAVE_PLAYER_KEYPAD | ||
597 | status_set_param(false); | ||
598 | status_set_audio(true); | ||
599 | #endif | ||
600 | exit = true; | ||
601 | break; | ||
602 | } | ||
603 | last_button = button; | ||
604 | } | ||
605 | |||
606 | #ifdef HAVE_LCD_CHARCELLS | ||
607 | status_set_param(false); | ||
608 | #endif | ||
609 | |||
610 | return false; | ||
611 | } | ||
612 | |||
613 | static void fade(bool fade_in) | 339 | static void fade(bool fade_in) |
614 | { | 340 | { |
615 | if (fade_in) { | 341 | if (fade_in) { |
@@ -647,12 +373,20 @@ static void fade(bool fade_in) | |||
647 | } | 373 | } |
648 | 374 | ||
649 | 375 | ||
376 | static void waitfor_nokey(void) | ||
377 | { | ||
378 | /* wait until all keys are released */ | ||
379 | while (button_get(false) != BUTTON_NONE) | ||
380 | yield(); | ||
381 | } | ||
382 | |||
650 | /* demonstrates showing different formats from playtune */ | 383 | /* demonstrates showing different formats from playtune */ |
651 | int wps_show(void) | 384 | int wps_show(void) |
652 | { | 385 | { |
653 | int button = 0, lastbutton = 0; | 386 | int button = 0, lastbutton = 0; |
654 | bool ignore_keyup = true; | 387 | bool ignore_keyup = true; |
655 | bool restore = false; | 388 | bool restore = false; |
389 | long restoretimer = 0; /* timer to delay screen redraw temporarily */ | ||
656 | bool exit = false; | 390 | bool exit = false; |
657 | bool update_track = false; | 391 | bool update_track = false; |
658 | 392 | ||
@@ -763,26 +497,22 @@ int wps_show(void) | |||
763 | if (button >= 0 && button & BUTTON_REL ) | 497 | if (button >= 0 && button & BUTTON_REL ) |
764 | continue; | 498 | continue; |
765 | } | 499 | } |
766 | 500 | ||
501 | #ifdef WPS_KEYLOCK | ||
767 | /* ignore non-remote buttons when keys are locked */ | 502 | /* ignore non-remote buttons when keys are locked */ |
768 | if (keys_locked && | 503 | if (keys_locked && |
769 | ! ((button < 0) || | 504 | ! ((button < 0) || |
770 | #ifdef HAVE_RECORDER_KEYPAD | 505 | (button == BUTTON_NONE) || |
771 | (button & BUTTON_F1) || | 506 | ((button & WPS_KEYLOCK) == WPS_KEYLOCK) || |
772 | #else | 507 | (button & BUTTON_REMOTE) |
773 | (button & BUTTON_MENU) || | 508 | )) |
774 | #endif | ||
775 | (button == BUTTON_NONE) | ||
776 | #ifdef BUTTON_REMOTE | ||
777 | || (button & BUTTON_REMOTE) | ||
778 | #endif | ||
779 | )) | ||
780 | { | 509 | { |
781 | while (button_get(false)); /* clear button queue */ | 510 | if (!(button & BUTTON_REL)) |
782 | display_keylock_text(true); | 511 | display_keylock_text(true); |
783 | restore = true; | 512 | restore = true; |
784 | continue; | 513 | button = BUTTON_NONE; |
785 | } | 514 | } |
515 | #endif | ||
786 | 516 | ||
787 | /* Exit if mpeg has stopped playing. This can happen if using the | 517 | /* Exit if mpeg has stopped playing. This can happen if using the |
788 | sleep timer with the charger plugged or if starting a recording | 518 | sleep timer with the charger plugged or if starting a recording |
@@ -792,49 +522,25 @@ int wps_show(void) | |||
792 | 522 | ||
793 | switch(button) | 523 | switch(button) |
794 | { | 524 | { |
795 | #ifdef BUTTON_ON | 525 | case WPS_BROWSE: |
796 | case BUTTON_ON: | ||
797 | #ifdef HAVE_RECORDER_KEYPAD | ||
798 | switch (on_screen()) { | ||
799 | case 2: | ||
800 | /* usb connected? */ | ||
801 | return SYS_USB_CONNECTED; | ||
802 | |||
803 | case 1: | ||
804 | /* was on_screen used? */ | ||
805 | restore = true; | ||
806 | |||
807 | /* pause may have been turned off by pitch screen */ | ||
808 | if (paused && !(mpeg_status() & MPEG_STATUS_PAUSE)) { | ||
809 | paused = false; | ||
810 | } | ||
811 | break; | ||
812 | |||
813 | case 0: | ||
814 | /* otherwise, exit to browser */ | ||
815 | #else | ||
816 | #ifdef HAVE_LCD_CHARCELLS | 526 | #ifdef HAVE_LCD_CHARCELLS |
817 | status_set_record(false); | 527 | status_set_record(false); |
818 | status_set_audio(false); | 528 | status_set_audio(false); |
819 | #endif | ||
820 | #endif | 529 | #endif |
821 | lcd_stop_scroll(); | 530 | lcd_stop_scroll(); |
822 | 531 | ||
823 | /* set dir browser to current playing song */ | 532 | /* set dir browser to current playing song */ |
824 | if (global_settings.browse_current && | 533 | if (global_settings.browse_current && |
825 | current_track_path[0] != '\0') | 534 | current_track_path[0] != '\0') |
826 | set_current_file(current_track_path); | 535 | set_current_file(current_track_path); |
827 | 536 | ||
828 | return 0; | 537 | return 0; |
829 | #ifdef HAVE_RECORDER_KEYPAD | ||
830 | } | ||
831 | break; | 538 | break; |
832 | #endif | 539 | |
833 | #endif /* BUTTON_ON */ | ||
834 | /* play/pause */ | 540 | /* play/pause */ |
835 | case BUTTON_PLAY: | 541 | case WPS_PAUSE: |
836 | #ifdef BUTTON_RC_PLAY | 542 | #ifdef WPS_RC_PAUSE |
837 | case BUTTON_RC_PLAY: | 543 | case WPS_RC_PAUSE: |
838 | #endif | 544 | #endif |
839 | if ( paused ) | 545 | if ( paused ) |
840 | { | 546 | { |
@@ -861,53 +567,50 @@ int wps_show(void) | |||
861 | break; | 567 | break; |
862 | 568 | ||
863 | /* volume up */ | 569 | /* volume up */ |
864 | #ifdef HAVE_RECORDER_KEYPAD | 570 | case WPS_INCVOL: |
865 | case BUTTON_UP: | 571 | case WPS_INCVOL | BUTTON_REPEAT: |
866 | case BUTTON_UP | BUTTON_REPEAT: | 572 | #ifdef WPS_RC_INCVOL |
867 | #endif | 573 | case WPS_RC_INCVOL: |
868 | #ifdef BUTTON_RC_VOL_UP | ||
869 | case BUTTON_RC_VOL_UP: | ||
870 | #endif | 574 | #endif |
871 | global_settings.volume++; | 575 | global_settings.volume++; |
872 | if(global_settings.volume > mpeg_sound_max(SOUND_VOLUME)) | 576 | if (setvol()) { |
873 | global_settings.volume = mpeg_sound_max(SOUND_VOLUME); | 577 | restore = true; |
874 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | 578 | restoretimer = current_tick + HZ; |
875 | status_draw(false); | 579 | } |
876 | settings_save(); | ||
877 | break; | 580 | break; |
878 | 581 | ||
879 | /* volume down */ | 582 | /* volume down */ |
880 | #ifdef HAVE_RECORDER_KEYPAD | 583 | case WPS_DECVOL: |
881 | case BUTTON_DOWN: | 584 | case WPS_DECVOL | BUTTON_REPEAT: |
882 | case BUTTON_DOWN | BUTTON_REPEAT: | 585 | #ifdef WPS_RC_DECVOL |
883 | #endif | 586 | case WPS_RC_DECVOL: |
884 | #ifdef BUTTON_RC_VOL_DOWN | ||
885 | case BUTTON_RC_VOL_DOWN: | ||
886 | #endif | 587 | #endif |
887 | global_settings.volume--; | 588 | global_settings.volume--; |
888 | if(global_settings.volume < mpeg_sound_min(SOUND_VOLUME)) | 589 | if (setvol()) { |
889 | global_settings.volume = mpeg_sound_min(SOUND_VOLUME); | 590 | restore = true; |
890 | mpeg_sound_set(SOUND_VOLUME, global_settings.volume); | 591 | restoretimer = current_tick + HZ; |
891 | status_draw(false); | 592 | } |
892 | settings_save(); | ||
893 | break; | 593 | break; |
894 | 594 | ||
895 | /* fast forward / rewind */ | 595 | /* fast forward / rewind */ |
896 | case BUTTON_LEFT | BUTTON_REPEAT: | 596 | case WPS_FFWD: |
897 | case BUTTON_RIGHT | BUTTON_REPEAT: | 597 | case WPS_REW: |
598 | #ifdef WPS_RC_FFWD | ||
599 | case WPS_RC_FFWD: | ||
600 | case WPS_RC_RWD: | ||
601 | #endif | ||
898 | ffwd_rew(button); | 602 | ffwd_rew(button); |
899 | break; | 603 | break; |
900 | 604 | ||
901 | /* prev / restart */ | 605 | /* prev / restart */ |
902 | #ifdef BUTTON_RC_LEFT | 606 | #ifdef WPS_RC_PREV |
903 | case BUTTON_RC_LEFT: | 607 | case WPS_RC_PREV: |
904 | #endif | 608 | #endif |
905 | case BUTTON_LEFT | BUTTON_REL: | 609 | case WPS_PREV: |
906 | #ifdef HAVE_RECORDER_KEYPAD | 610 | /* ignore release event after rewind */ |
907 | if ((button == (BUTTON_LEFT | BUTTON_REL)) && | 611 | if (lastbutton & BUTTON_REPEAT) |
908 | (lastbutton != BUTTON_LEFT )) | ||
909 | break; | 612 | break; |
910 | #endif | 613 | |
911 | if (!id3 || (id3->elapsed < 3*1000)) { | 614 | if (!id3 || (id3->elapsed < 3*1000)) { |
912 | mpeg_prev(); | 615 | mpeg_prev(); |
913 | } | 616 | } |
@@ -923,29 +626,43 @@ int wps_show(void) | |||
923 | break; | 626 | break; |
924 | 627 | ||
925 | /* next */ | 628 | /* next */ |
926 | #ifdef BUTTON_RC_RIGHT | 629 | #ifdef WPS_RC_NEXT |
927 | case BUTTON_RC_RIGHT: | 630 | case WPS_RC_NEXT: |
928 | #endif | 631 | #endif |
929 | case BUTTON_RIGHT | BUTTON_REL: | 632 | case WPS_NEXT: |
930 | #ifdef HAVE_RECORDER_KEYPAD | 633 | #ifdef HAVE_RECORDER_KEYPAD |
931 | if ((button == (BUTTON_RIGHT | BUTTON_REL)) && | 634 | if (lastbutton & BUTTON_REPEAT) |
932 | (lastbutton != BUTTON_RIGHT)) | 635 | break; |
933 | break; | ||
934 | #endif | 636 | #endif |
935 | mpeg_next(); | 637 | mpeg_next(); |
936 | break; | 638 | break; |
937 | 639 | ||
938 | /* menu key functions */ | 640 | /* menu key functions */ |
939 | #ifdef BUTTON_MENU | 641 | case WPS_MENU: |
940 | case BUTTON_MENU: | 642 | #ifdef WPS_MENU_PRE |
941 | #else | 643 | if (lastbutton != WPS_MENU_PRE) |
942 | case BUTTON_F1: | 644 | break; |
943 | #endif | 645 | #endif |
944 | if (menu()) | 646 | lcd_stop_scroll(); |
945 | return SYS_USB_CONNECTED; | ||
946 | 647 | ||
947 | update_track = true; | 648 | if (main_menu()) |
649 | return true; | ||
650 | #ifdef HAVE_LCD_BITMAP | ||
651 | if (global_settings.statusbar) | ||
652 | lcd_setmargins(0, STATUSBAR_HEIGHT); | ||
653 | else | ||
654 | lcd_setmargins(0, 0); | ||
655 | #endif | ||
656 | restore = true; | ||
657 | break; | ||
658 | |||
659 | /* key lock */ | ||
660 | case WPS_KEYLOCK: | ||
661 | case WPS_KEYLOCK | BUTTON_REPEAT: | ||
662 | keys_locked = !keys_locked; | ||
663 | display_keylock_text(keys_locked); | ||
948 | restore = true; | 664 | restore = true; |
665 | waitfor_nokey(); | ||
949 | break; | 666 | break; |
950 | 667 | ||
951 | #ifdef HAVE_RECORDER_KEYPAD | 668 | #ifdef HAVE_RECORDER_KEYPAD |
@@ -962,22 +679,32 @@ int wps_show(void) | |||
962 | return SYS_USB_CONNECTED; | 679 | return SYS_USB_CONNECTED; |
963 | restore = true; | 680 | restore = true; |
964 | break; | 681 | break; |
682 | |||
683 | /* pitch screen */ | ||
684 | case BUTTON_ON | BUTTON_REPEAT: | ||
685 | if (2 == pitch_screen()) | ||
686 | return SYS_USB_CONNECTED; | ||
687 | restore = true; | ||
688 | break; | ||
965 | #endif | 689 | #endif |
966 | 690 | ||
967 | /* stop and exit wps */ | 691 | /* stop and exit wps */ |
968 | #ifdef BUTTON_OFF | 692 | #ifdef WPS_EXIT |
969 | case BUTTON_OFF | BUTTON_REL: | 693 | case WPS_EXIT: |
970 | #else | 694 | #ifdef WPS_RC_EXIT |
971 | case BUTTON_STOP | BUTTON_REL: | 695 | case WPS_RC_EXIT: |
972 | if ( lastbutton != BUTTON_STOP ) | ||
973 | break; | ||
974 | #endif | ||
975 | #ifdef BUTTON_RC_STOP | ||
976 | case BUTTON_RC_STOP: | ||
977 | #endif | 696 | #endif |
978 | exit = true; | 697 | exit = true; |
979 | break; | 698 | break; |
699 | #endif | ||
980 | 700 | ||
701 | #ifdef WPS_ID3 | ||
702 | case WPS_ID3: | ||
703 | browse_id3(); | ||
704 | restore = true; | ||
705 | break; | ||
706 | #endif | ||
707 | |||
981 | case BUTTON_NONE: /* Timeout */ | 708 | case BUTTON_NONE: /* Timeout */ |
982 | update_track = true; | 709 | update_track = true; |
983 | break; | 710 | break; |
@@ -1029,8 +756,12 @@ int wps_show(void) | |||
1029 | if ( button ) | 756 | if ( button ) |
1030 | ata_spin(); | 757 | ata_spin(); |
1031 | 758 | ||
1032 | if (restore) { | 759 | if (restore && |
760 | ((restoretimer == 0) || | ||
761 | (restoretimer < current_tick))) | ||
762 | { | ||
1033 | restore = false; | 763 | restore = false; |
764 | restoretimer = 0; | ||
1034 | if (wps_display(id3, nid3)) | 765 | if (wps_display(id3, nid3)) |
1035 | { | 766 | { |
1036 | /* set dir browser to current playing song */ | 767 | /* set dir browser to current playing song */ |
@@ -1044,7 +775,7 @@ int wps_show(void) | |||
1044 | if (id3) | 775 | if (id3) |
1045 | wps_refresh(id3, nid3, 0, WPS_REFRESH_NON_STATIC); | 776 | wps_refresh(id3, nid3, 0, WPS_REFRESH_NON_STATIC); |
1046 | } | 777 | } |
1047 | if(button != BUTTON_NONE) | 778 | if (button != BUTTON_NONE) |
1048 | lastbutton = button; | 779 | lastbutton = button; |
1049 | } | 780 | } |
1050 | return 0; /* unreachable - just to reduce compiler warnings */ | 781 | return 0; /* unreachable - just to reduce compiler warnings */ |
diff --git a/apps/wps.h b/apps/wps.h index 3680515951..c6cec3fdce 100644 --- a/apps/wps.h +++ b/apps/wps.h | |||
@@ -27,7 +27,6 @@ extern bool wps_time_countup; | |||
27 | int wps_show(void); | 27 | int wps_show(void); |
28 | bool refresh_wps(bool refresh_scroll); | 28 | bool refresh_wps(bool refresh_scroll); |
29 | void handle_usb(void); | 29 | void handle_usb(void); |
30 | bool browse_id3(void); | ||
31 | 30 | ||
32 | #ifdef HAVE_RECORDER_KEYPAD | 31 | #ifdef HAVE_RECORDER_KEYPAD |
33 | bool f2_screen(void); | 32 | bool f2_screen(void); |
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index f934052746..25cdd3d96b 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c | |||
@@ -267,7 +267,6 @@ void button_set_flip(bool flip) | |||
267 | } | 267 | } |
268 | } | 268 | } |
269 | 269 | ||
270 | |||
271 | /* | 270 | /* |
272 | * Get button pressed from hardware | 271 | * Get button pressed from hardware |
273 | */ | 272 | */ |
@@ -376,12 +375,12 @@ static int button_read(void) | |||
376 | if(adc_read(2) < 0x180) | 375 | if(adc_read(2) < 0x180) |
377 | btn |= BUTTON_RIGHT; | 376 | btn |= BUTTON_RIGHT; |
378 | if(adc_read(3) < 0x180) | 377 | if(adc_read(3) < 0x180) |
379 | btn |= BUTTON_PLAY | BUTTON_UP; | 378 | btn |= BUTTON_PLAY; |
380 | 379 | ||
381 | if ( !(porta & 0x20) ) | 380 | if ( !(porta & 0x20) ) |
382 | btn |= BUTTON_ON; | 381 | btn |= BUTTON_ON; |
383 | if ( !(porta & 0x800) ) | 382 | if ( !(porta & 0x800) ) |
384 | btn |= BUTTON_STOP | BUTTON_DOWN; | 383 | btn |= BUTTON_STOP; |
385 | 384 | ||
386 | return btn; | 385 | return btn; |
387 | } | 386 | } |
@@ -488,7 +487,7 @@ static int button_read(void) | |||
488 | if(adc_read(ADC_BUTTON_OPTION) > 0x200) /* active high */ | 487 | if(adc_read(ADC_BUTTON_OPTION) > 0x200) /* active high */ |
489 | btn |= BUTTON_MENU; | 488 | btn |= BUTTON_MENU; |
490 | if(adc_read(ADC_BUTTON_ONOFF) < 0x120) /* active low */ | 489 | if(adc_read(ADC_BUTTON_ONOFF) < 0x120) /* active low */ |
491 | btn |= BUTTON_ON; | 490 | btn |= BUTTON_OFF; |
492 | 491 | ||
493 | /* Check the 4 direction keys, hard-coded analog limits for now */ | 492 | /* Check the 4 direction keys, hard-coded analog limits for now */ |
494 | if (data >= 0x2EF) | 493 | if (data >= 0x2EF) |
@@ -496,9 +495,9 @@ static int button_read(void) | |||
496 | else if (data >= 0x246) | 495 | else if (data >= 0x246) |
497 | btn |= BUTTON_RIGHT; | 496 | btn |= BUTTON_RIGHT; |
498 | else if (data >= 0x19D) | 497 | else if (data >= 0x19D) |
499 | btn |= BUTTON_PLAY | BUTTON_UP; | 498 | btn |= BUTTON_UP; |
500 | else if (data >= 0x0A1) | 499 | else if (data >= 0x0A1) |
501 | btn |= BUTTON_STOP | BUTTON_DOWN; | 500 | btn |= BUTTON_DOWN; |
502 | 501 | ||
503 | return btn; | 502 | return btn; |
504 | } | 503 | } |
diff --git a/firmware/drivers/serial.c b/firmware/drivers/serial.c index 11dadc6f19..e1e0eb82e9 100644 --- a/firmware/drivers/serial.c +++ b/firmware/drivers/serial.c | |||
@@ -85,7 +85,7 @@ int remote_control_rx(void) | |||
85 | } | 85 | } |
86 | else | 86 | else |
87 | { | 87 | { |
88 | #ifndef HAVE_NEO_KEYPAD /* This needs to be fixed for Neo */ | 88 | #if !defined(HAVE_NEO_KEYPAD) && !defined(HAVE_ONDIO_KEYPAD) |
89 | switch (btn) | 89 | switch (btn) |
90 | { | 90 | { |
91 | case STOP: | 91 | case STOP: |
diff --git a/firmware/export/button.h b/firmware/export/button.h index 7f4998f48d..7ec484440f 100644 --- a/firmware/export/button.h +++ b/firmware/export/button.h | |||
@@ -37,7 +37,7 @@ void button_set_flip(bool flip); /* turn 180 degrees */ | |||
37 | #define BUTTON_NONE 0x0000 | 37 | #define BUTTON_NONE 0x0000 |
38 | 38 | ||
39 | #ifdef HAVE_NEO_KEYPAD | 39 | #ifdef HAVE_NEO_KEYPAD |
40 | 40 | /* neo button codes */ | |
41 | #define BUTTON_UP 0x0080 | 41 | #define BUTTON_UP 0x0080 |
42 | #define BUTTON_DOWN 0x0010 | 42 | #define BUTTON_DOWN 0x0010 |
43 | #define BUTTON_LEFT 0x0001 | 43 | #define BUTTON_LEFT 0x0001 |
@@ -80,9 +80,6 @@ void button_set_flip(bool flip); /* turn 180 degrees */ | |||
80 | #else | 80 | #else |
81 | 81 | ||
82 | /* Shared button codes */ | 82 | /* Shared button codes */ |
83 | #define BUTTON_ON 0x0001 | ||
84 | #define BUTTON_UP 0x0010 | ||
85 | #define BUTTON_DOWN 0x0020 | ||
86 | #define BUTTON_LEFT 0x0040 | 83 | #define BUTTON_LEFT 0x0040 |
87 | #define BUTTON_RIGHT 0x0080 | 84 | #define BUTTON_RIGHT 0x0080 |
88 | 85 | ||
@@ -94,38 +91,42 @@ void button_set_flip(bool flip); /* turn 180 degrees */ | |||
94 | /* remote control buttons */ | 91 | /* remote control buttons */ |
95 | #define BUTTON_RC_VOL_UP (0x0008 | BUTTON_REMOTE) | 92 | #define BUTTON_RC_VOL_UP (0x0008 | BUTTON_REMOTE) |
96 | #define BUTTON_RC_VOL_DOWN (0x0800 | BUTTON_REMOTE) | 93 | #define BUTTON_RC_VOL_DOWN (0x0800 | BUTTON_REMOTE) |
97 | #define BUTTON_RC_PLAY (BUTTON_UP | BUTTON_REMOTE) | ||
98 | #define BUTTON_RC_STOP (BUTTON_DOWN | BUTTON_REMOTE) | ||
99 | #define BUTTON_RC_LEFT (BUTTON_LEFT | BUTTON_REMOTE) | 94 | #define BUTTON_RC_LEFT (BUTTON_LEFT | BUTTON_REMOTE) |
100 | #define BUTTON_RC_RIGHT (BUTTON_RIGHT| BUTTON_REMOTE) | 95 | #define BUTTON_RC_RIGHT (BUTTON_RIGHT| BUTTON_REMOTE) |
101 | 96 | ||
102 | #ifdef HAVE_RECORDER_KEYPAD | 97 | #ifdef HAVE_RECORDER_KEYPAD |
103 | 98 | ||
104 | /* Recorder specific button codes */ | 99 | /* Recorder specific button codes */ |
100 | #define BUTTON_ON 0x0001 | ||
105 | #define BUTTON_OFF 0x0002 | 101 | #define BUTTON_OFF 0x0002 |
106 | #define BUTTON_PLAY 0x0004 | 102 | #define BUTTON_PLAY 0x0004 |
103 | #define BUTTON_UP 0x0010 | ||
104 | #define BUTTON_DOWN 0x0020 | ||
107 | #define BUTTON_F1 0x0100 | 105 | #define BUTTON_F1 0x0100 |
108 | #define BUTTON_F2 0x0200 | 106 | #define BUTTON_F2 0x0200 |
109 | #define BUTTON_F3 0x0400 | 107 | #define BUTTON_F3 0x0400 |
110 | 108 | ||
109 | #define BUTTON_RC_PLAY (BUTTON_PLAY | BUTTON_REMOTE) | ||
110 | #define BUTTON_RC_STOP (BUTTON_OFF | BUTTON_REMOTE) | ||
111 | |||
111 | #elif defined(HAVE_PLAYER_KEYPAD) | 112 | #elif defined(HAVE_PLAYER_KEYPAD) |
112 | 113 | ||
113 | /* Jukebox 6000 and Studio specific button codes */ | 114 | /* Jukebox 6000 and Studio specific button codes */ |
115 | #define BUTTON_ON 0x0001 | ||
114 | #define BUTTON_MENU 0x0002 | 116 | #define BUTTON_MENU 0x0002 |
115 | #define BUTTON_PLAY BUTTON_UP | 117 | #define BUTTON_PLAY 0x0010 |
116 | #define BUTTON_STOP BUTTON_DOWN | 118 | #define BUTTON_STOP 0x0020 |
119 | |||
120 | #define BUTTON_RC_PLAY (BUTTON_PLAY | BUTTON_REMOTE) | ||
121 | #define BUTTON_RC_STOP (BUTTON_STOP | BUTTON_REMOTE) | ||
117 | 122 | ||
118 | #elif defined HAVE_ONDIO_KEYPAD | 123 | #elif defined HAVE_ONDIO_KEYPAD |
119 | 124 | ||
120 | /* Ondio specific button codes */ | 125 | /* Ondio specific button codes */ |
121 | #define BUTTON_MENU 0x0002 | 126 | #define BUTTON_OFF 0x0002 |
122 | #define BUTTON_PLAY BUTTON_UP | 127 | #define BUTTON_UP 0x0010 |
123 | #define BUTTON_STOP BUTTON_DOWN | 128 | #define BUTTON_DOWN 0x0020 |
124 | /* ON is also interpreted as OFF, let's see if that helps a bit */ | 129 | #define BUTTON_MENU 0x0100 |
125 | #define BUTTON_OFF BUTTON_ON | ||
126 | #define BUTTON_F1 0x0100 /* unreacheable */ | ||
127 | #define BUTTON_F2 0x0200 /* unreacheable */ | ||
128 | #define BUTTON_F3 0x0400 /* unreacheable */ | ||
129 | 130 | ||
130 | #endif /* HAVE_RECORDER/PLAYER/ONDIO_KEYPAD */ | 131 | #endif /* HAVE_RECORDER/PLAYER/ONDIO_KEYPAD */ |
131 | 132 | ||
diff --git a/firmware/usb.c b/firmware/usb.c index 566f9c43d2..6c14b75f19 100644 --- a/firmware/usb.c +++ b/firmware/usb.c | |||
@@ -135,7 +135,7 @@ static void usb_slave_mode(bool on) | |||
135 | lcd_puts(0, 0, str); | 135 | lcd_puts(0, 0, str); |
136 | lcd_puts(0, 1, "Press ON to debug"); | 136 | lcd_puts(0, 1, "Press ON to debug"); |
137 | lcd_update(); | 137 | lcd_update(); |
138 | while(button_get(true) != BUTTON_ON) {}; | 138 | while(!(button_get(true) & BUTTON_REL)) {}; |
139 | dbg_ports(); | 139 | dbg_ports(); |
140 | panicf("ata: %d",rc); | 140 | panicf("ata: %d",rc); |
141 | } | 141 | } |
diff --git a/uisimulator/common/lcd-playersim.c b/uisimulator/common/lcd-playersim.c index 3f3453b9a1..5c8ca92f32 100644 --- a/uisimulator/common/lcd-playersim.c +++ b/uisimulator/common/lcd-playersim.c | |||
@@ -102,7 +102,7 @@ void lcd_print_char(int x, int y) | |||
102 | static char bitmap_content[11*8][2*8]; | 102 | static char bitmap_content[11*8][2*8]; |
103 | 103 | ||
104 | if (double_height == 2 && y == 1) | 104 | if (double_height == 2 && y == 1) |
105 | return; /* Second row can't be printed in double height. ??*/ | 105 | return; /* only one row available if text is double height */ |
106 | 106 | ||
107 | for (col=0; col<5; col++) { | 107 | for (col=0; col<5; col++) { |
108 | unsigned char fontbitmap=(*font_player)[ch][col]; | 108 | unsigned char fontbitmap=(*font_player)[ch][col]; |
diff --git a/uisimulator/win32/Makefile b/uisimulator/win32/Makefile index d105076f85..22ce4d65d1 100644 --- a/uisimulator/win32/Makefile +++ b/uisimulator/win32/Makefile | |||
@@ -23,6 +23,7 @@ PLAYDIR = $(APPDIR)/player | |||
23 | PLUGINDIR = $(APPDIR)/plugins | 23 | PLUGINDIR = $(APPDIR)/plugins |
24 | SIMCOMMON = ../common | 24 | SIMCOMMON = ../common |
25 | 25 | ||
26 | ISONDIO := $(findstring ONDIO, $(TARGET)) | ||
26 | ISPLAYER := $(findstring PLAYER, $(TARGET)) | 27 | ISPLAYER := $(findstring PLAYER, $(TARGET)) |
27 | ifeq ($(ISPLAYER), PLAYER) | 28 | ifeq ($(ISPLAYER), PLAYER) |
28 | MACHINEDIR = $(PLAYDIR) | 29 | MACHINEDIR = $(PLAYDIR) |
@@ -124,8 +125,10 @@ SRCS = button.c lcd-win32.c panic-win32.c thread-win32.c \ | |||
124 | 125 | ||
125 | OBJS := $(OBJDIR)/lang.o $(SRCS:%.c=$(OBJDIR)/%.o) $(OBJDIR)/uisw32-res.o | 126 | OBJS := $(OBJDIR)/lang.o $(SRCS:%.c=$(OBJDIR)/%.o) $(OBJDIR)/uisw32-res.o |
126 | 127 | ||
128 | ifneq ($(ISONDIO),ONDIO) | ||
127 | ROCKS := $(patsubst $(PLUGINDIR)/%.c,$(OBJDIR)/%.rock,$(wildcard $(PLUGINDIR)/*.c)) | 129 | ROCKS := $(patsubst $(PLUGINDIR)/%.c,$(OBJDIR)/%.rock,$(wildcard $(PLUGINDIR)/*.c)) |
128 | PLUGINLIBOBJS := $(patsubst $(PLUGINDIR)/lib/%.c,$(OBJDIR)/%.o,$(wildcard $(PLUGINDIR)/lib/*.c)) | 130 | PLUGINLIBOBJS := $(patsubst $(PLUGINDIR)/lib/%.c,$(OBJDIR)/%.o,$(wildcard $(PLUGINDIR)/lib/*.c)) |
131 | endif | ||
129 | 132 | ||
130 | all: $(TOOLSDIR)/convbdf $(EXEFILE) $(ROCKS) | 133 | all: $(TOOLSDIR)/convbdf $(EXEFILE) $(ROCKS) |
131 | 134 | ||
diff --git a/uisimulator/win32/button.c b/uisimulator/win32/button.c index 0af6ff40a6..5d56456f6e 100644 --- a/uisimulator/win32/button.c +++ b/uisimulator/win32/button.c | |||
@@ -59,22 +59,38 @@ void button_event(int key, bool pressed) | |||
59 | case VK_RIGHT: | 59 | case VK_RIGHT: |
60 | new_btn = BUTTON_RIGHT; | 60 | new_btn = BUTTON_RIGHT; |
61 | break; | 61 | break; |
62 | |||
62 | case VK_NUMPAD8: | 63 | case VK_NUMPAD8: |
63 | case VK_UP: | 64 | case VK_UP: |
65 | #ifdef BUTTON_UP | ||
64 | new_btn = BUTTON_UP; | 66 | new_btn = BUTTON_UP; |
67 | #elif defined BUTTON_PLAY | ||
68 | new_btn = BUTTON_PLAY; | ||
69 | #endif | ||
65 | break; | 70 | break; |
71 | |||
66 | case VK_NUMPAD2: | 72 | case VK_NUMPAD2: |
67 | case VK_DOWN: | 73 | case VK_DOWN: |
74 | #ifdef BUTTON_DOWN | ||
68 | new_btn = BUTTON_DOWN; | 75 | new_btn = BUTTON_DOWN; |
76 | #elif defined BUTTON_STOP | ||
77 | new_btn = BUTTON_STOP; | ||
78 | #endif | ||
69 | break; | 79 | break; |
80 | |||
81 | #ifdef BUTTON_ON | ||
70 | case VK_ADD: | 82 | case VK_ADD: |
71 | new_btn = BUTTON_ON; | 83 | new_btn = BUTTON_ON; |
72 | break; | 84 | break; |
85 | #endif | ||
73 | 86 | ||
74 | #ifdef HAVE_RECORDER_KEYPAD | 87 | #ifdef BUTTON_OFF |
75 | case VK_RETURN: | 88 | case VK_RETURN: |
76 | new_btn = BUTTON_OFF; | 89 | new_btn = BUTTON_OFF; |
77 | break; | 90 | break; |
91 | #endif | ||
92 | |||
93 | #ifdef BUTTON_F1 | ||
78 | case VK_DIVIDE: | 94 | case VK_DIVIDE: |
79 | case VK_F1: | 95 | case VK_F1: |
80 | new_btn = BUTTON_F1; | 96 | new_btn = BUTTON_F1; |
@@ -87,11 +103,16 @@ void button_event(int key, bool pressed) | |||
87 | case VK_F3: | 103 | case VK_F3: |
88 | new_btn = BUTTON_F3; | 104 | new_btn = BUTTON_F3; |
89 | break; | 105 | break; |
106 | #endif | ||
107 | |||
108 | #ifdef BUTTON_PLAY | ||
90 | case VK_NUMPAD5: | 109 | case VK_NUMPAD5: |
91 | case VK_SPACE: | 110 | case VK_SPACE: |
92 | new_btn = BUTTON_PLAY; | 111 | new_btn = BUTTON_PLAY; |
93 | break; | 112 | break; |
113 | #endif | ||
94 | 114 | ||
115 | #ifdef HAVE_LCD_BITMAP | ||
95 | case VK_NUMPAD0: | 116 | case VK_NUMPAD0: |
96 | case VK_F5: | 117 | case VK_F5: |
97 | if(pressed) | 118 | if(pressed) |
@@ -100,8 +121,14 @@ void button_event(int key, bool pressed) | |||
100 | return; | 121 | return; |
101 | } | 122 | } |
102 | break; | 123 | break; |
103 | #else | 124 | #endif |
125 | |||
126 | #ifdef BUTTON_MENU | ||
127 | #ifdef HAVE_PLAYER_KEYPAD | ||
104 | case VK_RETURN: | 128 | case VK_RETURN: |
129 | #elif defined HAVE_ONDIO_KEYPAD | ||
130 | case VK_INSERT: | ||
131 | #endif | ||
105 | new_btn = BUTTON_MENU; | 132 | new_btn = BUTTON_MENU; |
106 | break; | 133 | break; |
107 | #endif | 134 | #endif |
diff --git a/uisimulator/x11/Makefile b/uisimulator/x11/Makefile index 785e590623..2bc2cba267 100644 --- a/uisimulator/x11/Makefile +++ b/uisimulator/x11/Makefile | |||
@@ -23,6 +23,7 @@ PLAYDIR = $(APPDIR)/player | |||
23 | PLUGINDIR = $(APPDIR)/plugins | 23 | PLUGINDIR = $(APPDIR)/plugins |
24 | SIMCOMMON = ../common | 24 | SIMCOMMON = ../common |
25 | 25 | ||
26 | ISONDIO := $(findstring ONDIO, $(TARGET)) | ||
26 | ISPLAYER := $(findstring PLAYER, $(TARGET)) | 27 | ISPLAYER := $(findstring PLAYER, $(TARGET)) |
27 | ifeq ($(ISPLAYER), PLAYER) | 28 | ifeq ($(ISPLAYER), PLAYER) |
28 | MACHINEDIR = $(PLAYDIR) | 29 | MACHINEDIR = $(PLAYDIR) |
@@ -142,8 +143,10 @@ SRCS = screenhack.c uibasic.c resources.c visual.c lcd-x11.c \ | |||
142 | 143 | ||
143 | OBJS := $(OBJDIR)/lang.o $(SRCS:%.c=$(OBJDIR)/%.o) | 144 | OBJS := $(OBJDIR)/lang.o $(SRCS:%.c=$(OBJDIR)/%.o) |
144 | 145 | ||
146 | ifneq ($(ISONDIO),ONDIO) | ||
145 | ROCKS := $(patsubst $(PLUGINDIR)/%.c,$(OBJDIR)/%.rock,$(wildcard $(PLUGINDIR)/*.c)) | 147 | ROCKS := $(patsubst $(PLUGINDIR)/%.c,$(OBJDIR)/%.rock,$(wildcard $(PLUGINDIR)/*.c)) |
146 | PLUGINLIBOBJS := $(patsubst $(PLUGINDIR)/lib/%.c,$(OBJDIR)/%.o,$(wildcard $(PLUGINDIR)/lib/*.c)) | 148 | PLUGINLIBOBJS := $(patsubst $(PLUGINDIR)/lib/%.c,$(OBJDIR)/%.o,$(wildcard $(PLUGINDIR)/lib/*.c)) |
149 | endif | ||
147 | 150 | ||
148 | all: $(TOOLSDIR)/convbdf $(EXEFILE) $(ROCKS) | 151 | all: $(TOOLSDIR)/convbdf $(EXEFILE) $(ROCKS) |
149 | 152 | ||
@@ -249,11 +252,11 @@ $(OBJDIR)/%.o: %.c | |||
249 | $(CC) $(CFLAGS) -c $< -o $@ | 252 | $(CC) $(CFLAGS) -c $< -o $@ |
250 | 253 | ||
251 | ifeq ($(UNAME),CYGWIN) | 254 | ifeq ($(UNAME),CYGWIN) |
252 | $(EXEFILE): $(OBJS) $(OBJDIR)/libplugin.a | 255 | $(EXEFILE): $(OBJS) |
253 | @echo LD $@ | 256 | @echo LD $@ |
254 | @$(CC) -g -o $(EXEFILE) $(OBJS) $(LIBDIRS) $(LDFLAGS) $(LIBS) | 257 | @$(CC) -g -o $(EXEFILE) $(OBJS) $(LIBDIRS) $(LDFLAGS) $(LIBS) |
255 | else | 258 | else |
256 | $(EXEFILE): $(OBJS) $(OBJDIR)/libplugin.a | 259 | $(EXEFILE): $(OBJS) |
257 | @echo LD $@ | 260 | @echo LD $@ |
258 | @$(CC) -g -o $(EXEFILE) $(LIBDIRS) $(LDFLAGS) $(OBJS) $(LIBS) | 261 | @$(CC) -g -o $(EXEFILE) $(LIBDIRS) $(LDFLAGS) $(OBJS) $(LIBS) |
259 | endif | 262 | endif |
diff --git a/uisimulator/x11/button-x11.c b/uisimulator/x11/button-x11.c index 951bf730c5..534568b658 100644 --- a/uisimulator/x11/button-x11.c +++ b/uisimulator/x11/button-x11.c | |||
@@ -75,35 +75,49 @@ static int get_raw_button (void) | |||
75 | case XK_KP_Up: | 75 | case XK_KP_Up: |
76 | case XK_Up: | 76 | case XK_Up: |
77 | case XK_KP_8: | 77 | case XK_KP_8: |
78 | #ifdef BUTTON_UP | ||
78 | k = BUTTON_UP; | 79 | k = BUTTON_UP; |
80 | #elif defined BUTTON_PLAY | ||
81 | k = BUTTON_PLAY; | ||
82 | #endif | ||
79 | break; | 83 | break; |
80 | 84 | ||
81 | case XK_KP_Down: | 85 | case XK_KP_Down: |
82 | case XK_Down: | 86 | case XK_Down: |
83 | case XK_KP_2: | 87 | case XK_KP_2: |
88 | #ifdef BUTTON_DOWN | ||
84 | k = BUTTON_DOWN; | 89 | k = BUTTON_DOWN; |
90 | #elif defined BUTTON_STOP | ||
91 | k = BUTTON_STOP; | ||
92 | #endif | ||
85 | break; | 93 | break; |
86 | 94 | ||
87 | #ifdef HAVE_RECORDER_KEYPAD | 95 | #ifdef BUTTON_PLAY |
88 | case XK_KP_Space: | 96 | case XK_KP_Space: |
89 | case XK_KP_5: | 97 | case XK_KP_5: |
90 | case XK_KP_Begin: | 98 | case XK_KP_Begin: |
91 | case XK_space: | 99 | case XK_space: |
92 | k = BUTTON_PLAY; | 100 | k = BUTTON_PLAY; |
93 | break; | 101 | break; |
102 | #endif | ||
94 | 103 | ||
104 | #ifdef BUTTON_OFF | ||
95 | case XK_KP_Enter: | 105 | case XK_KP_Enter: |
96 | case XK_A: | 106 | case XK_A: |
97 | case XK_a: | 107 | case XK_a: |
98 | k = BUTTON_OFF; | 108 | k = BUTTON_OFF; |
99 | break; | 109 | break; |
110 | #endif | ||
100 | 111 | ||
112 | #ifdef BUTTON_ON | ||
101 | case XK_KP_Add: | 113 | case XK_KP_Add: |
102 | case XK_Q: | 114 | case XK_Q: |
103 | case XK_q: | 115 | case XK_q: |
104 | k = BUTTON_ON; | 116 | k = BUTTON_ON; |
105 | break; | 117 | break; |
118 | #endif | ||
106 | 119 | ||
120 | #ifdef BUTTON_F1 | ||
107 | case XK_KP_Divide: | 121 | case XK_KP_Divide: |
108 | case XK_1: | 122 | case XK_1: |
109 | k = BUTTON_F1; | 123 | k = BUTTON_F1; |
@@ -118,7 +132,9 @@ static int get_raw_button (void) | |||
118 | case XK_3: | 132 | case XK_3: |
119 | k = BUTTON_F3; | 133 | k = BUTTON_F3; |
120 | break; | 134 | break; |
135 | #endif | ||
121 | 136 | ||
137 | #ifdef HAVE_LCD_BITMAP | ||
122 | case XK_5: | 138 | case XK_5: |
123 | if(!release) | 139 | if(!release) |
124 | { | 140 | { |
@@ -126,16 +142,16 @@ static int get_raw_button (void) | |||
126 | return 0; | 142 | return 0; |
127 | } | 143 | } |
128 | break; | 144 | break; |
145 | #endif | ||
129 | 146 | ||
130 | #else | 147 | #ifdef BUTTON_MENU |
131 | case XK_KP_Add: | 148 | #ifdef HAVE_PLAYER_KEYPAD |
132 | case XK_Q: | ||
133 | case XK_q: | ||
134 | k = BUTTON_ON; | ||
135 | break; | ||
136 | |||
137 | case XK_KP_Enter: | 149 | case XK_KP_Enter: |
138 | case XK_Return: | 150 | case XK_Return: |
151 | #elif defined HAVE_ONDIO_KEYPAD | ||
152 | case XK_KP_Insert: | ||
153 | case XK_Control_R: | ||
154 | #endif | ||
139 | k = BUTTON_MENU; | 155 | k = BUTTON_MENU; |
140 | break; | 156 | break; |
141 | #endif | 157 | #endif |