summaryrefslogtreecommitdiff
path: root/apps/plugins/metronome.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/metronome.c')
-rw-r--r--apps/plugins/metronome.c180
1 files changed, 47 insertions, 133 deletions
diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c
index 7a975f434d..45a870b65b 100644
--- a/apps/plugins/metronome.c
+++ b/apps/plugins/metronome.c
@@ -17,100 +17,44 @@
17 * 17 *
18 ****************************************************************************/ 18 ****************************************************************************/
19#include "plugin.h" 19#include "plugin.h"
20#include "pluginlib_actions.h"
20 21
21PLUGIN_HEADER 22PLUGIN_HEADER
22 23
23/* variable button definitions */ 24#define METRONOME_QUIT PLA_QUIT
24#if CONFIG_KEYPAD == RECORDER_PAD 25#define METRONOME_VOL_UP PLA_UP
25#define METRONOME_QUIT BUTTON_OFF 26#define METRONOME_VOL_DOWN PLA_DOWN
26#define METRONOME_PLAYPAUSE BUTTON_PLAY 27#define METRONOME_VOL_UP_REP PLA_UP_REPEAT
27#define METRONOME_VOL_UP BUTTON_UP 28#define METRONOME_VOL_DOWN_REP PLA_DOWN_REPEAT
28#define METRONOME_VOL_DOWN BUTTON_DOWN 29#define METRONOME_TAP PLA_START
29#define METRONOME_TAP BUTTON_ON 30enum {
30#define METRONOME_MSG_START "press play" 31 METRONOME_PLAY_TAP = LAST_PLUGINLIB_ACTION+1,
31#define METRONOME_MSG_STOP "press pause" 32 METRONOME_PAUSE,
33 METRONOME_SYNC
34};
32 35
33#elif CONFIG_KEYPAD == ONDIO_PAD 36
34#define METRONOME_QUIT BUTTON_OFF 37#if CONFIG_KEYPAD == ONDIO_PAD
35#define METRONOME_PLAY_TAP BUTTON_MENU
36#define METRONOME_PAUSE (BUTTON_MENU | BUTTON_REPEAT)
37#define METRONOME_VOL_UP BUTTON_UP
38#define METRONOME_VOL_DOWN BUTTON_DOWN
39#define METRONOME_MSG_START "start: mode" 38#define METRONOME_MSG_START "start: mode"
40#define METRONOME_MSG_STOP "pause: hold mode" 39#define METRONOME_MSG_STOP "pause: hold mode"
41 40static const struct button_mapping ondio_action[] =
42#elif CONFIG_KEYPAD == PLAYER_PAD 41{
43#define METRONOME_QUIT BUTTON_STOP 42 {METRONOME_PLAY_TAP, BUTTON_MENU|BUTTON_REL, BUTTON_NONE },
44#define METRONOME_PLAYPAUSE BUTTON_PLAY 43 {METRONOME_PAUSE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE }
45#define METRONOME_VOL_UP (BUTTON_ON | BUTTON_RIGHT) 44};
46#define METRONOME_VOL_DOWN (BUTTON_ON | BUTTON_LEFT) 45#else
47#define METRONOME_TAP BUTTON_ON 46#define METRONOME_PLAYPAUSE PLA_FIRE
48
49#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
50#define METRONOME_QUIT BUTTON_OFF
51#define METRONOME_PLAYPAUSE BUTTON_ON
52#define METRONOME_VOL_UP BUTTON_UP
53#define METRONOME_VOL_DOWN BUTTON_DOWN
54#define METRONOME_TAP BUTTON_SELECT
55#define METRONOME_SYNC BUTTON_REC
56#define METRONOME_MSG_START "press play"
57#define METRONOME_MSG_STOP "press pause"
58
59#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
60 (CONFIG_KEYPAD == IPOD_3G_PAD)
61#define METRONOME_QUIT BUTTON_MENU
62#define METRONOME_PLAYPAUSE BUTTON_PLAY
63#define METRONOME_VOL_UP BUTTON_SCROLL_FWD
64#define METRONOME_VOL_DOWN BUTTON_SCROLL_BACK
65#define METRONOME_TAP BUTTON_SELECT
66#define METRONOME_MSG_START "press play"
67#define METRONOME_MSG_STOP "press pause"
68
69#elif (CONFIG_KEYPAD == IAUDIO_X5_PAD)
70#define METRONOME_QUIT BUTTON_POWER
71#define METRONOME_PLAYPAUSE BUTTON_PLAY
72#define METRONOME_VOL_UP BUTTON_UP
73#define METRONOME_VOL_DOWN BUTTON_DOWN
74#define METRONOME_TAP BUTTON_REC
75#define METRONOME_MSG_START "press play" 47#define METRONOME_MSG_START "press play"
76#define METRONOME_MSG_STOP "press pause" 48#define METRONOME_MSG_STOP "press pause"
77 49
78#elif (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) 50#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
79#define METRONOME_QUIT BUTTON_MODE 51static const struct button_mapping iriver_syncaction[] =
80#define METRONOME_PLAYPAUSE BUTTON_PLAY 52{
81#define METRONOME_VOL_UP BUTTON_UP 53 {METRONOME_SYNC, BUTTON_REC, BUTTON_NONE },
82#define METRONOME_VOL_DOWN BUTTON_DOWN 54};
83#define METRONOME_TAP BUTTON_EQ
84#define METRONOME_MSG_START "press play"
85#define METRONOME_MSG_STOP "press pause"
86#endif 55#endif
56#endif /* #if CONFIG_KEYPAD == ONDIO_PAD */
87 57
88#if CONFIG_REMOTE_KEYPAD == H100_REMOTE
89#define METRONOME_R_QUIT BUTTON_RC_STOP
90#define METRONOME_R_PLAYPAUSE BUTTON_RC_ON
91#define METRONOME_R_VOL_UP BUTTON_RC_VOL_UP
92#define METRONOME_R_VOL_DOWN BUTTON_RC_VOL_DOWN
93#define METRONOME_R_TAP BUTTON_RC_BITRATE
94
95#elif CONFIG_KEYPAD == SANSA_E200_PAD
96#define METRONOME_QUIT BUTTON_POWER
97#define METRONOME_PLAYPAUSE BUTTON_UP
98#define METRONOME_VOL_UP BUTTON_SCROLL_UP
99#define METRONOME_VOL_DOWN BUTTON_SCROLL_DOWN
100#define METRONOME_TAP BUTTON_SELECT
101#define METRONOME_MSG_START "press play"
102#define METRONOME_MSG_STOP "press pause"
103
104#elif CONFIG_KEYPAD == IRIVER_H10_PAD
105#define METRONOME_QUIT BUTTON_POWER
106#define METRONOME_PLAYPAUSE BUTTON_PLAY
107#define METRONOME_VOL_UP BUTTON_SCROLL_UP
108#define METRONOME_VOL_DOWN BUTTON_SCROLL_DOWN
109#define METRONOME_TAP BUTTON_FF
110#define METRONOME_MSG_START "press play"
111#define METRONOME_MSG_STOP "press pause"
112
113#endif
114 58
115static struct plugin_api* rb; 59static struct plugin_api* rb;
116 60
@@ -925,6 +869,21 @@ void tap(void)
925 869
926enum plugin_status plugin_start(struct plugin_api* api, void* parameter){ 870enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
927 int button; 871 int button;
872 const struct button_mapping *plugin_contexts[]
873 = {generic_directions,
874#if CONFIG_KEYPAD == ONDIO_PAD
875 ondio_action,
876#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
877 iriver_syncaction,
878#endif
879 generic_actions};
880#if (CONFIG_KEYPAD == ONDIO_PAD) \
881 || (CONFIG_KEYPAD == IRIVER_H100_PAD) \
882 || (CONFIG_KEYPAD == IRIVER_H300_PAD)
883#define PLA_ARRAY_COUNT 3
884#else
885#define PLA_ARRAY_COUNT 2
886#endif
928 887
929 (void)parameter; 888 (void)parameter;
930 rb = api; 889 rb = api;
@@ -947,53 +906,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
947 while (true){ 906 while (true){
948 reset_tap = true; 907 reset_tap = true;
949 908
950 button = rb->button_get(true); 909 button = pluginlib_getaction(rb,TIMEOUT_BLOCK,
951 910 plugin_contexts,PLA_ARRAY_COUNT);
952#if CONFIG_REMOTE_KEYPAD == H100_REMOTE
953 if(button && BUTTON_REMOTE) {
954 switch(button) {
955 case BUTTON_RC_STOP:
956 button = METRONOME_QUIT;
957 break;
958 case BUTTON_RC_ON:
959 button = METRONOME_PLAYPAUSE;
960 break;
961 case BUTTON_RC_VOL_UP:
962 button = METRONOME_VOL_UP;
963 break;
964 case BUTTON_RC_VOL_UP | BUTTON_REPEAT:
965 button = METRONOME_VOL_UP | BUTTON_REPEAT;
966 break;
967 case BUTTON_RC_VOL_DOWN:
968 button = METRONOME_VOL_DOWN;
969 break;
970 case BUTTON_RC_VOL_DOWN | BUTTON_REPEAT:
971 button = METRONOME_VOL_DOWN | BUTTON_REPEAT;
972 break;
973 case BUTTON_RC_FF:
974 button = BUTTON_RIGHT;
975 break;
976 case BUTTON_RC_FF | BUTTON_REPEAT:
977 button = BUTTON_RIGHT | BUTTON_REPEAT;
978 break;
979 case BUTTON_RC_REW:
980 button = BUTTON_LEFT;
981 break;
982 case BUTTON_RC_REW | BUTTON_REPEAT:
983 button = BUTTON_LEFT | BUTTON_REPEAT;
984 break;
985 case BUTTON_RC_MODE:
986 button = METRONOME_SYNC;
987 break;
988 case BUTTON_RC_REC:
989 case BUTTON_RC_SOURCE:
990 case BUTTON_RC_MENU:
991 case BUTTON_RC_BITRATE:
992 button = METRONOME_TAP;
993 break;
994 }
995 }
996#endif
997 911
998 switch (button) { 912 switch (button) {
999 913
@@ -1031,13 +945,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
1031#endif 945#endif
1032 946
1033 case METRONOME_VOL_UP: 947 case METRONOME_VOL_UP:
1034 case METRONOME_VOL_UP | BUTTON_REPEAT: 948 case METRONOME_VOL_UP_REP:
1035 change_volume(1); 949 change_volume(1);
1036 calc_period(); 950 calc_period();
1037 break; 951 break;
1038 952
1039 case METRONOME_VOL_DOWN: 953 case METRONOME_VOL_DOWN:
1040 case METRONOME_VOL_DOWN | BUTTON_REPEAT: 954 case METRONOME_VOL_DOWN_REP:
1041 change_volume(-1); 955 change_volume(-1);
1042 calc_period(); 956 calc_period();
1043 break; 957 break;
@@ -1060,7 +974,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
1060 break; 974 break;
1061#endif 975#endif
1062 976
1063#ifdef METRONOME_SYNC 977#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
1064 case METRONOME_SYNC: 978 case METRONOME_SYNC:
1065 minitick = period; 979 minitick = period;
1066 break; 980 break;