diff options
Diffstat (limited to 'apps/plugins/metronome.c')
-rw-r--r-- | apps/plugins/metronome.c | 180 |
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 | ||
21 | PLUGIN_HEADER | 22 | PLUGIN_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 | 30 | enum { |
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 | 40 | static 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 | 51 | static 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 | ||
115 | static struct plugin_api* rb; | 59 | static struct plugin_api* rb; |
116 | 60 | ||
@@ -925,6 +869,21 @@ void tap(void) | |||
925 | 869 | ||
926 | enum plugin_status plugin_start(struct plugin_api* api, void* parameter){ | 870 | enum 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; |