diff options
88 files changed, 3333 insertions, 44 deletions
diff --git a/apps/SOURCES b/apps/SOURCES index 67fe678287..20e6fa9d2d 100644 --- a/apps/SOURCES +++ b/apps/SOURCES | |||
@@ -323,4 +323,8 @@ keymaps/keymap-dx50.c | |||
323 | keymaps/keymap-agptekrocker.c | 323 | keymaps/keymap-agptekrocker.c |
324 | #elif CONFIG_KEYPAD == XDUOO_X3_PAD | 324 | #elif CONFIG_KEYPAD == XDUOO_X3_PAD |
325 | keymaps/keymap-xduoox3.c | 325 | keymaps/keymap-xduoox3.c |
326 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
327 | keymaps/keymap-xduoox3ii.c | ||
328 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
329 | keymaps/keymap-xduoox20.c | ||
326 | #endif | 330 | #endif |
diff --git a/apps/bitmaps/native/SOURCES b/apps/bitmaps/native/SOURCES index ea726d4c07..f74f289214 100644 --- a/apps/bitmaps/native/SOURCES +++ b/apps/bitmaps/native/SOURCES | |||
@@ -48,6 +48,10 @@ toolsicon.130x130x16.bmp | |||
48 | hibyicon.70x70x16.bmp | 48 | hibyicon.70x70x16.bmp |
49 | rockboxicon.70x70x16.bmp | 49 | rockboxicon.70x70x16.bmp |
50 | toolsicon.70x70x16.bmp | 50 | toolsicon.70x70x16.bmp |
51 | #elif (defined(XDUOO_X3II) || defined(XDUOO_X20)) | ||
52 | hibyicon.130x130x16.bmp | ||
53 | rockboxicon.130x130x16.bmp | ||
54 | toolsicon.130x130x16.bmp | ||
51 | #endif | 55 | #endif |
52 | #endif | 56 | #endif |
53 | 57 | ||
diff --git a/apps/bitmaps/native/hibyicon.130x130x16.bmp b/apps/bitmaps/native/hibyicon.130x130x16.bmp new file mode 100644 index 0000000000..0c31b90e28 --- /dev/null +++ b/apps/bitmaps/native/hibyicon.130x130x16.bmp | |||
Binary files differ | |||
diff --git a/apps/keymaps/keymap-xduoox20.c b/apps/keymaps/keymap-xduoox20.c new file mode 100644 index 0000000000..3b1b01b7fa --- /dev/null +++ b/apps/keymaps/keymap-xduoox20.c | |||
@@ -0,0 +1,213 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2018 by Roman Stolyarov | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | /* Button Code Definitions for xDuoo X20 target */ | ||
23 | |||
24 | #include "config.h" | ||
25 | #include "action.h" | ||
26 | #include "button.h" | ||
27 | #include "settings.h" | ||
28 | |||
29 | /* {Action Code, Button code, Prereq button code } */ | ||
30 | |||
31 | /* | ||
32 | * The format of the list is as follows | ||
33 | * { Action Code, Button code, Prereq button code } | ||
34 | * if there's no need to check the previous button's value, use BUTTON_NONE | ||
35 | * Insert LAST_ITEM_IN_LIST at the end of each mapping | ||
36 | */ | ||
37 | static const struct button_mapping button_context_standard[] = { | ||
38 | { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE }, | ||
39 | { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
40 | { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE }, | ||
41 | { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
42 | { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
43 | { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
44 | { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
45 | { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION }, | ||
46 | |||
47 | LAST_ITEM_IN_LIST | ||
48 | }; /* button_context_standard */ | ||
49 | |||
50 | static const struct button_mapping button_context_wps[] = { | ||
51 | { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
52 | { ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV }, | ||
53 | { ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
54 | { ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT }, | ||
55 | { ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT }, | ||
56 | { ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
57 | { ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT }, | ||
58 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, | ||
59 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
60 | { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
61 | { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
62 | { ACTION_WPS_BROWSE, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
63 | { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
64 | { ACTION_WPS_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION }, | ||
65 | { ACTION_WPS_QUICKSCREEN, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION }, | ||
66 | { ACTION_WPS_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME }, | ||
67 | |||
68 | LAST_ITEM_IN_LIST | ||
69 | }; /* button_context_wps */ | ||
70 | |||
71 | static const struct button_mapping button_context_list[] = { | ||
72 | { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, | ||
73 | { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
74 | { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
75 | { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
76 | |||
77 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
78 | }; /* button_context_list */ | ||
79 | |||
80 | /** Bookmark Screen **/ | ||
81 | static const struct button_mapping button_context_bmark[] = { | ||
82 | { ACTION_BMS_DELETE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
83 | |||
84 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | ||
85 | }; /* button_context_bmark */ | ||
86 | |||
87 | /** Keyboard **/ | ||
88 | static const struct button_mapping button_context_keyboard[] = { | ||
89 | { ACTION_KBD_LEFT, BUTTON_PREV, BUTTON_NONE }, | ||
90 | { ACTION_KBD_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
91 | { ACTION_KBD_RIGHT, BUTTON_NEXT, BUTTON_NONE }, | ||
92 | { ACTION_KBD_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
93 | { ACTION_KBD_DOWN, BUTTON_OPTION, BUTTON_NONE }, | ||
94 | { ACTION_KBD_DOWN, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, | ||
95 | { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP, BUTTON_NONE }, | ||
96 | { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
97 | { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
98 | { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
99 | { ACTION_KBD_BACKSPACE, BUTTON_HOME, BUTTON_NONE }, | ||
100 | { ACTION_KBD_BACKSPACE, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, | ||
101 | { ACTION_KBD_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
102 | { ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
103 | { ACTION_KBD_ABORT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | ||
104 | |||
105 | LAST_ITEM_IN_LIST | ||
106 | }; /* button_context_keyboard */ | ||
107 | |||
108 | /** Pitchscreen **/ | ||
109 | static const struct button_mapping button_context_pitchscreen[] = { | ||
110 | { ACTION_PS_INC_SMALL, BUTTON_VOL_UP, BUTTON_NONE }, | ||
111 | { ACTION_PS_INC_BIG, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
112 | { ACTION_PS_DEC_SMALL, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
113 | { ACTION_PS_DEC_BIG, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
114 | { ACTION_PS_NUDGE_LEFT, BUTTON_PREV, BUTTON_NONE }, | ||
115 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_PREV|BUTTON_REL, BUTTON_NONE }, | ||
116 | { ACTION_PS_NUDGE_RIGHT, BUTTON_NEXT, BUTTON_NONE }, | ||
117 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE }, | ||
118 | { ACTION_PS_TOGGLE_MODE, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE }, | ||
119 | { ACTION_PS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | ||
120 | { ACTION_PS_EXIT, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
121 | { ACTION_PS_SLOWER, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
122 | { ACTION_PS_FASTER, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
123 | |||
124 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
125 | }; /* button_context_pitchscreen */ | ||
126 | |||
127 | /** Quickscreen **/ | ||
128 | static const struct button_mapping button_context_quickscreen[] = { | ||
129 | { ACTION_QS_TOP, BUTTON_VOL_UP, BUTTON_NONE }, | ||
130 | { ACTION_QS_TOP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
131 | { ACTION_QS_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
132 | { ACTION_QS_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
133 | { ACTION_QS_LEFT, BUTTON_PREV, BUTTON_NONE }, | ||
134 | { ACTION_QS_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
135 | { ACTION_QS_RIGHT, BUTTON_NEXT, BUTTON_NONE }, | ||
136 | { ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
137 | { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
138 | |||
139 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
140 | }; /* button_context_quickscreen */ | ||
141 | |||
142 | /** Settings - General Mappings **/ | ||
143 | static const struct button_mapping button_context_settings[] = { | ||
144 | { ACTION_SETTINGS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | ||
145 | { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE }, | ||
146 | { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
147 | { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE }, | ||
148 | { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
149 | { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
150 | { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
151 | |||
152 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
153 | }; /* button_context_settings */ | ||
154 | |||
155 | static const struct button_mapping button_context_settings_vol_is_inc[] = { | ||
156 | { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE }, | ||
157 | { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
158 | { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
159 | { ACTION_SETTINGS_DECREPEAT,BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
160 | |||
161 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
162 | }; /* button_context_settings_right_is_inc */ | ||
163 | |||
164 | /** Tree **/ | ||
165 | static const struct button_mapping button_context_tree[] = { | ||
166 | { ACTION_TREE_WPS, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION }, | ||
167 | { ACTION_TREE_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME }, | ||
168 | { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION }, | ||
169 | |||
170 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | ||
171 | }; /* button_context_tree */ | ||
172 | |||
173 | /** Yes/No Screen **/ | ||
174 | static const struct button_mapping button_context_yesnoscreen[] = { | ||
175 | { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE }, | ||
176 | |||
177 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
178 | }; /* button_context_settings_yesnoscreen */ | ||
179 | |||
180 | /* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ | ||
181 | const struct button_mapping* get_context_mapping(int context) | ||
182 | { | ||
183 | switch (context) | ||
184 | { | ||
185 | case CONTEXT_LIST: | ||
186 | return button_context_list; | ||
187 | case CONTEXT_STD: | ||
188 | return button_context_standard; | ||
189 | case CONTEXT_BOOKMARKSCREEN: | ||
190 | return button_context_bmark; | ||
191 | case CONTEXT_KEYBOARD: | ||
192 | return button_context_keyboard; | ||
193 | case CONTEXT_PITCHSCREEN: | ||
194 | return button_context_pitchscreen; | ||
195 | case CONTEXT_QUICKSCREEN: | ||
196 | return button_context_quickscreen; | ||
197 | case CONTEXT_SETTINGS: | ||
198 | return button_context_settings; | ||
199 | case CONTEXT_SETTINGS_TIME: | ||
200 | case CONTEXT_SETTINGS_COLOURCHOOSER: | ||
201 | case CONTEXT_SETTINGS_EQ: | ||
202 | case CONTEXT_SETTINGS_RECTRIGGER: | ||
203 | return button_context_settings_vol_is_inc; | ||
204 | case CONTEXT_TREE: | ||
205 | case CONTEXT_MAINMENU: | ||
206 | return button_context_tree; | ||
207 | case CONTEXT_WPS: | ||
208 | return button_context_wps; | ||
209 | case CONTEXT_YESNOSCREEN: | ||
210 | return button_context_yesnoscreen; | ||
211 | } | ||
212 | return button_context_standard; | ||
213 | } | ||
diff --git a/apps/keymaps/keymap-xduoox3ii.c b/apps/keymaps/keymap-xduoox3ii.c new file mode 100644 index 0000000000..d30efaed2c --- /dev/null +++ b/apps/keymaps/keymap-xduoox3ii.c | |||
@@ -0,0 +1,213 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2018 by Roman Stolyarov | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | /* Button Code Definitions for xDuoo X3ii target */ | ||
23 | |||
24 | #include "config.h" | ||
25 | #include "action.h" | ||
26 | #include "button.h" | ||
27 | #include "settings.h" | ||
28 | |||
29 | /* {Action Code, Button code, Prereq button code } */ | ||
30 | |||
31 | /* | ||
32 | * The format of the list is as follows | ||
33 | * { Action Code, Button code, Prereq button code } | ||
34 | * if there's no need to check the previous button's value, use BUTTON_NONE | ||
35 | * Insert LAST_ITEM_IN_LIST at the end of each mapping | ||
36 | */ | ||
37 | static const struct button_mapping button_context_standard[] = { | ||
38 | { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE }, | ||
39 | { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
40 | { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE }, | ||
41 | { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
42 | { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
43 | { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
44 | { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
45 | { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION }, | ||
46 | |||
47 | LAST_ITEM_IN_LIST | ||
48 | }; /* button_context_standard */ | ||
49 | |||
50 | static const struct button_mapping button_context_wps[] = { | ||
51 | { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
52 | { ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV }, | ||
53 | { ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
54 | { ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT }, | ||
55 | { ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT }, | ||
56 | { ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
57 | { ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT }, | ||
58 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, | ||
59 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
60 | { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
61 | { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
62 | { ACTION_WPS_BROWSE, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
63 | { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
64 | { ACTION_WPS_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION }, | ||
65 | { ACTION_WPS_QUICKSCREEN, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION }, | ||
66 | { ACTION_WPS_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME }, | ||
67 | |||
68 | LAST_ITEM_IN_LIST | ||
69 | }; /* button_context_wps */ | ||
70 | |||
71 | static const struct button_mapping button_context_list[] = { | ||
72 | { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, | ||
73 | { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
74 | { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
75 | { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
76 | |||
77 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
78 | }; /* button_context_list */ | ||
79 | |||
80 | /** Bookmark Screen **/ | ||
81 | static const struct button_mapping button_context_bmark[] = { | ||
82 | { ACTION_BMS_DELETE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
83 | |||
84 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | ||
85 | }; /* button_context_bmark */ | ||
86 | |||
87 | /** Keyboard **/ | ||
88 | static const struct button_mapping button_context_keyboard[] = { | ||
89 | { ACTION_KBD_LEFT, BUTTON_PREV, BUTTON_NONE }, | ||
90 | { ACTION_KBD_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
91 | { ACTION_KBD_RIGHT, BUTTON_NEXT, BUTTON_NONE }, | ||
92 | { ACTION_KBD_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
93 | { ACTION_KBD_DOWN, BUTTON_OPTION, BUTTON_NONE }, | ||
94 | { ACTION_KBD_DOWN, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, | ||
95 | { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP, BUTTON_NONE }, | ||
96 | { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
97 | { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
98 | { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
99 | { ACTION_KBD_BACKSPACE, BUTTON_HOME, BUTTON_NONE }, | ||
100 | { ACTION_KBD_BACKSPACE, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, | ||
101 | { ACTION_KBD_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
102 | { ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | ||
103 | { ACTION_KBD_ABORT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | ||
104 | |||
105 | LAST_ITEM_IN_LIST | ||
106 | }; /* button_context_keyboard */ | ||
107 | |||
108 | /** Pitchscreen **/ | ||
109 | static const struct button_mapping button_context_pitchscreen[] = { | ||
110 | { ACTION_PS_INC_SMALL, BUTTON_VOL_UP, BUTTON_NONE }, | ||
111 | { ACTION_PS_INC_BIG, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
112 | { ACTION_PS_DEC_SMALL, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
113 | { ACTION_PS_DEC_BIG, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
114 | { ACTION_PS_NUDGE_LEFT, BUTTON_PREV, BUTTON_NONE }, | ||
115 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_PREV|BUTTON_REL, BUTTON_NONE }, | ||
116 | { ACTION_PS_NUDGE_RIGHT, BUTTON_NEXT, BUTTON_NONE }, | ||
117 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE }, | ||
118 | { ACTION_PS_TOGGLE_MODE, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE }, | ||
119 | { ACTION_PS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | ||
120 | { ACTION_PS_EXIT, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
121 | { ACTION_PS_SLOWER, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
122 | { ACTION_PS_FASTER, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
123 | |||
124 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
125 | }; /* button_context_pitchscreen */ | ||
126 | |||
127 | /** Quickscreen **/ | ||
128 | static const struct button_mapping button_context_quickscreen[] = { | ||
129 | { ACTION_QS_TOP, BUTTON_VOL_UP, BUTTON_NONE }, | ||
130 | { ACTION_QS_TOP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
131 | { ACTION_QS_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
132 | { ACTION_QS_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
133 | { ACTION_QS_LEFT, BUTTON_PREV, BUTTON_NONE }, | ||
134 | { ACTION_QS_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
135 | { ACTION_QS_RIGHT, BUTTON_NEXT, BUTTON_NONE }, | ||
136 | { ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
137 | { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
138 | |||
139 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
140 | }; /* button_context_quickscreen */ | ||
141 | |||
142 | /** Settings - General Mappings **/ | ||
143 | static const struct button_mapping button_context_settings[] = { | ||
144 | { ACTION_SETTINGS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | ||
145 | { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE }, | ||
146 | { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
147 | { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE }, | ||
148 | { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
149 | { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | ||
150 | { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
151 | |||
152 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
153 | }; /* button_context_settings */ | ||
154 | |||
155 | static const struct button_mapping button_context_settings_vol_is_inc[] = { | ||
156 | { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE }, | ||
157 | { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
158 | { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE }, | ||
159 | { ACTION_SETTINGS_DECREPEAT,BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
160 | |||
161 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
162 | }; /* button_context_settings_right_is_inc */ | ||
163 | |||
164 | /** Tree **/ | ||
165 | static const struct button_mapping button_context_tree[] = { | ||
166 | { ACTION_TREE_WPS, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION }, | ||
167 | { ACTION_TREE_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME }, | ||
168 | { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION }, | ||
169 | |||
170 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | ||
171 | }; /* button_context_tree */ | ||
172 | |||
173 | /** Yes/No Screen **/ | ||
174 | static const struct button_mapping button_context_yesnoscreen[] = { | ||
175 | { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE }, | ||
176 | |||
177 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
178 | }; /* button_context_settings_yesnoscreen */ | ||
179 | |||
180 | /* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ | ||
181 | const struct button_mapping* get_context_mapping(int context) | ||
182 | { | ||
183 | switch (context) | ||
184 | { | ||
185 | case CONTEXT_LIST: | ||
186 | return button_context_list; | ||
187 | case CONTEXT_STD: | ||
188 | return button_context_standard; | ||
189 | case CONTEXT_BOOKMARKSCREEN: | ||
190 | return button_context_bmark; | ||
191 | case CONTEXT_KEYBOARD: | ||
192 | return button_context_keyboard; | ||
193 | case CONTEXT_PITCHSCREEN: | ||
194 | return button_context_pitchscreen; | ||
195 | case CONTEXT_QUICKSCREEN: | ||
196 | return button_context_quickscreen; | ||
197 | case CONTEXT_SETTINGS: | ||
198 | return button_context_settings; | ||
199 | case CONTEXT_SETTINGS_TIME: | ||
200 | case CONTEXT_SETTINGS_COLOURCHOOSER: | ||
201 | case CONTEXT_SETTINGS_EQ: | ||
202 | case CONTEXT_SETTINGS_RECTRIGGER: | ||
203 | return button_context_settings_vol_is_inc; | ||
204 | case CONTEXT_TREE: | ||
205 | case CONTEXT_MAINMENU: | ||
206 | return button_context_tree; | ||
207 | case CONTEXT_WPS: | ||
208 | return button_context_wps; | ||
209 | case CONTEXT_YESNOSCREEN: | ||
210 | return button_context_yesnoscreen; | ||
211 | } | ||
212 | return button_context_standard; | ||
213 | } | ||
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c index 21b2ce4963..f24ad579e8 100644 --- a/apps/plugins/battery_bench.c +++ b/apps/plugins/battery_bench.c | |||
@@ -298,6 +298,18 @@ | |||
298 | #define BATTERY_ON_TXT "PLAY - start" | 298 | #define BATTERY_ON_TXT "PLAY - start" |
299 | #define BATTERY_OFF_TXT "POWER" | 299 | #define BATTERY_OFF_TXT "POWER" |
300 | 300 | ||
301 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
302 | #define BATTERY_ON BUTTON_PLAY | ||
303 | #define BATTERY_OFF BUTTON_POWER | ||
304 | #define BATTERY_ON_TXT "Play - start" | ||
305 | #define BATTERY_OFF_TXT "POWER" | ||
306 | |||
307 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
308 | #define BATTERY_ON BUTTON_PLAY | ||
309 | #define BATTERY_OFF BUTTON_POWER | ||
310 | #define BATTERY_ON_TXT "Play - start" | ||
311 | #define BATTERY_OFF_TXT "POWER" | ||
312 | |||
301 | #else | 313 | #else |
302 | #error No keymap defined! | 314 | #error No keymap defined! |
303 | #endif | 315 | #endif |
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c index 52881f0af2..4511d3fad5 100644 --- a/apps/plugins/blackjack.c +++ b/apps/plugins/blackjack.c | |||
@@ -589,6 +589,38 @@ enum { | |||
589 | #define BJACK_RIGHT BUTTON_NEXT | 589 | #define BJACK_RIGHT BUTTON_NEXT |
590 | #define BJACK_LEFT BUTTON_PREV | 590 | #define BJACK_LEFT BUTTON_PREV |
591 | 591 | ||
592 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
593 | #define BJACK_SELECT_NAME "PLAY" | ||
594 | #define BJACK_STAY_NAME "NEXT" | ||
595 | #define BJACK_QUIT_NAME "POWER" | ||
596 | #define BJACK_DOUBLE_NAME "PREV" | ||
597 | #define BJACK_SELECT BUTTON_PLAY | ||
598 | #define BJACK_QUIT BUTTON_POWER | ||
599 | #define BJACK_MAX BUTTON_VOL_UP | ||
600 | #define BJACK_MIN BUTTON_VOL_DOWN | ||
601 | #define BJACK_STAY BUTTON_NEXT | ||
602 | #define BJACK_DOUBLEDOWN BUTTON_PREV | ||
603 | #define BJACK_UP BUTTON_HOME | ||
604 | #define BJACK_DOWN BUTTON_OPTION | ||
605 | #define BJACK_RIGHT BUTTON_NEXT | ||
606 | #define BJACK_LEFT BUTTON_PREV | ||
607 | |||
608 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
609 | #define BJACK_SELECT_NAME "PLAY" | ||
610 | #define BJACK_STAY_NAME "NEXT" | ||
611 | #define BJACK_QUIT_NAME "POWER" | ||
612 | #define BJACK_DOUBLE_NAME "PREV" | ||
613 | #define BJACK_SELECT BUTTON_PLAY | ||
614 | #define BJACK_QUIT BUTTON_POWER | ||
615 | #define BJACK_MAX BUTTON_VOL_UP | ||
616 | #define BJACK_MIN BUTTON_VOL_DOWN | ||
617 | #define BJACK_STAY BUTTON_NEXT | ||
618 | #define BJACK_DOUBLEDOWN BUTTON_PREV | ||
619 | #define BJACK_UP BUTTON_HOME | ||
620 | #define BJACK_DOWN BUTTON_OPTION | ||
621 | #define BJACK_RIGHT BUTTON_NEXT | ||
622 | #define BJACK_LEFT BUTTON_PREV | ||
623 | |||
592 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 624 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
593 | #define BJACK_SELECT_NAME "PLAY" | 625 | #define BJACK_SELECT_NAME "PLAY" |
594 | #define BJACK_STAY_NAME "NEXT" | 626 | #define BJACK_STAY_NAME "NEXT" |
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c index f7c9f9adf2..c5d74bcf37 100644 --- a/apps/plugins/brickmania.c +++ b/apps/plugins/brickmania.c | |||
@@ -342,6 +342,26 @@ CONFIG_KEYPAD == SANSA_CONNECT_PAD | |||
342 | #define UP BUTTON_HOME | 342 | #define UP BUTTON_HOME |
343 | #define DOWN BUTTON_OPTION | 343 | #define DOWN BUTTON_OPTION |
344 | 344 | ||
345 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
346 | #define QUIT BUTTON_POWER | ||
347 | #define LEFT BUTTON_PREV | ||
348 | #define RIGHT BUTTON_NEXT | ||
349 | #define ALTLEFT BUTTON_VOL_DOWN | ||
350 | #define ALTRIGHT BUTTON_VOL_UP | ||
351 | #define SELECT BUTTON_PLAY | ||
352 | #define UP BUTTON_HOME | ||
353 | #define DOWN BUTTON_OPTION | ||
354 | |||
355 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
356 | #define QUIT BUTTON_POWER | ||
357 | #define LEFT BUTTON_PREV | ||
358 | #define RIGHT BUTTON_NEXT | ||
359 | #define ALTLEFT BUTTON_VOL_DOWN | ||
360 | #define ALTRIGHT BUTTON_VOL_UP | ||
361 | #define SELECT BUTTON_PLAY | ||
362 | #define UP BUTTON_HOME | ||
363 | #define DOWN BUTTON_OPTION | ||
364 | |||
345 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 365 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
346 | #define QUIT BUTTON_POWER | 366 | #define QUIT BUTTON_POWER |
347 | #define LEFT BUTTON_HOME | 367 | #define LEFT BUTTON_HOME |
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c index a4a29ff6ac..be5087967c 100644 --- a/apps/plugins/calculator.c +++ b/apps/plugins/calculator.c | |||
@@ -536,6 +536,28 @@ F3: equal to "=" | |||
536 | #define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT) | 536 | #define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT) |
537 | #define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT) | 537 | #define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT) |
538 | 538 | ||
539 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
540 | #define CALCULATOR_LEFT BUTTON_PREV | ||
541 | #define CALCULATOR_RIGHT BUTTON_NEXT | ||
542 | #define CALCULATOR_UP BUTTON_HOME | ||
543 | #define CALCULATOR_DOWN BUTTON_OPTION | ||
544 | #define CALCULATOR_QUIT BUTTON_POWER | ||
545 | #define CALCULATOR_INPUT_CALC_PRE (BUTTON_OPTION|BUTTON_REPEAT) | ||
546 | #define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL) | ||
547 | #define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT) | ||
548 | #define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT) | ||
549 | |||
550 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
551 | #define CALCULATOR_LEFT BUTTON_PREV | ||
552 | #define CALCULATOR_RIGHT BUTTON_NEXT | ||
553 | #define CALCULATOR_UP BUTTON_HOME | ||
554 | #define CALCULATOR_DOWN BUTTON_OPTION | ||
555 | #define CALCULATOR_QUIT BUTTON_POWER | ||
556 | #define CALCULATOR_INPUT_CALC_PRE (BUTTON_OPTION|BUTTON_REPEAT) | ||
557 | #define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL) | ||
558 | #define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT) | ||
559 | #define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT) | ||
560 | |||
539 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 561 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
540 | #define CALCULATOR_LEFT BUTTON_HOME | 562 | #define CALCULATOR_LEFT BUTTON_HOME |
541 | #define CALCULATOR_RIGHT BUTTON_VOL_DOWN | 563 | #define CALCULATOR_RIGHT BUTTON_VOL_DOWN |
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c index 56f9bde193..af550685cc 100644 --- a/apps/plugins/calendar.c +++ b/apps/plugins/calendar.c | |||
@@ -423,6 +423,26 @@ | |||
423 | #define CALENDAR_NEXT_MONTH BUTTON_VOL_UP | 423 | #define CALENDAR_NEXT_MONTH BUTTON_VOL_UP |
424 | #define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN | 424 | #define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN |
425 | 425 | ||
426 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
427 | #define CALENDAR_QUIT BUTTON_POWER | ||
428 | #define CALENDAR_SELECT BUTTON_PLAY | ||
429 | #define CALENDAR_NEXT_WEEK BUTTON_OPTION | ||
430 | #define CALENDAR_PREV_WEEK BUTTON_HOME | ||
431 | #define CALENDAR_NEXT_DAY BUTTON_NEXT | ||
432 | #define CALENDAR_PREV_DAY BUTTON_PREV | ||
433 | #define CALENDAR_NEXT_MONTH BUTTON_VOL_UP | ||
434 | #define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN | ||
435 | |||
436 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
437 | #define CALENDAR_QUIT BUTTON_POWER | ||
438 | #define CALENDAR_SELECT BUTTON_PLAY | ||
439 | #define CALENDAR_NEXT_WEEK BUTTON_OPTION | ||
440 | #define CALENDAR_PREV_WEEK BUTTON_HOME | ||
441 | #define CALENDAR_NEXT_DAY BUTTON_NEXT | ||
442 | #define CALENDAR_PREV_DAY BUTTON_PREV | ||
443 | #define CALENDAR_NEXT_MONTH BUTTON_VOL_UP | ||
444 | #define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN | ||
445 | |||
426 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 446 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
427 | #define CALENDAR_QUIT BUTTON_POWER | 447 | #define CALENDAR_QUIT BUTTON_POWER |
428 | #define CALENDAR_SELECT BUTTON_PLAY | 448 | #define CALENDAR_SELECT BUTTON_PLAY |
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h index 3c4d5357a5..9d37953c6f 100644 --- a/apps/plugins/chessbox/chessbox_pgn.h +++ b/apps/plugins/chessbox/chessbox_pgn.h | |||
@@ -572,6 +572,34 @@ | |||
572 | #define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT) | 572 | #define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT) |
573 | #define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT) | 573 | #define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT) |
574 | 574 | ||
575 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
576 | #define CB_SELECT BUTTON_PLAY | ||
577 | #define CB_UP BUTTON_HOME | ||
578 | #define CB_DOWN BUTTON_OPTION | ||
579 | #define CB_LEFT BUTTON_PREV | ||
580 | #define CB_RIGHT BUTTON_NEXT | ||
581 | #define CB_PLAY BUTTON_VOL_UP | ||
582 | #define CB_LEVEL BUTTON_VOL_DOWN | ||
583 | #define CB_MENU BUTTON_POWER | ||
584 | #define CB_SCROLL_UP (BUTTON_HOME|BUTTON_REPEAT) | ||
585 | #define CB_SCROLL_DOWN (BUTTON_OPTION|BUTTON_REPEAT) | ||
586 | #define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT) | ||
587 | #define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT) | ||
588 | |||
589 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
590 | #define CB_SELECT BUTTON_PLAY | ||
591 | #define CB_UP BUTTON_HOME | ||
592 | #define CB_DOWN BUTTON_OPTION | ||
593 | #define CB_LEFT BUTTON_PREV | ||
594 | #define CB_RIGHT BUTTON_NEXT | ||
595 | #define CB_PLAY BUTTON_VOL_UP | ||
596 | #define CB_LEVEL BUTTON_VOL_DOWN | ||
597 | #define CB_MENU BUTTON_POWER | ||
598 | #define CB_SCROLL_UP (BUTTON_HOME|BUTTON_REPEAT) | ||
599 | #define CB_SCROLL_DOWN (BUTTON_OPTION|BUTTON_REPEAT) | ||
600 | #define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT) | ||
601 | #define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT) | ||
602 | |||
575 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 603 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
576 | #define CB_SELECT BUTTON_PLAY | 604 | #define CB_SELECT BUTTON_PLAY |
577 | #define CB_UP BUTTON_PREV | 605 | #define CB_UP BUTTON_PREV |
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c index 6b07e1bab5..d93777860b 100644 --- a/apps/plugins/chessclock.c +++ b/apps/plugins/chessclock.c | |||
@@ -422,6 +422,26 @@ | |||
422 | #define CHC_SETTINGS_OK BUTTON_PLAY | 422 | #define CHC_SETTINGS_OK BUTTON_PLAY |
423 | #define CHC_SETTINGS_CANCEL BUTTON_POWER | 423 | #define CHC_SETTINGS_CANCEL BUTTON_POWER |
424 | 424 | ||
425 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
426 | #define CHC_QUIT BUTTON_POWER | ||
427 | #define CHC_STARTSTOP BUTTON_PLAY | ||
428 | #define CHC_RESET BUTTON_OPTION | ||
429 | #define CHC_MENU BUTTON_HOME | ||
430 | #define CHC_SETTINGS_INC BUTTON_NEXT | ||
431 | #define CHC_SETTINGS_DEC BUTTON_PREV | ||
432 | #define CHC_SETTINGS_OK BUTTON_PLAY | ||
433 | #define CHC_SETTINGS_CANCEL BUTTON_POWER | ||
434 | |||
435 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
436 | #define CHC_QUIT BUTTON_POWER | ||
437 | #define CHC_STARTSTOP BUTTON_PLAY | ||
438 | #define CHC_RESET BUTTON_OPTION | ||
439 | #define CHC_MENU BUTTON_HOME | ||
440 | #define CHC_SETTINGS_INC BUTTON_NEXT | ||
441 | #define CHC_SETTINGS_DEC BUTTON_PREV | ||
442 | #define CHC_SETTINGS_OK BUTTON_PLAY | ||
443 | #define CHC_SETTINGS_CANCEL BUTTON_POWER | ||
444 | |||
425 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 445 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
426 | #define CHC_QUIT BUTTON_POWER | 446 | #define CHC_QUIT BUTTON_POWER |
427 | #define CHC_STARTSTOP BUTTON_PLAY | 447 | #define CHC_STARTSTOP BUTTON_PLAY |
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c index 58d80a2ccf..7c2be3f7e7 100644 --- a/apps/plugins/chip8.c +++ b/apps/plugins/chip8.c | |||
@@ -1291,6 +1291,22 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
1291 | #define CHIP8_KEY6 BUTTON_NEXT | 1291 | #define CHIP8_KEY6 BUTTON_NEXT |
1292 | #define CHIP8_KEY8 BUTTON_OPTION | 1292 | #define CHIP8_KEY8 BUTTON_OPTION |
1293 | 1293 | ||
1294 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
1295 | #define CHIP8_OFF BUTTON_POWER | ||
1296 | #define CHIP8_KEY2 BUTTON_HOME | ||
1297 | #define CHIP8_KEY4 BUTTON_PREV | ||
1298 | #define CHIP8_KEY5 BUTTON_PLAY | ||
1299 | #define CHIP8_KEY6 BUTTON_NEXT | ||
1300 | #define CHIP8_KEY8 BUTTON_OPTION | ||
1301 | |||
1302 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
1303 | #define CHIP8_OFF BUTTON_POWER | ||
1304 | #define CHIP8_KEY2 BUTTON_HOME | ||
1305 | #define CHIP8_KEY4 BUTTON_PREV | ||
1306 | #define CHIP8_KEY5 BUTTON_PLAY | ||
1307 | #define CHIP8_KEY6 BUTTON_NEXT | ||
1308 | #define CHIP8_KEY8 BUTTON_OPTION | ||
1309 | |||
1294 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 1310 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
1295 | #define CHIP8_OFF BUTTON_POWER | 1311 | #define CHIP8_OFF BUTTON_POWER |
1296 | #define CHIP8_KEY2 BUTTON_NEXT | 1312 | #define CHIP8_KEY2 BUTTON_NEXT |
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c index 249cfe9715..71e24deb8f 100644 --- a/apps/plugins/chopper.c +++ b/apps/plugins/chopper.c | |||
@@ -214,6 +214,16 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
214 | #define ACTION BUTTON_PLAY | 214 | #define ACTION BUTTON_PLAY |
215 | #define ACTIONTEXT "PLAY" | 215 | #define ACTIONTEXT "PLAY" |
216 | 216 | ||
217 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
218 | #define QUIT BUTTON_POWER | ||
219 | #define ACTION BUTTON_PLAY | ||
220 | #define ACTIONTEXT "PLAY" | ||
221 | |||
222 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
223 | #define QUIT BUTTON_POWER | ||
224 | #define ACTION BUTTON_PLAY | ||
225 | #define ACTIONTEXT "PLAY" | ||
226 | |||
217 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 227 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
218 | #define QUIT BUTTON_POWER | 228 | #define QUIT BUTTON_POWER |
219 | #define ACTION BUTTON_PLAY | 229 | #define ACTION BUTTON_PLAY |
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c index c6364b14b4..e80fdeab8b 100644 --- a/apps/plugins/clix.c +++ b/apps/plugins/clix.c | |||
@@ -284,6 +284,22 @@ | |||
284 | #define CLIX_BUTTON_RIGHT BUTTON_NEXT | 284 | #define CLIX_BUTTON_RIGHT BUTTON_NEXT |
285 | #define CLIX_BUTTON_CLICK BUTTON_PLAY | 285 | #define CLIX_BUTTON_CLICK BUTTON_PLAY |
286 | 286 | ||
287 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
288 | #define CLIX_BUTTON_QUIT BUTTON_POWER | ||
289 | #define CLIX_BUTTON_UP BUTTON_HOME | ||
290 | #define CLIX_BUTTON_DOWN BUTTON_OPTION | ||
291 | #define CLIX_BUTTON_LEFT BUTTON_PREV | ||
292 | #define CLIX_BUTTON_RIGHT BUTTON_NEXT | ||
293 | #define CLIX_BUTTON_CLICK BUTTON_PLAY | ||
294 | |||
295 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
296 | #define CLIX_BUTTON_QUIT BUTTON_POWER | ||
297 | #define CLIX_BUTTON_UP BUTTON_HOME | ||
298 | #define CLIX_BUTTON_DOWN BUTTON_OPTION | ||
299 | #define CLIX_BUTTON_LEFT BUTTON_PREV | ||
300 | #define CLIX_BUTTON_RIGHT BUTTON_NEXT | ||
301 | #define CLIX_BUTTON_CLICK BUTTON_PLAY | ||
302 | |||
287 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 303 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
288 | #define CLIX_BUTTON_QUIT BUTTON_POWER | 304 | #define CLIX_BUTTON_QUIT BUTTON_POWER |
289 | #define CLIX_BUTTON_UP BUTTON_PREV | 305 | #define CLIX_BUTTON_UP BUTTON_PREV |
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c index cad57f9ed6..78fd333773 100644 --- a/apps/plugins/cube.c +++ b/apps/plugins/cube.c | |||
@@ -423,6 +423,26 @@ | |||
423 | #define CUBE_PAUSE BUTTON_HOME | 423 | #define CUBE_PAUSE BUTTON_HOME |
424 | #define CUBE_HIGHSPEED BUTTON_PLAY | 424 | #define CUBE_HIGHSPEED BUTTON_PLAY |
425 | 425 | ||
426 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
427 | #define CUBE_QUIT BUTTON_POWER | ||
428 | #define CUBE_NEXT BUTTON_NEXT | ||
429 | #define CUBE_PREV BUTTON_PREV | ||
430 | #define CUBE_INC BUTTON_VOL_UP | ||
431 | #define CUBE_DEC BUTTON_VOL_DOWN | ||
432 | #define CUBE_MODE BUTTON_OPTION | ||
433 | #define CUBE_PAUSE BUTTON_HOME | ||
434 | #define CUBE_HIGHSPEED BUTTON_PLAY | ||
435 | |||
436 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
437 | #define CUBE_QUIT BUTTON_POWER | ||
438 | #define CUBE_NEXT BUTTON_NEXT | ||
439 | #define CUBE_PREV BUTTON_PREV | ||
440 | #define CUBE_INC BUTTON_VOL_UP | ||
441 | #define CUBE_DEC BUTTON_VOL_DOWN | ||
442 | #define CUBE_MODE BUTTON_OPTION | ||
443 | #define CUBE_PAUSE BUTTON_HOME | ||
444 | #define CUBE_HIGHSPEED BUTTON_PLAY | ||
445 | |||
426 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 446 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
427 | #define CUBE_QUIT BUTTON_POWER | 447 | #define CUBE_QUIT BUTTON_POWER |
428 | #define CUBE_NEXT BUTTON_NEXT | 448 | #define CUBE_NEXT BUTTON_NEXT |
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c index 41194670bf..9f367d7d76 100644 --- a/apps/plugins/doom/i_video.c +++ b/apps/plugins/doom/i_video.c | |||
@@ -566,6 +566,28 @@ void I_ShutdownGraphics(void) | |||
566 | #define DOOMBUTTON_ENTER BUTTON_PLAY | 566 | #define DOOMBUTTON_ENTER BUTTON_PLAY |
567 | #define DOOMBUTTON_WEAPON BUTTON_VOL_UP | 567 | #define DOOMBUTTON_WEAPON BUTTON_VOL_UP |
568 | 568 | ||
569 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
570 | #define DOOMBUTTON_UP BUTTON_HOME | ||
571 | #define DOOMBUTTON_DOWN BUTTON_OPTION | ||
572 | #define DOOMBUTTON_LEFT BUTTON_PREV | ||
573 | #define DOOMBUTTON_RIGHT BUTTON_NEXT | ||
574 | #define DOOMBUTTON_SHOOT BUTTON_PLAY | ||
575 | #define DOOMBUTTON_OPEN (BUTTON_HOME | BUTTON_POWER) | ||
576 | #define DOOMBUTTON_ESC BUTTON_POWER | ||
577 | #define DOOMBUTTON_ENTER BUTTON_PLAY | ||
578 | #define DOOMBUTTON_WEAPON BUTTON_VOL_UP | ||
579 | |||
580 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
581 | #define DOOMBUTTON_UP BUTTON_HOME | ||
582 | #define DOOMBUTTON_DOWN BUTTON_OPTION | ||
583 | #define DOOMBUTTON_LEFT BUTTON_PREV | ||
584 | #define DOOMBUTTON_RIGHT BUTTON_NEXT | ||
585 | #define DOOMBUTTON_SHOOT BUTTON_PLAY | ||
586 | #define DOOMBUTTON_OPEN (BUTTON_HOME | BUTTON_POWER) | ||
587 | #define DOOMBUTTON_ESC BUTTON_POWER | ||
588 | #define DOOMBUTTON_ENTER BUTTON_PLAY | ||
589 | #define DOOMBUTTON_WEAPON BUTTON_VOL_UP | ||
590 | |||
569 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 591 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
570 | #define DOOMBUTTON_UP BUTTON_PREV | 592 | #define DOOMBUTTON_UP BUTTON_PREV |
571 | #define DOOMBUTTON_DOWN BUTTON_NEXT | 593 | #define DOOMBUTTON_DOWN BUTTON_NEXT |
diff --git a/apps/plugins/fft/fft.c b/apps/plugins/fft/fft.c index d56e37f9e2..0f4e33759d 100644 --- a/apps/plugins/fft/fft.c +++ b/apps/plugins/fft/fft.c | |||
@@ -343,6 +343,24 @@ GREY_INFO_STRUCT | |||
343 | # define FFT_AMP_SCALE BUTTON_PLAY | 343 | # define FFT_AMP_SCALE BUTTON_PLAY |
344 | # define FFT_QUIT BUTTON_POWER | 344 | # define FFT_QUIT BUTTON_POWER |
345 | 345 | ||
346 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
347 | # define FFT_PREV_GRAPH BUTTON_PREV | ||
348 | # define FFT_NEXT_GRAPH BUTTON_NEXT | ||
349 | # define FFT_ORIENTATION BUTTON_HOME | ||
350 | # define FFT_FREQ_SCALE BUTTON_OPTION | ||
351 | # define FFT_WINDOW (BUTTON_HOME|BUTTON_POWER) | ||
352 | # define FFT_AMP_SCALE BUTTON_PLAY | ||
353 | # define FFT_QUIT BUTTON_POWER | ||
354 | |||
355 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
356 | # define FFT_PREV_GRAPH BUTTON_PREV | ||
357 | # define FFT_NEXT_GRAPH BUTTON_NEXT | ||
358 | # define FFT_ORIENTATION BUTTON_HOME | ||
359 | # define FFT_FREQ_SCALE BUTTON_OPTION | ||
360 | # define FFT_WINDOW (BUTTON_HOME|BUTTON_POWER) | ||
361 | # define FFT_AMP_SCALE BUTTON_PLAY | ||
362 | # define FFT_QUIT BUTTON_POWER | ||
363 | |||
346 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 364 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
347 | # define FFT_PREV_GRAPH BUTTON_PREV | 365 | # define FFT_PREV_GRAPH BUTTON_PREV |
348 | # define FFT_NEXT_GRAPH BUTTON_NEXT | 366 | # define FFT_NEXT_GRAPH BUTTON_NEXT |
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c index c108939a95..7d1257ef94 100644 --- a/apps/plugins/flipit.c +++ b/apps/plugins/flipit.c | |||
@@ -494,6 +494,30 @@ | |||
494 | #define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY) | 494 | #define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY) |
495 | #define FLIPIT_TOGGLE BUTTON_PLAY | 495 | #define FLIPIT_TOGGLE BUTTON_PLAY |
496 | 496 | ||
497 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
498 | |||
499 | #define FLIPIT_LEFT BUTTON_PREV | ||
500 | #define FLIPIT_RIGHT BUTTON_NEXT | ||
501 | #define FLIPIT_UP BUTTON_HOME | ||
502 | #define FLIPIT_DOWN BUTTON_OPTION | ||
503 | #define FLIPIT_QUIT BUTTON_POWER | ||
504 | #define FLIPIT_SHUFFLE (BUTTON_HOME | BUTTON_PREV) | ||
505 | #define FLIPIT_SOLVE (BUTTON_HOME | BUTTON_NEXT) | ||
506 | #define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY) | ||
507 | #define FLIPIT_TOGGLE BUTTON_PLAY | ||
508 | |||
509 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
510 | |||
511 | #define FLIPIT_LEFT BUTTON_PREV | ||
512 | #define FLIPIT_RIGHT BUTTON_NEXT | ||
513 | #define FLIPIT_UP BUTTON_HOME | ||
514 | #define FLIPIT_DOWN BUTTON_OPTION | ||
515 | #define FLIPIT_QUIT BUTTON_POWER | ||
516 | #define FLIPIT_SHUFFLE (BUTTON_HOME | BUTTON_PREV) | ||
517 | #define FLIPIT_SOLVE (BUTTON_HOME | BUTTON_NEXT) | ||
518 | #define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY) | ||
519 | #define FLIPIT_TOGGLE BUTTON_PLAY | ||
520 | |||
497 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 521 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
498 | 522 | ||
499 | #define FLIPIT_LEFT BUTTON_HOME | 523 | #define FLIPIT_LEFT BUTTON_HOME |
diff --git a/apps/plugins/fractals/fractal.h b/apps/plugins/fractals/fractal.h index 5a56a39b13..679782d37a 100644 --- a/apps/plugins/fractals/fractal.h +++ b/apps/plugins/fractals/fractal.h | |||
@@ -496,6 +496,30 @@ | |||
496 | #define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV) | 496 | #define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV) |
497 | #define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER) | 497 | #define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER) |
498 | 498 | ||
499 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
500 | #define FRACTAL_QUIT BUTTON_POWER | ||
501 | #define FRACTAL_UP BUTTON_HOME | ||
502 | #define FRACTAL_DOWN BUTTON_OPTION | ||
503 | #define FRACTAL_LEFT BUTTON_PREV | ||
504 | #define FRACTAL_RIGHT BUTTON_NEXT | ||
505 | #define FRACTAL_ZOOM_IN BUTTON_VOL_UP | ||
506 | #define FRACTAL_ZOOM_OUT BUTTON_VOL_DOWN | ||
507 | #define FRACTAL_PRECISION_INC (BUTTON_PLAY | BUTTON_NEXT) | ||
508 | #define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV) | ||
509 | #define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER) | ||
510 | |||
511 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
512 | #define FRACTAL_QUIT BUTTON_POWER | ||
513 | #define FRACTAL_UP BUTTON_HOME | ||
514 | #define FRACTAL_DOWN BUTTON_OPTION | ||
515 | #define FRACTAL_LEFT BUTTON_PREV | ||
516 | #define FRACTAL_RIGHT BUTTON_NEXT | ||
517 | #define FRACTAL_ZOOM_IN BUTTON_VOL_UP | ||
518 | #define FRACTAL_ZOOM_OUT BUTTON_VOL_DOWN | ||
519 | #define FRACTAL_PRECISION_INC (BUTTON_PLAY | BUTTON_NEXT) | ||
520 | #define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV) | ||
521 | #define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER) | ||
522 | |||
499 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 523 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
500 | #define FRACTAL_QUIT BUTTON_POWER | 524 | #define FRACTAL_QUIT BUTTON_POWER |
501 | #define FRACTAL_UP BUTTON_PREV | 525 | #define FRACTAL_UP BUTTON_PREV |
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h index 9f03937078..e04b4c2447 100644 --- a/apps/plugins/goban/goban.h +++ b/apps/plugins/goban/goban.h | |||
@@ -464,6 +464,30 @@ | |||
464 | #define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT | 464 | #define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT |
465 | #define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER | 465 | #define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER |
466 | 466 | ||
467 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
468 | #define GBN_BUTTON_UP BUTTON_HOME | ||
469 | #define GBN_BUTTON_DOWN BUTTON_OPTION | ||
470 | #define GBN_BUTTON_LEFT BUTTON_PREV | ||
471 | #define GBN_BUTTON_RIGHT BUTTON_NEXT | ||
472 | #define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN | ||
473 | #define GBN_BUTTON_ADVANCE BUTTON_VOL_UP | ||
474 | #define GBN_BUTTON_MENU BUTTON_POWER | ||
475 | #define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL | ||
476 | #define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT | ||
477 | #define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER | ||
478 | |||
479 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
480 | #define GBN_BUTTON_UP BUTTON_HOME | ||
481 | #define GBN_BUTTON_DOWN BUTTON_OPTION | ||
482 | #define GBN_BUTTON_LEFT BUTTON_PREV | ||
483 | #define GBN_BUTTON_RIGHT BUTTON_NEXT | ||
484 | #define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN | ||
485 | #define GBN_BUTTON_ADVANCE BUTTON_VOL_UP | ||
486 | #define GBN_BUTTON_MENU BUTTON_POWER | ||
487 | #define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL | ||
488 | #define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT | ||
489 | #define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER | ||
490 | |||
467 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 491 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
468 | 492 | ||
469 | #define GBN_BUTTON_UP BUTTON_PREV | 493 | #define GBN_BUTTON_UP BUTTON_PREV |
diff --git a/apps/plugins/imageviewer/imageviewer_button.h b/apps/plugins/imageviewer/imageviewer_button.h index 5ffef12a62..e37febc76a 100644 --- a/apps/plugins/imageviewer/imageviewer_button.h +++ b/apps/plugins/imageviewer/imageviewer_button.h | |||
@@ -510,6 +510,36 @@ | |||
510 | #define IMGVIEW_MENU BUTTON_POWER | 510 | #define IMGVIEW_MENU BUTTON_POWER |
511 | #define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER) | 511 | #define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER) |
512 | 512 | ||
513 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
514 | #define IMGVIEW_ZOOM_PRE BUTTON_PLAY | ||
515 | #define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL) | ||
516 | #define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT) | ||
517 | #define IMGVIEW_UP BUTTON_HOME | ||
518 | #define IMGVIEW_DOWN BUTTON_OPTION | ||
519 | #define IMGVIEW_LEFT BUTTON_PREV | ||
520 | #define IMGVIEW_RIGHT BUTTON_NEXT | ||
521 | #define IMGVIEW_NEXT BUTTON_VOL_UP | ||
522 | #define IMGVIEW_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT) | ||
523 | #define IMGVIEW_PREVIOUS BUTTON_VOL_DOWN | ||
524 | #define IMGVIEW_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT) | ||
525 | #define IMGVIEW_MENU BUTTON_POWER | ||
526 | #define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER) | ||
527 | |||
528 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
529 | #define IMGVIEW_ZOOM_PRE BUTTON_PLAY | ||
530 | #define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL) | ||
531 | #define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT) | ||
532 | #define IMGVIEW_UP BUTTON_HOME | ||
533 | #define IMGVIEW_DOWN BUTTON_OPTION | ||
534 | #define IMGVIEW_LEFT BUTTON_PREV | ||
535 | #define IMGVIEW_RIGHT BUTTON_NEXT | ||
536 | #define IMGVIEW_NEXT BUTTON_VOL_UP | ||
537 | #define IMGVIEW_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT) | ||
538 | #define IMGVIEW_PREVIOUS BUTTON_VOL_DOWN | ||
539 | #define IMGVIEW_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT) | ||
540 | #define IMGVIEW_MENU BUTTON_POWER | ||
541 | #define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER) | ||
542 | |||
513 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 543 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
514 | #define IMGVIEW_ZOOM_PRE BUTTON_PLAY | 544 | #define IMGVIEW_ZOOM_PRE BUTTON_PLAY |
515 | #define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL) | 545 | #define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL) |
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c index d3feb236cc..8cf4d67f3e 100644 --- a/apps/plugins/invadrox.c +++ b/apps/plugins/invadrox.c | |||
@@ -272,6 +272,20 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
272 | #define QUIT BUTTON_POWER | 272 | #define QUIT BUTTON_POWER |
273 | #define FIRE BUTTON_MENU | 273 | #define FIRE BUTTON_MENU |
274 | 274 | ||
275 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
276 | |||
277 | #define QUIT BUTTON_POWER | ||
278 | #define LEFT BUTTON_HOME | ||
279 | #define RIGHT BUTTON_VOL_DOWN | ||
280 | #define FIRE BUTTON_VOL_UP | ||
281 | |||
282 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
283 | |||
284 | #define QUIT BUTTON_POWER | ||
285 | #define LEFT BUTTON_HOME | ||
286 | #define RIGHT BUTTON_VOL_DOWN | ||
287 | #define FIRE BUTTON_VOL_UP | ||
288 | |||
275 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 289 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
276 | 290 | ||
277 | #define QUIT BUTTON_POWER | 291 | #define QUIT BUTTON_POWER |
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c index bc0bc73183..38121a480c 100644 --- a/apps/plugins/jewels.c +++ b/apps/plugins/jewels.c | |||
@@ -387,6 +387,26 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
387 | #define HK_SELECT "PLAY" | 387 | #define HK_SELECT "PLAY" |
388 | #define HK_CANCEL "POWER" | 388 | #define HK_CANCEL "POWER" |
389 | 389 | ||
390 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
391 | #define JEWELS_UP BUTTON_HOME | ||
392 | #define JEWELS_DOWN BUTTON_OPTION | ||
393 | #define JEWELS_LEFT BUTTON_PREV | ||
394 | #define JEWELS_RIGHT BUTTON_NEXT | ||
395 | #define JEWELS_SELECT BUTTON_PLAY | ||
396 | #define JEWELS_CANCEL BUTTON_POWER | ||
397 | #define HK_SELECT "PLAY" | ||
398 | #define HK_CANCEL "POWER" | ||
399 | |||
400 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
401 | #define JEWELS_UP BUTTON_HOME | ||
402 | #define JEWELS_DOWN BUTTON_OPTION | ||
403 | #define JEWELS_LEFT BUTTON_PREV | ||
404 | #define JEWELS_RIGHT BUTTON_NEXT | ||
405 | #define JEWELS_SELECT BUTTON_PLAY | ||
406 | #define JEWELS_CANCEL BUTTON_POWER | ||
407 | #define HK_SELECT "PLAY" | ||
408 | #define HK_CANCEL "POWER" | ||
409 | |||
390 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 410 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
391 | #define JEWELS_UP BUTTON_PREV | 411 | #define JEWELS_UP BUTTON_PREV |
392 | #define JEWELS_DOWN BUTTON_NEXT | 412 | #define JEWELS_DOWN BUTTON_NEXT |
diff --git a/apps/plugins/lib/keymaps.h b/apps/plugins/lib/keymaps.h index e240a0989e..e3de03f222 100644 --- a/apps/plugins/lib/keymaps.h +++ b/apps/plugins/lib/keymaps.h | |||
@@ -223,6 +223,22 @@ | |||
223 | #define BTN_FIRE BUTTON_PLAY | 223 | #define BTN_FIRE BUTTON_PLAY |
224 | #define BTN_PAUSE BUTTON_POWER | 224 | #define BTN_PAUSE BUTTON_POWER |
225 | 225 | ||
226 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
227 | #define BTN_UP BUTTON_VOL_UP | ||
228 | #define BTN_DOWN BUTTON_VOL_DOWN | ||
229 | #define BTN_LEFT BUTTON_PREV | ||
230 | #define BTN_RIGHT BUTTON_NEXT | ||
231 | #define BTN_FIRE BUTTON_PLAY | ||
232 | #define BTN_PAUSE BUTTON_POWER | ||
233 | |||
234 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
235 | #define BTN_UP BUTTON_VOL_UP | ||
236 | #define BTN_DOWN BUTTON_VOL_DOWN | ||
237 | #define BTN_LEFT BUTTON_PREV | ||
238 | #define BTN_RIGHT BUTTON_NEXT | ||
239 | #define BTN_FIRE BUTTON_PLAY | ||
240 | #define BTN_PAUSE BUTTON_POWER | ||
241 | |||
226 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 242 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
227 | #define BTN_UP BUTTON_PREV | 243 | #define BTN_UP BUTTON_PREV |
228 | #define BTN_DOWN BUTTON_NEXT | 244 | #define BTN_DOWN BUTTON_NEXT |
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c index 97b5a1e1bf..0834e020f4 100644 --- a/apps/plugins/lib/pluginlib_actions.c +++ b/apps/plugins/lib/pluginlib_actions.c | |||
@@ -237,6 +237,24 @@ const struct button_mapping pla_main_ctx[] = | |||
237 | { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, | 237 | { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, |
238 | { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | 238 | { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, |
239 | { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | 239 | { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, |
240 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
241 | { PLA_UP, BUTTON_HOME, BUTTON_NONE }, | ||
242 | { PLA_DOWN, BUTTON_OPTION, BUTTON_NONE }, | ||
243 | { PLA_LEFT, BUTTON_PREV, BUTTON_NONE }, | ||
244 | { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE }, | ||
245 | { PLA_UP_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, | ||
246 | { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, | ||
247 | { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
248 | { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
249 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
250 | { PLA_UP, BUTTON_HOME, BUTTON_NONE }, | ||
251 | { PLA_DOWN, BUTTON_OPTION, BUTTON_NONE }, | ||
252 | { PLA_LEFT, BUTTON_PREV, BUTTON_NONE }, | ||
253 | { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE }, | ||
254 | { PLA_UP_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, | ||
255 | { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, | ||
256 | { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | ||
257 | { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | ||
240 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 258 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
241 | { PLA_UP, BUTTON_PREV, BUTTON_NONE }, | 259 | { PLA_UP, BUTTON_PREV, BUTTON_NONE }, |
242 | { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE }, | 260 | { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE }, |
@@ -480,6 +498,18 @@ const struct button_mapping pla_main_ctx[] = | |||
480 | {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, | 498 | {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, |
481 | {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, | 499 | {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, |
482 | {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, | 500 | {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, |
501 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
502 | {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, | ||
503 | {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, | ||
504 | {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, | ||
505 | {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, | ||
506 | {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, | ||
507 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
508 | {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, | ||
509 | {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, | ||
510 | {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, | ||
511 | {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, | ||
512 | {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, | ||
483 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 513 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
484 | {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, | 514 | {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, |
485 | {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, | 515 | {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, |
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c index 8e867e5173..e6e2b4bf51 100644 --- a/apps/plugins/midi/midiplay.c +++ b/apps/plugins/midi/midiplay.c | |||
@@ -301,6 +301,22 @@ | |||
301 | #define MIDI_VOL_DOWN BUTTON_VOL_DOWN | 301 | #define MIDI_VOL_DOWN BUTTON_VOL_DOWN |
302 | #define MIDI_PLAYPAUSE BUTTON_PLAY | 302 | #define MIDI_PLAYPAUSE BUTTON_PLAY |
303 | 303 | ||
304 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
305 | #define MIDI_QUIT BUTTON_POWER | ||
306 | #define MIDI_FFWD BUTTON_NEXT | ||
307 | #define MIDI_REWIND BUTTON_PREV | ||
308 | #define MIDI_VOL_UP BUTTON_VOL_UP | ||
309 | #define MIDI_VOL_DOWN BUTTON_VOL_DOWN | ||
310 | #define MIDI_PLAYPAUSE BUTTON_PLAY | ||
311 | |||
312 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
313 | #define MIDI_QUIT BUTTON_POWER | ||
314 | #define MIDI_FFWD BUTTON_NEXT | ||
315 | #define MIDI_REWIND BUTTON_PREV | ||
316 | #define MIDI_VOL_UP BUTTON_VOL_UP | ||
317 | #define MIDI_VOL_DOWN BUTTON_VOL_DOWN | ||
318 | #define MIDI_PLAYPAUSE BUTTON_PLAY | ||
319 | |||
304 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 320 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
305 | #define MIDI_QUIT BUTTON_POWER | 321 | #define MIDI_QUIT BUTTON_POWER |
306 | #define MIDI_FFWD BUTTON_VOL_DOWN | 322 | #define MIDI_FFWD BUTTON_VOL_DOWN |
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c index 956ba128d5..917f90dcd0 100644 --- a/apps/plugins/minesweeper.c +++ b/apps/plugins/minesweeper.c | |||
@@ -417,6 +417,32 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
417 | # define MINESWP_DISCOVER2 BUTTON_VOL_UP | 417 | # define MINESWP_DISCOVER2 BUTTON_VOL_UP |
418 | # define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION) | 418 | # define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION) |
419 | 419 | ||
420 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
421 | # define MINESWP_LEFT BUTTON_PREV | ||
422 | # define MINESWP_RIGHT BUTTON_NEXT | ||
423 | # define MINESWP_UP BUTTON_HOME | ||
424 | # define MINESWP_DOWN BUTTON_OPTION | ||
425 | # define MINESWP_QUIT BUTTON_POWER | ||
426 | # define MINESWP_TOGGLE_PRE BUTTON_PLAY | ||
427 | # define MINESWP_TOGGLE (BUTTON_PLAY | BUTTON_REL) | ||
428 | # define MINESWP_TOGGLE2 BUTTON_VOL_DOWN | ||
429 | # define MINESWP_DISCOVER (BUTTON_PLAY | BUTTON_REPEAT) | ||
430 | # define MINESWP_DISCOVER2 BUTTON_VOL_UP | ||
431 | # define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION) | ||
432 | |||
433 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
434 | # define MINESWP_LEFT BUTTON_PREV | ||
435 | # define MINESWP_RIGHT BUTTON_NEXT | ||
436 | # define MINESWP_UP BUTTON_HOME | ||
437 | # define MINESWP_DOWN BUTTON_OPTION | ||
438 | # define MINESWP_QUIT BUTTON_POWER | ||
439 | # define MINESWP_TOGGLE_PRE BUTTON_PLAY | ||
440 | # define MINESWP_TOGGLE (BUTTON_PLAY | BUTTON_REL) | ||
441 | # define MINESWP_TOGGLE2 BUTTON_VOL_DOWN | ||
442 | # define MINESWP_DISCOVER (BUTTON_PLAY | BUTTON_REPEAT) | ||
443 | # define MINESWP_DISCOVER2 BUTTON_VOL_UP | ||
444 | # define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION) | ||
445 | |||
420 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 446 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
421 | # define MINESWP_LEFT BUTTON_HOME | 447 | # define MINESWP_LEFT BUTTON_HOME |
422 | # define MINESWP_RIGHT BUTTON_VOL_DOWN | 448 | # define MINESWP_RIGHT BUTTON_VOL_DOWN |
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c index d147120cd4..3b912ba606 100644 --- a/apps/plugins/mp3_encoder.c +++ b/apps/plugins/mp3_encoder.c | |||
@@ -2562,6 +2562,19 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
2562 | #define MP3ENC_DONE BUTTON_POWER | 2562 | #define MP3ENC_DONE BUTTON_POWER |
2563 | #define MP3ENC_SELECT BUTTON_PLAY | 2563 | #define MP3ENC_SELECT BUTTON_PLAY |
2564 | 2564 | ||
2565 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
2566 | #define MP3ENC_PREV BUTTON_HOME | ||
2567 | #define MP3ENC_NEXT BUTTON_OPTION | ||
2568 | #define MP3ENC_DONE BUTTON_POWER | ||
2569 | #define MP3ENC_SELECT BUTTON_PLAY | ||
2570 | |||
2571 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
2572 | #define MP3ENC_PREV BUTTON_HOME | ||
2573 | #define MP3ENC_NEXT BUTTON_OPTION | ||
2574 | #define MP3ENC_DONE BUTTON_POWER | ||
2575 | #define MP3ENC_SELECT BUTTON_PLAY | ||
2576 | |||
2577 | |||
2565 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 2578 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
2566 | #define MP3ENC_PREV BUTTON_PREV | 2579 | #define MP3ENC_PREV BUTTON_PREV |
2567 | #define MP3ENC_NEXT BUTTON_NEXT | 2580 | #define MP3ENC_NEXT BUTTON_NEXT |
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c index 8427db12b4..d5d7c7c019 100644 --- a/apps/plugins/mpegplayer/mpeg_settings.c +++ b/apps/plugins/mpegplayer/mpeg_settings.c | |||
@@ -316,6 +316,26 @@ struct mpeg_settings settings; | |||
316 | #define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN | 316 | #define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN |
317 | #define MPEG_START_TIME_EXIT BUTTON_POWER | 317 | #define MPEG_START_TIME_EXIT BUTTON_POWER |
318 | 318 | ||
319 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
320 | #define MPEG_START_TIME_SELECT BUTTON_PLAY | ||
321 | #define MPEG_START_TIME_LEFT BUTTON_PREV | ||
322 | #define MPEG_START_TIME_RIGHT BUTTON_NEXT | ||
323 | #define MPEG_START_TIME_UP BUTTON_HOME | ||
324 | #define MPEG_START_TIME_DOWN BUTTON_OPTION | ||
325 | #define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP | ||
326 | #define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN | ||
327 | #define MPEG_START_TIME_EXIT BUTTON_POWER | ||
328 | |||
329 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
330 | #define MPEG_START_TIME_SELECT BUTTON_PLAY | ||
331 | #define MPEG_START_TIME_LEFT BUTTON_PREV | ||
332 | #define MPEG_START_TIME_RIGHT BUTTON_NEXT | ||
333 | #define MPEG_START_TIME_UP BUTTON_HOME | ||
334 | #define MPEG_START_TIME_DOWN BUTTON_OPTION | ||
335 | #define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP | ||
336 | #define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN | ||
337 | #define MPEG_START_TIME_EXIT BUTTON_POWER | ||
338 | |||
319 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 339 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
320 | #define MPEG_START_TIME_SELECT BUTTON_PLAY | 340 | #define MPEG_START_TIME_SELECT BUTTON_PLAY |
321 | #define MPEG_START_TIME_LEFT BUTTON_HOME | 341 | #define MPEG_START_TIME_LEFT BUTTON_HOME |
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c index 39ea484ff2..eed1fab6d7 100644 --- a/apps/plugins/mpegplayer/mpegplayer.c +++ b/apps/plugins/mpegplayer/mpegplayer.c | |||
@@ -450,6 +450,24 @@ CONFIG_KEYPAD == SANSA_M200_PAD | |||
450 | #define MPEG_RW BUTTON_PREV | 450 | #define MPEG_RW BUTTON_PREV |
451 | #define MPEG_FF BUTTON_NEXT | 451 | #define MPEG_FF BUTTON_NEXT |
452 | 452 | ||
453 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
454 | #define MPEG_MENU BUTTON_PLAY | ||
455 | #define MPEG_STOP BUTTON_POWER | ||
456 | #define MPEG_PAUSE BUTTON_HOME | ||
457 | #define MPEG_VOLDOWN BUTTON_VOL_DOWN | ||
458 | #define MPEG_VOLUP BUTTON_VOL_UP | ||
459 | #define MPEG_RW BUTTON_PREV | ||
460 | #define MPEG_FF BUTTON_NEXT | ||
461 | |||
462 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
463 | #define MPEG_MENU BUTTON_PLAY | ||
464 | #define MPEG_STOP BUTTON_POWER | ||
465 | #define MPEG_PAUSE BUTTON_HOME | ||
466 | #define MPEG_VOLDOWN BUTTON_VOL_DOWN | ||
467 | #define MPEG_VOLUP BUTTON_VOL_UP | ||
468 | #define MPEG_RW BUTTON_PREV | ||
469 | #define MPEG_FF BUTTON_NEXT | ||
470 | |||
453 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 471 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
454 | #define MPEG_MENU BUTTON_PLAY | 472 | #define MPEG_MENU BUTTON_PLAY |
455 | #define MPEG_STOP BUTTON_POWER | 473 | #define MPEG_STOP BUTTON_POWER |
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c index f4711d4e0e..6702add139 100644 --- a/apps/plugins/oscilloscope.c +++ b/apps/plugins/oscilloscope.c | |||
@@ -518,6 +518,35 @@ | |||
518 | #define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN | 518 | #define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN |
519 | #define NEED_LASTBUTTON | 519 | #define NEED_LASTBUTTON |
520 | 520 | ||
521 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
522 | #define OSCILLOSCOPE_QUIT BUTTON_POWER | ||
523 | #define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY | ||
524 | #define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL) | ||
525 | #define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_PLAY | ||
526 | #define OSCILLOSCOPE_ORIENTATION (BUTTON_PLAY | BUTTON_REPEAT) | ||
527 | #define OSCILLOSCOPE_ADVMODE BUTTON_HOME | ||
528 | #define OSCILLOSCOPE_PAUSE BUTTON_OPTION | ||
529 | #define OSCILLOSCOPE_SPEED_UP BUTTON_NEXT | ||
530 | #define OSCILLOSCOPE_SPEED_DOWN BUTTON_PREV | ||
531 | #define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP | ||
532 | #define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN | ||
533 | #define NEED_LASTBUTTON | ||
534 | |||
535 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
536 | #define OSCILLOSCOPE_QUIT BUTTON_POWER | ||
537 | #define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY | ||
538 | #define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL) | ||
539 | #define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_PLAY | ||
540 | #define OSCILLOSCOPE_ORIENTATION (BUTTON_PLAY | BUTTON_REPEAT) | ||
541 | #define OSCILLOSCOPE_ADVMODE BUTTON_HOME | ||
542 | #define OSCILLOSCOPE_PAUSE BUTTON_OPTION | ||
543 | #define OSCILLOSCOPE_SPEED_UP BUTTON_NEXT | ||
544 | #define OSCILLOSCOPE_SPEED_DOWN BUTTON_PREV | ||
545 | #define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP | ||
546 | #define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN | ||
547 | #define NEED_LASTBUTTON | ||
548 | |||
549 | |||
521 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 550 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
522 | #define OSCILLOSCOPE_QUIT BUTTON_POWER | 551 | #define OSCILLOSCOPE_QUIT BUTTON_POWER |
523 | #define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY | 552 | #define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY |
diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h index 0e3de62dfa..78a171467a 100644 --- a/apps/plugins/pacbox/pacbox.h +++ b/apps/plugins/pacbox/pacbox.h | |||
@@ -364,6 +364,25 @@ | |||
364 | #define PACMAN_1UP BUTTON_VOLUP | 364 | #define PACMAN_1UP BUTTON_VOLUP |
365 | #define PACMAN_COIN BUTTON_VOLDOWN | 365 | #define PACMAN_COIN BUTTON_VOLDOWN |
366 | 366 | ||
367 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
368 | #define PACMAN_UP BUTTON_PREV | ||
369 | #define PACMAN_DOWN BUTTON_NEXT | ||
370 | #define PACMAN_LEFT BUTTON_HOME | ||
371 | #define PACMAN_RIGHT BUTTON_VOL_DOWN | ||
372 | #define PACMAN_MENU BUTTON_POWER | ||
373 | #define PACMAN_1UP BUTTON_VOL_UP | ||
374 | #define PACMAN_COIN BUTTON_PLAY | ||
375 | |||
376 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
377 | #define PACMAN_UP BUTTON_PREV | ||
378 | #define PACMAN_DOWN BUTTON_NEXT | ||
379 | #define PACMAN_LEFT BUTTON_HOME | ||
380 | #define PACMAN_RIGHT BUTTON_VOL_DOWN | ||
381 | #define PACMAN_MENU BUTTON_POWER | ||
382 | #define PACMAN_1UP BUTTON_VOL_UP | ||
383 | #define PACMAN_COIN BUTTON_PLAY | ||
384 | |||
385 | |||
367 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 386 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
368 | #define PACMAN_UP BUTTON_PREV | 387 | #define PACMAN_UP BUTTON_PREV |
369 | #define PACMAN_DOWN BUTTON_NEXT | 388 | #define PACMAN_DOWN BUTTON_NEXT |
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c index cc2e8e3f23..b638f2feeb 100644 --- a/apps/plugins/pegbox.c +++ b/apps/plugins/pegbox.c | |||
@@ -660,6 +660,40 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
660 | #define LVL_UP_TEXT "VOL+" | 660 | #define LVL_UP_TEXT "VOL+" |
661 | #define LVL_DOWN_TEXT "VOL-" | 661 | #define LVL_DOWN_TEXT "VOL-" |
662 | 662 | ||
663 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
664 | #define PEGBOX_SELECT BUTTON_PLAY | ||
665 | #define PEGBOX_QUIT BUTTON_POWER | ||
666 | #define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME) | ||
667 | #define PEGBOX_LVL_UP BUTTON_VOL_UP | ||
668 | #define PEGBOX_LVL_DOWN BUTTON_VOL_DOWN | ||
669 | #define PEGBOX_UP BUTTON_HOME | ||
670 | #define PEGBOX_DOWN BUTTON_OPTION | ||
671 | #define PEGBOX_RIGHT BUTTON_NEXT | ||
672 | #define PEGBOX_LEFT BUTTON_PREV | ||
673 | |||
674 | #define SELECT_TEXT "PLAY" | ||
675 | #define QUIT_TEXT "POWER" | ||
676 | #define RESTART_TEXT "HOME" | ||
677 | #define LVL_UP_TEXT "VOL+" | ||
678 | #define LVL_DOWN_TEXT "VOL-" | ||
679 | |||
680 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
681 | #define PEGBOX_SELECT BUTTON_PLAY | ||
682 | #define PEGBOX_QUIT BUTTON_POWER | ||
683 | #define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME) | ||
684 | #define PEGBOX_LVL_UP BUTTON_VOL_UP | ||
685 | #define PEGBOX_LVL_DOWN BUTTON_VOL_DOWN | ||
686 | #define PEGBOX_UP BUTTON_HOME | ||
687 | #define PEGBOX_DOWN BUTTON_OPTION | ||
688 | #define PEGBOX_RIGHT BUTTON_NEXT | ||
689 | #define PEGBOX_LEFT BUTTON_PREV | ||
690 | |||
691 | #define SELECT_TEXT "PLAY" | ||
692 | #define QUIT_TEXT "POWER" | ||
693 | #define RESTART_TEXT "HOME" | ||
694 | #define LVL_UP_TEXT "VOL+" | ||
695 | #define LVL_DOWN_TEXT "VOL-" | ||
696 | |||
663 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 697 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
664 | #define PEGBOX_SELECT BUTTON_PLAY | 698 | #define PEGBOX_SELECT BUTTON_PLAY |
665 | #define PEGBOX_QUIT BUTTON_POWER | 699 | #define PEGBOX_QUIT BUTTON_POWER |
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c index cb3006d7c4..3656a35fd2 100644 --- a/apps/plugins/pong.c +++ b/apps/plugins/pong.c | |||
@@ -317,6 +317,22 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
317 | #define PONG_RIGHT_UP BUTTON_HOME | 317 | #define PONG_RIGHT_UP BUTTON_HOME |
318 | #define PONG_RIGHT_DOWN BUTTON_NEXT | 318 | #define PONG_RIGHT_DOWN BUTTON_NEXT |
319 | 319 | ||
320 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
321 | #define PONG_QUIT BUTTON_POWER | ||
322 | #define PONG_PAUSE BUTTON_PLAY | ||
323 | #define PONG_LEFT_UP BUTTON_PREV | ||
324 | #define PONG_LEFT_DOWN BUTTON_OPTION | ||
325 | #define PONG_RIGHT_UP BUTTON_HOME | ||
326 | #define PONG_RIGHT_DOWN BUTTON_NEXT | ||
327 | |||
328 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
329 | #define PONG_QUIT BUTTON_POWER | ||
330 | #define PONG_PAUSE BUTTON_PLAY | ||
331 | #define PONG_LEFT_UP BUTTON_PREV | ||
332 | #define PONG_LEFT_DOWN BUTTON_OPTION | ||
333 | #define PONG_RIGHT_UP BUTTON_HOME | ||
334 | #define PONG_RIGHT_DOWN BUTTON_NEXT | ||
335 | |||
320 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 336 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
321 | #define PONG_QUIT BUTTON_POWER | 337 | #define PONG_QUIT BUTTON_POWER |
322 | #define PONG_PAUSE BUTTON_PREV | 338 | #define PONG_PAUSE BUTTON_PREV |
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h index cba34d2814..4ec6bcb67b 100644 --- a/apps/plugins/reversi/reversi-gui.h +++ b/apps/plugins/reversi/reversi-gui.h | |||
@@ -339,6 +339,28 @@ | |||
339 | #define REVERSI_BUTTON_MENU BUTTON_PLAY | 339 | #define REVERSI_BUTTON_MENU BUTTON_PLAY |
340 | #define REVERSI_BUTTON_MENU_LONGPRESS | 340 | #define REVERSI_BUTTON_MENU_LONGPRESS |
341 | 341 | ||
342 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
343 | #define REVERSI_BUTTON_QUIT BUTTON_POWER | ||
344 | #define REVERSI_BUTTON_UP BUTTON_HOME | ||
345 | #define REVERSI_BUTTON_DOWN BUTTON_OPTION | ||
346 | #define REVERSI_BUTTON_LEFT BUTTON_PREV | ||
347 | #define REVERSI_BUTTON_RIGHT BUTTON_NEXT | ||
348 | #define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY | ||
349 | #define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS | ||
350 | #define REVERSI_BUTTON_MENU BUTTON_PLAY | ||
351 | #define REVERSI_BUTTON_MENU_LONGPRESS | ||
352 | |||
353 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
354 | #define REVERSI_BUTTON_QUIT BUTTON_POWER | ||
355 | #define REVERSI_BUTTON_UP BUTTON_HOME | ||
356 | #define REVERSI_BUTTON_DOWN BUTTON_OPTION | ||
357 | #define REVERSI_BUTTON_LEFT BUTTON_PREV | ||
358 | #define REVERSI_BUTTON_RIGHT BUTTON_NEXT | ||
359 | #define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY | ||
360 | #define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS | ||
361 | #define REVERSI_BUTTON_MENU BUTTON_PLAY | ||
362 | #define REVERSI_BUTTON_MENU_LONGPRESS | ||
363 | |||
342 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 364 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
343 | #define REVERSI_BUTTON_QUIT BUTTON_POWER | 365 | #define REVERSI_BUTTON_QUIT BUTTON_POWER |
344 | #define REVERSI_BUTTON_UP BUTTON_PREV | 366 | #define REVERSI_BUTTON_UP BUTTON_PREV |
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c index 13eb593775..e2fedab200 100644 --- a/apps/plugins/rockblox.c +++ b/apps/plugins/rockblox.c | |||
@@ -492,6 +492,30 @@ | |||
492 | #define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL) | 492 | #define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL) |
493 | #define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT) | 493 | #define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT) |
494 | 494 | ||
495 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
496 | |||
497 | #define ROCKBLOX_OFF BUTTON_POWER | ||
498 | #define ROCKBLOX_ROTATE_CCW BUTTON_HOME | ||
499 | #define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN | ||
500 | #define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP | ||
501 | #define ROCKBLOX_DOWN BUTTON_OPTION | ||
502 | #define ROCKBLOX_LEFT BUTTON_PREV | ||
503 | #define ROCKBLOX_RIGHT BUTTON_NEXT | ||
504 | #define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL) | ||
505 | #define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT) | ||
506 | |||
507 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
508 | |||
509 | #define ROCKBLOX_OFF BUTTON_POWER | ||
510 | #define ROCKBLOX_ROTATE_CCW BUTTON_HOME | ||
511 | #define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN | ||
512 | #define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP | ||
513 | #define ROCKBLOX_DOWN BUTTON_OPTION | ||
514 | #define ROCKBLOX_LEFT BUTTON_PREV | ||
515 | #define ROCKBLOX_RIGHT BUTTON_NEXT | ||
516 | #define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL) | ||
517 | #define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT) | ||
518 | |||
495 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 519 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
496 | 520 | ||
497 | #define ROCKBLOX_OFF BUTTON_POWER | 521 | #define ROCKBLOX_OFF BUTTON_POWER |
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c index 8886793ab7..f188dc1e24 100644 --- a/apps/plugins/rockboy/rockboy.c +++ b/apps/plugins/rockboy/rockboy.c | |||
@@ -433,6 +433,26 @@ static void setoptions (void) | |||
433 | options.SELECT = BUTTON_VOL_UP; | 433 | options.SELECT = BUTTON_VOL_UP; |
434 | options.MENU = BUTTON_POWER; | 434 | options.MENU = BUTTON_POWER; |
435 | 435 | ||
436 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
437 | options.UP = BUTTON_PREV; | ||
438 | options.DOWN = BUTTON_NEXT; | ||
439 | |||
440 | options.A = BUTTON_HOME; | ||
441 | options.B = BUTTON_OPTION; | ||
442 | options.START = BUTTON_VOL_DOWN; | ||
443 | options.SELECT = BUTTON_VOL_UP; | ||
444 | options.MENU = BUTTON_POWER; | ||
445 | |||
446 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
447 | options.UP = BUTTON_PREV; | ||
448 | options.DOWN = BUTTON_NEXT; | ||
449 | |||
450 | options.A = BUTTON_HOME; | ||
451 | options.B = BUTTON_OPTION; | ||
452 | options.START = BUTTON_VOL_DOWN; | ||
453 | options.SELECT = BUTTON_VOL_UP; | ||
454 | options.MENU = BUTTON_POWER; | ||
455 | |||
436 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 456 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
437 | options.UP = BUTTON_PREV; | 457 | options.UP = BUTTON_PREV; |
438 | options.DOWN = BUTTON_NEXT; | 458 | options.DOWN = BUTTON_NEXT; |
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c index 0ea36c84b8..9b863906ce 100644 --- a/apps/plugins/sliding_puzzle.c +++ b/apps/plugins/sliding_puzzle.c | |||
@@ -340,6 +340,25 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
340 | #define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER) | 340 | #define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER) |
341 | #define PUZZLE_PICTURE BUTTON_PLAY | 341 | #define PUZZLE_PICTURE BUTTON_PLAY |
342 | 342 | ||
343 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
344 | #define PUZZLE_QUIT BUTTON_POWER | ||
345 | #define PUZZLE_LEFT BUTTON_PREV | ||
346 | #define PUZZLE_RIGHT BUTTON_NEXT | ||
347 | #define PUZZLE_UP BUTTON_HOME | ||
348 | #define PUZZLE_DOWN BUTTON_OPTION | ||
349 | #define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER) | ||
350 | #define PUZZLE_PICTURE BUTTON_PLAY | ||
351 | |||
352 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
353 | #define PUZZLE_QUIT BUTTON_POWER | ||
354 | #define PUZZLE_LEFT BUTTON_PREV | ||
355 | #define PUZZLE_RIGHT BUTTON_NEXT | ||
356 | #define PUZZLE_UP BUTTON_HOME | ||
357 | #define PUZZLE_DOWN BUTTON_OPTION | ||
358 | #define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER) | ||
359 | #define PUZZLE_PICTURE BUTTON_PLAY | ||
360 | |||
361 | |||
343 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 362 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
344 | #define PUZZLE_QUIT BUTTON_POWER | 363 | #define PUZZLE_QUIT BUTTON_POWER |
345 | #define PUZZLE_LEFT BUTTON_HOME | 364 | #define PUZZLE_LEFT BUTTON_HOME |
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c index 2518316bdd..ae1e4350ad 100644 --- a/apps/plugins/snake.c +++ b/apps/plugins/snake.c | |||
@@ -297,6 +297,22 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left; | |||
297 | #define SNAKE_DOWN BUTTON_OPTION | 297 | #define SNAKE_DOWN BUTTON_OPTION |
298 | #define SNAKE_PLAYPAUSE BUTTON_PLAY | 298 | #define SNAKE_PLAYPAUSE BUTTON_PLAY |
299 | 299 | ||
300 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
301 | #define SNAKE_QUIT BUTTON_POWER | ||
302 | #define SNAKE_LEFT BUTTON_PREV | ||
303 | #define SNAKE_RIGHT BUTTON_NEXT | ||
304 | #define SNAKE_UP BUTTON_HOME | ||
305 | #define SNAKE_DOWN BUTTON_OPTION | ||
306 | #define SNAKE_PLAYPAUSE BUTTON_PLAY | ||
307 | |||
308 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
309 | #define SNAKE_QUIT BUTTON_POWER | ||
310 | #define SNAKE_LEFT BUTTON_PREV | ||
311 | #define SNAKE_RIGHT BUTTON_NEXT | ||
312 | #define SNAKE_UP BUTTON_HOME | ||
313 | #define SNAKE_DOWN BUTTON_OPTION | ||
314 | #define SNAKE_PLAYPAUSE BUTTON_PLAY | ||
315 | |||
300 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 316 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
301 | #define SNAKE_QUIT BUTTON_POWER | 317 | #define SNAKE_QUIT BUTTON_POWER |
302 | #define SNAKE_LEFT BUTTON_HOME | 318 | #define SNAKE_LEFT BUTTON_HOME |
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c index 9ea79504e4..a9f0942806 100644 --- a/apps/plugins/snake2.c +++ b/apps/plugins/snake2.c | |||
@@ -428,6 +428,24 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
428 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY | 428 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY |
429 | #define SNAKE2_PLAYPAUSE_TEXT "PLAY" | 429 | #define SNAKE2_PLAYPAUSE_TEXT "PLAY" |
430 | 430 | ||
431 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
432 | #define SNAKE2_LEFT BUTTON_PREV | ||
433 | #define SNAKE2_RIGHT BUTTON_NEXT | ||
434 | #define SNAKE2_UP BUTTON_HOME | ||
435 | #define SNAKE2_DOWN BUTTON_OPTION | ||
436 | #define SNAKE2_QUIT BUTTON_POWER | ||
437 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY | ||
438 | #define SNAKE2_PLAYPAUSE_TEXT "PLAY" | ||
439 | |||
440 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
441 | #define SNAKE2_LEFT BUTTON_PREV | ||
442 | #define SNAKE2_RIGHT BUTTON_NEXT | ||
443 | #define SNAKE2_UP BUTTON_HOME | ||
444 | #define SNAKE2_DOWN BUTTON_OPTION | ||
445 | #define SNAKE2_QUIT BUTTON_POWER | ||
446 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY | ||
447 | #define SNAKE2_PLAYPAUSE_TEXT "PLAY" | ||
448 | |||
431 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 449 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
432 | #define SNAKE2_LEFT BUTTON_HOME | 450 | #define SNAKE2_LEFT BUTTON_HOME |
433 | #define SNAKE2_RIGHT BUTTON_VOL_DOWN | 451 | #define SNAKE2_RIGHT BUTTON_VOL_DOWN |
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c index 17971ec4db..450c881d1e 100644 --- a/apps/plugins/sokoban.c +++ b/apps/plugins/sokoban.c | |||
@@ -667,6 +667,38 @@ | |||
667 | #define BUTTON_SAVE BUTTON_PLAY | 667 | #define BUTTON_SAVE BUTTON_PLAY |
668 | #define BUTTON_SAVE_NAME "PLAY" | 668 | #define BUTTON_SAVE_NAME "PLAY" |
669 | 669 | ||
670 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
671 | #define SOKOBAN_LEFT BUTTON_PREV | ||
672 | #define SOKOBAN_RIGHT BUTTON_NEXT | ||
673 | #define SOKOBAN_UP BUTTON_HOME | ||
674 | #define SOKOBAN_DOWN BUTTON_OPTION | ||
675 | #define SOKOBAN_MENU BUTTON_POWER | ||
676 | #define SOKOBAN_UNDO_PRE BUTTON_PLAY | ||
677 | #define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REL) | ||
678 | #define SOKOBAN_REDO (BUTTON_POWER | BUTTON_PLAY) | ||
679 | #define SOKOBAN_LEVEL_DOWN BUTTON_VOL_DOWN | ||
680 | #define SOKOBAN_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_NEXT) | ||
681 | #define SOKOBAN_LEVEL_UP BUTTON_VOL_UP | ||
682 | #define SOKOBAN_PAUSE BUTTON_PLAY | ||
683 | #define BUTTON_SAVE BUTTON_PLAY | ||
684 | #define BUTTON_SAVE_NAME "PLAY" | ||
685 | |||
686 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
687 | #define SOKOBAN_LEFT BUTTON_PREV | ||
688 | #define SOKOBAN_RIGHT BUTTON_NEXT | ||
689 | #define SOKOBAN_UP BUTTON_HOME | ||
690 | #define SOKOBAN_DOWN BUTTON_OPTION | ||
691 | #define SOKOBAN_MENU BUTTON_POWER | ||
692 | #define SOKOBAN_UNDO_PRE BUTTON_PLAY | ||
693 | #define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REL) | ||
694 | #define SOKOBAN_REDO (BUTTON_POWER | BUTTON_PLAY) | ||
695 | #define SOKOBAN_LEVEL_DOWN BUTTON_VOL_DOWN | ||
696 | #define SOKOBAN_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_NEXT) | ||
697 | #define SOKOBAN_LEVEL_UP BUTTON_VOL_UP | ||
698 | #define SOKOBAN_PAUSE BUTTON_PLAY | ||
699 | #define BUTTON_SAVE BUTTON_PLAY | ||
700 | #define BUTTON_SAVE_NAME "PLAY" | ||
701 | |||
670 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 702 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
671 | #define SOKOBAN_LEFT BUTTON_HOME | 703 | #define SOKOBAN_LEFT BUTTON_HOME |
672 | #define SOKOBAN_RIGHT BUTTON_VOL_DOWN | 704 | #define SOKOBAN_RIGHT BUTTON_VOL_DOWN |
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c index 1ee79bb86a..dd4c8d3447 100644 --- a/apps/plugins/solitaire.c +++ b/apps/plugins/solitaire.c | |||
@@ -706,6 +706,44 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
706 | # define HK_CUR2STACK "DBL PLAY" | 706 | # define HK_CUR2STACK "DBL PLAY" |
707 | # define HK_REM2STACK "NEXT" | 707 | # define HK_REM2STACK "NEXT" |
708 | 708 | ||
709 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
710 | # define SOL_QUIT BUTTON_POWER | ||
711 | # define SOL_UP BUTTON_HOME | ||
712 | # define SOL_DOWN BUTTON_OPTION | ||
713 | # define SOL_LEFT BUTTON_PREV | ||
714 | # define SOL_RIGHT BUTTON_NEXT | ||
715 | # define SOL_MOVE_PRE BUTTON_PLAY | ||
716 | # define SOL_MOVE (BUTTON_PLAY | BUTTON_REL) | ||
717 | # define SOL_DRAW (BUTTON_POWER | BUTTON_REPEAT) | ||
718 | # define SOL_REM2CUR BUTTON_VOL_DOWN | ||
719 | # define SOL_CUR2STACK_PRE BUTTON_PLAY | ||
720 | # define SOL_CUR2STACK (BUTTON_PLAY | BUTTON_REPEAT) | ||
721 | # define SOL_REM2STACK BUTTON_VOL_UP | ||
722 | # define HK_MOVE "PLAY" | ||
723 | # define HK_DRAW "DBL HOME" | ||
724 | # define HK_REM2CUR "PREV" | ||
725 | # define HK_CUR2STACK "DBL PLAY" | ||
726 | # define HK_REM2STACK "NEXT" | ||
727 | |||
728 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
729 | # define SOL_QUIT BUTTON_POWER | ||
730 | # define SOL_UP BUTTON_HOME | ||
731 | # define SOL_DOWN BUTTON_OPTION | ||
732 | # define SOL_LEFT BUTTON_PREV | ||
733 | # define SOL_RIGHT BUTTON_NEXT | ||
734 | # define SOL_MOVE_PRE BUTTON_PLAY | ||
735 | # define SOL_MOVE (BUTTON_PLAY | BUTTON_REL) | ||
736 | # define SOL_DRAW (BUTTON_POWER | BUTTON_REPEAT) | ||
737 | # define SOL_REM2CUR BUTTON_VOL_DOWN | ||
738 | # define SOL_CUR2STACK_PRE BUTTON_PLAY | ||
739 | # define SOL_CUR2STACK (BUTTON_PLAY | BUTTON_REPEAT) | ||
740 | # define SOL_REM2STACK BUTTON_VOL_UP | ||
741 | # define HK_MOVE "PLAY" | ||
742 | # define HK_DRAW "DBL HOME" | ||
743 | # define HK_REM2CUR "PREV" | ||
744 | # define HK_CUR2STACK "DBL PLAY" | ||
745 | # define HK_REM2STACK "NEXT" | ||
746 | |||
709 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 747 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
710 | # define SOL_QUIT BUTTON_POWER | 748 | # define SOL_QUIT BUTTON_POWER |
711 | # define SOL_UP BUTTON_PREV | 749 | # define SOL_UP BUTTON_PREV |
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c index 15d4039b4d..98c6d1a032 100644 --- a/apps/plugins/spacerocks.c +++ b/apps/plugins/spacerocks.c | |||
@@ -363,6 +363,24 @@ | |||
363 | #define AST_RIGHT BUTTON_NEXT | 363 | #define AST_RIGHT BUTTON_NEXT |
364 | #define AST_FIRE BUTTON_PLAY | 364 | #define AST_FIRE BUTTON_PLAY |
365 | 365 | ||
366 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
367 | #define AST_PAUSE BUTTON_VOL_UP | ||
368 | #define AST_QUIT BUTTON_POWER | ||
369 | #define AST_THRUST BUTTON_HOME | ||
370 | #define AST_HYPERSPACE BUTTON_OPTION | ||
371 | #define AST_LEFT BUTTON_PREV | ||
372 | #define AST_RIGHT BUTTON_NEXT | ||
373 | #define AST_FIRE BUTTON_PLAY | ||
374 | |||
375 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
376 | #define AST_PAUSE BUTTON_VOL_UP | ||
377 | #define AST_QUIT BUTTON_POWER | ||
378 | #define AST_THRUST BUTTON_HOME | ||
379 | #define AST_HYPERSPACE BUTTON_OPTION | ||
380 | #define AST_LEFT BUTTON_PREV | ||
381 | #define AST_RIGHT BUTTON_NEXT | ||
382 | #define AST_FIRE BUTTON_PLAY | ||
383 | |||
366 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 384 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
367 | #define AST_PAUSE BUTTON_PLAY | 385 | #define AST_PAUSE BUTTON_PLAY |
368 | #define AST_QUIT BUTTON_POWER | 386 | #define AST_QUIT BUTTON_POWER |
diff --git a/apps/plugins/star.c b/apps/plugins/star.c index fdf67bec4c..43036e2808 100644 --- a/apps/plugins/star.c +++ b/apps/plugins/star.c | |||
@@ -639,6 +639,38 @@ | |||
639 | #define STAR_LEVEL_DOWN_NAME "PLAY + PREV" | 639 | #define STAR_LEVEL_DOWN_NAME "PLAY + PREV" |
640 | #define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION" | 640 | #define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION" |
641 | 641 | ||
642 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
643 | #define STAR_QUIT BUTTON_POWER | ||
644 | #define STAR_LEFT BUTTON_PREV | ||
645 | #define STAR_RIGHT BUTTON_NEXT | ||
646 | #define STAR_UP BUTTON_HOME | ||
647 | #define STAR_DOWN BUTTON_OPTION | ||
648 | #define STAR_TOGGLE_CONTROL BUTTON_PLAY | ||
649 | #define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_NEXT) | ||
650 | #define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_PREV) | ||
651 | #define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_OPTION) | ||
652 | #define STAR_TOGGLE_CONTROL_NAME "PLAY" | ||
653 | #define STAR_QUIT_NAME "POWER" | ||
654 | #define STAR_LEVEL_UP_NAME "PLAY + NEXT" | ||
655 | #define STAR_LEVEL_DOWN_NAME "PLAY + PREV" | ||
656 | #define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION" | ||
657 | |||
658 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
659 | #define STAR_QUIT BUTTON_POWER | ||
660 | #define STAR_LEFT BUTTON_PREV | ||
661 | #define STAR_RIGHT BUTTON_NEXT | ||
662 | #define STAR_UP BUTTON_HOME | ||
663 | #define STAR_DOWN BUTTON_OPTION | ||
664 | #define STAR_TOGGLE_CONTROL BUTTON_PLAY | ||
665 | #define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_NEXT) | ||
666 | #define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_PREV) | ||
667 | #define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_OPTION) | ||
668 | #define STAR_TOGGLE_CONTROL_NAME "PLAY" | ||
669 | #define STAR_QUIT_NAME "POWER" | ||
670 | #define STAR_LEVEL_UP_NAME "PLAY + NEXT" | ||
671 | #define STAR_LEVEL_DOWN_NAME "PLAY + PREV" | ||
672 | #define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION" | ||
673 | |||
642 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 674 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
643 | #define STAR_QUIT BUTTON_POWER | 675 | #define STAR_QUIT BUTTON_POWER |
644 | #define STAR_LEFT BUTTON_HOME | 676 | #define STAR_LEFT BUTTON_HOME |
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c index 5e83859d89..a806e4e830 100644 --- a/apps/plugins/stopwatch.c +++ b/apps/plugins/stopwatch.c | |||
@@ -321,6 +321,22 @@ | |||
321 | #define STOPWATCH_SCROLL_UP BUTTON_HOME | 321 | #define STOPWATCH_SCROLL_UP BUTTON_HOME |
322 | #define STOPWATCH_SCROLL_DOWN BUTTON_OPTION | 322 | #define STOPWATCH_SCROLL_DOWN BUTTON_OPTION |
323 | 323 | ||
324 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
325 | #define STOPWATCH_QUIT BUTTON_POWER | ||
326 | #define STOPWATCH_START_STOP BUTTON_NEXT | ||
327 | #define STOPWATCH_RESET_TIMER BUTTON_PREV | ||
328 | #define STOPWATCH_LAP_TIMER BUTTON_PLAY | ||
329 | #define STOPWATCH_SCROLL_UP BUTTON_HOME | ||
330 | #define STOPWATCH_SCROLL_DOWN BUTTON_OPTION | ||
331 | |||
332 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
333 | #define STOPWATCH_QUIT BUTTON_POWER | ||
334 | #define STOPWATCH_START_STOP BUTTON_NEXT | ||
335 | #define STOPWATCH_RESET_TIMER BUTTON_PREV | ||
336 | #define STOPWATCH_LAP_TIMER BUTTON_PLAY | ||
337 | #define STOPWATCH_SCROLL_UP BUTTON_HOME | ||
338 | #define STOPWATCH_SCROLL_DOWN BUTTON_OPTION | ||
339 | |||
324 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 340 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
325 | #define STOPWATCH_QUIT BUTTON_POWER | 341 | #define STOPWATCH_QUIT BUTTON_POWER |
326 | #define STOPWATCH_START_STOP BUTTON_NEXT | 342 | #define STOPWATCH_START_STOP BUTTON_NEXT |
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h index 62ec80dba8..2bee868de9 100644 --- a/apps/plugins/sudoku/sudoku.h +++ b/apps/plugins/sudoku/sudoku.h | |||
@@ -437,6 +437,34 @@ | |||
437 | #define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL) | 437 | #define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL) |
438 | #define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER) | 438 | #define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER) |
439 | 439 | ||
440 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
441 | #define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER | ||
442 | #define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT) | ||
443 | #define SUDOKU_BUTTON_UP BUTTON_HOME | ||
444 | #define SUDOKU_BUTTON_DOWN BUTTON_OPTION | ||
445 | #define SUDOKU_BUTTON_LEFT BUTTON_PREV | ||
446 | #define SUDOKU_BUTTON_RIGHT BUTTON_NEXT | ||
447 | #define SUDOKU_BUTTON_TOGGLEBACK BUTTON_VOL_DOWN | ||
448 | #define SUDOKU_BUTTON_TOGGLE BUTTON_VOL_UP | ||
449 | #define SUDOKU_BUTTON_ALTTOGGLE BUTTON_PLAY | ||
450 | #define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER | ||
451 | #define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL) | ||
452 | #define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER) | ||
453 | |||
454 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
455 | #define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER | ||
456 | #define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT) | ||
457 | #define SUDOKU_BUTTON_UP BUTTON_HOME | ||
458 | #define SUDOKU_BUTTON_DOWN BUTTON_OPTION | ||
459 | #define SUDOKU_BUTTON_LEFT BUTTON_PREV | ||
460 | #define SUDOKU_BUTTON_RIGHT BUTTON_NEXT | ||
461 | #define SUDOKU_BUTTON_TOGGLEBACK BUTTON_VOL_DOWN | ||
462 | #define SUDOKU_BUTTON_TOGGLE BUTTON_VOL_UP | ||
463 | #define SUDOKU_BUTTON_ALTTOGGLE BUTTON_PLAY | ||
464 | #define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER | ||
465 | #define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL) | ||
466 | #define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER) | ||
467 | |||
440 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 468 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
441 | #define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER | 469 | #define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER |
442 | #define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT) | 470 | #define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT) |
diff --git a/apps/plugins/text_viewer/tv_button.h b/apps/plugins/text_viewer/tv_button.h index da6453ff8d..6ee8f9bbf1 100644 --- a/apps/plugins/text_viewer/tv_button.h +++ b/apps/plugins/text_viewer/tv_button.h | |||
@@ -562,6 +562,30 @@ | |||
562 | #define TV_LINE_DOWN BUTTON_OPTION | 562 | #define TV_LINE_DOWN BUTTON_OPTION |
563 | #define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY) | 563 | #define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY) |
564 | 564 | ||
565 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
566 | #define TV_QUIT BUTTON_POWER | ||
567 | #define TV_SCROLL_UP BUTTON_VOL_UP | ||
568 | #define TV_SCROLL_DOWN BUTTON_VOL_DOWN | ||
569 | #define TV_SCREEN_LEFT BUTTON_PREV | ||
570 | #define TV_SCREEN_RIGHT BUTTON_NEXT | ||
571 | #define TV_MENU BUTTON_PLAY | ||
572 | #define TV_AUTOSCROLL (BUTTON_POWER | BUTTON_HOME) | ||
573 | #define TV_LINE_UP BUTTON_HOME | ||
574 | #define TV_LINE_DOWN BUTTON_OPTION | ||
575 | #define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY) | ||
576 | |||
577 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
578 | #define TV_QUIT BUTTON_POWER | ||
579 | #define TV_SCROLL_UP BUTTON_VOL_UP | ||
580 | #define TV_SCROLL_DOWN BUTTON_VOL_DOWN | ||
581 | #define TV_SCREEN_LEFT BUTTON_PREV | ||
582 | #define TV_SCREEN_RIGHT BUTTON_NEXT | ||
583 | #define TV_MENU BUTTON_PLAY | ||
584 | #define TV_AUTOSCROLL (BUTTON_POWER | BUTTON_HOME) | ||
585 | #define TV_LINE_UP BUTTON_HOME | ||
586 | #define TV_LINE_DOWN BUTTON_OPTION | ||
587 | #define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY) | ||
588 | |||
565 | /* Xuelin 770/770c keys */ | 589 | /* Xuelin 770/770c keys */ |
566 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 590 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
567 | #define TV_QUIT BUTTON_POWER | 591 | #define TV_QUIT BUTTON_POWER |
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c index eaa92d4b48..33ad38d72c 100644 --- a/apps/plugins/vu_meter.c +++ b/apps/plugins/vu_meter.c | |||
@@ -432,6 +432,28 @@ | |||
432 | #define LABEL_MENU "PLAY" | 432 | #define LABEL_MENU "PLAY" |
433 | #define LABEL_VOLUME "VOL UP/DN" | 433 | #define LABEL_VOLUME "VOL UP/DN" |
434 | 434 | ||
435 | #elif (CONFIG_KEYPAD == XDUOO_X3II_PAD) | ||
436 | #define VUMETER_QUIT BUTTON_POWER | ||
437 | #define VUMETER_HELP BUTTON_HOME | ||
438 | #define VUMETER_MENU BUTTON_PLAY | ||
439 | #define VUMETER_UP BUTTON_VOL_UP | ||
440 | #define VUMETER_DOWN BUTTON_VOL_DOWN | ||
441 | #define LABEL_HELP "HOME" | ||
442 | #define LABEL_QUIT "POWER" | ||
443 | #define LABEL_MENU "PLAY" | ||
444 | #define LABEL_VOLUME "VOL UP/DN" | ||
445 | |||
446 | #elif (CONFIG_KEYPAD == XDUOO_X20_PAD) | ||
447 | #define VUMETER_QUIT BUTTON_POWER | ||
448 | #define VUMETER_HELP BUTTON_HOME | ||
449 | #define VUMETER_MENU BUTTON_PLAY | ||
450 | #define VUMETER_UP BUTTON_VOL_UP | ||
451 | #define VUMETER_DOWN BUTTON_VOL_DOWN | ||
452 | #define LABEL_HELP "HOME" | ||
453 | #define LABEL_QUIT "POWER" | ||
454 | #define LABEL_MENU "PLAY" | ||
455 | #define LABEL_VOLUME "VOL UP/DN" | ||
456 | |||
435 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) | 457 | #elif (CONFIG_KEYPAD == IHIFI_770_PAD) |
436 | #define VUMETER_QUIT BUTTON_POWER | 458 | #define VUMETER_QUIT BUTTON_POWER |
437 | #define VUMETER_HELP BUTTON_HOME | 459 | #define VUMETER_HELP BUTTON_HOME |
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c index 9adfc97b81..d342511419 100644 --- a/apps/plugins/wormlet.c +++ b/apps/plugins/wormlet.c | |||
@@ -402,6 +402,24 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
402 | #define BTN_QUIT BUTTON_POWER | 402 | #define BTN_QUIT BUTTON_POWER |
403 | #define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER) | 403 | #define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER) |
404 | 404 | ||
405 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
406 | #define BTN_DIR_UP BUTTON_HOME | ||
407 | #define BTN_DIR_DOWN BUTTON_OPTION | ||
408 | #define BTN_DIR_LEFT BUTTON_PREV | ||
409 | #define BTN_DIR_RIGHT BUTTON_NEXT | ||
410 | #define BTN_STARTPAUSE BUTTON_PLAY | ||
411 | #define BTN_QUIT BUTTON_POWER | ||
412 | #define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER) | ||
413 | |||
414 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
415 | #define BTN_DIR_UP BUTTON_HOME | ||
416 | #define BTN_DIR_DOWN BUTTON_OPTION | ||
417 | #define BTN_DIR_LEFT BUTTON_PREV | ||
418 | #define BTN_DIR_RIGHT BUTTON_NEXT | ||
419 | #define BTN_STARTPAUSE BUTTON_PLAY | ||
420 | #define BTN_QUIT BUTTON_POWER | ||
421 | #define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER) | ||
422 | |||
405 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 423 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
406 | #define BTN_DIR_UP BUTTON_PREV | 424 | #define BTN_DIR_UP BUTTON_PREV |
407 | #define BTN_DIR_DOWN BUTTON_NEXT | 425 | #define BTN_DIR_DOWN BUTTON_NEXT |
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c index 8acdf85015..9643641569 100644 --- a/apps/plugins/xobox.c +++ b/apps/plugins/xobox.c | |||
@@ -351,6 +351,24 @@ CONFIG_KEYPAD == MROBE500_PAD | |||
351 | #define DOWN BUTTON_OPTION | 351 | #define DOWN BUTTON_OPTION |
352 | #define PAUSE BUTTON_PLAY | 352 | #define PAUSE BUTTON_PLAY |
353 | 353 | ||
354 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
355 | |||
356 | #define QUIT BUTTON_POWER | ||
357 | #define LEFT BUTTON_PREV | ||
358 | #define RIGHT BUTTON_NEXT | ||
359 | #define UP BUTTON_HOME | ||
360 | #define DOWN BUTTON_OPTION | ||
361 | #define PAUSE BUTTON_PLAY | ||
362 | |||
363 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
364 | |||
365 | #define QUIT BUTTON_POWER | ||
366 | #define LEFT BUTTON_PREV | ||
367 | #define RIGHT BUTTON_NEXT | ||
368 | #define UP BUTTON_HOME | ||
369 | #define DOWN BUTTON_OPTION | ||
370 | #define PAUSE BUTTON_PLAY | ||
371 | |||
354 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 372 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
355 | 373 | ||
356 | #define QUIT BUTTON_POWER | 374 | #define QUIT BUTTON_POWER |
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h index ce527c561e..53dd9e8d88 100644 --- a/apps/plugins/zxbox/keymaps.h +++ b/apps/plugins/zxbox/keymaps.h | |||
@@ -290,6 +290,22 @@ | |||
290 | #define ZX_UP BUTTON_HOME | 290 | #define ZX_UP BUTTON_HOME |
291 | #define ZX_DOWN BUTTON_OPTION | 291 | #define ZX_DOWN BUTTON_OPTION |
292 | 292 | ||
293 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
294 | #define ZX_SELECT BUTTON_PLAY | ||
295 | #define ZX_MENU BUTTON_POWER | ||
296 | #define ZX_LEFT BUTTON_PREV | ||
297 | #define ZX_RIGHT BUTTON_NEXT | ||
298 | #define ZX_UP BUTTON_HOME | ||
299 | #define ZX_DOWN BUTTON_OPTION | ||
300 | |||
301 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
302 | #define ZX_SELECT BUTTON_PLAY | ||
303 | #define ZX_MENU BUTTON_POWER | ||
304 | #define ZX_LEFT BUTTON_PREV | ||
305 | #define ZX_RIGHT BUTTON_NEXT | ||
306 | #define ZX_UP BUTTON_HOME | ||
307 | #define ZX_DOWN BUTTON_OPTION | ||
308 | |||
293 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 309 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
294 | #define ZX_SELECT BUTTON_PLAY | 310 | #define ZX_SELECT BUTTON_PLAY |
295 | #define ZX_MENU BUTTON_POWER | 311 | #define ZX_MENU BUTTON_POWER |
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c index b3f1ca70e8..4a26accc8a 100644 --- a/apps/plugins/zxbox/zxbox_keyb.c +++ b/apps/plugins/zxbox/zxbox_keyb.c | |||
@@ -287,6 +287,24 @@ | |||
287 | #define KBD_UP BUTTON_HOME | 287 | #define KBD_UP BUTTON_HOME |
288 | #define KBD_DOWN BUTTON_OPTION | 288 | #define KBD_DOWN BUTTON_OPTION |
289 | 289 | ||
290 | #elif CONFIG_KEYPAD == XDUOO_X3II_PAD | ||
291 | |||
292 | #define KBD_SELECT BUTTON_PLAY | ||
293 | #define KBD_ABORT BUTTON_POWER | ||
294 | #define KBD_LEFT BUTTON_PREV | ||
295 | #define KBD_RIGHT BUTTON_NEXT | ||
296 | #define KBD_UP BUTTON_HOME | ||
297 | #define KBD_DOWN BUTTON_OPTION | ||
298 | |||
299 | #elif CONFIG_KEYPAD == XDUOO_X20_PAD | ||
300 | |||
301 | #define KBD_SELECT BUTTON_PLAY | ||
302 | #define KBD_ABORT BUTTON_POWER | ||
303 | #define KBD_LEFT BUTTON_PREV | ||
304 | #define KBD_RIGHT BUTTON_NEXT | ||
305 | #define KBD_UP BUTTON_HOME | ||
306 | #define KBD_DOWN BUTTON_OPTION | ||
307 | |||
290 | #elif CONFIG_KEYPAD == IHIFI_770_PAD | 308 | #elif CONFIG_KEYPAD == IHIFI_770_PAD |
291 | 309 | ||
292 | #define KBD_SELECT BUTTON_PLAY | 310 | #define KBD_SELECT BUTTON_PLAY |
diff --git a/bootloader/SOURCES b/bootloader/SOURCES index ce73724f69..82ddcb80b9 100644 --- a/bootloader/SOURCES +++ b/bootloader/SOURCES | |||
@@ -78,6 +78,8 @@ mpio_hd200_hd300.c | |||
78 | nwz_linux.c | 78 | nwz_linux.c |
79 | #elif defined(AGPTEK_ROCKER) | 79 | #elif defined(AGPTEK_ROCKER) |
80 | rocker_linux.c | 80 | rocker_linux.c |
81 | #elif (defined(XDUOO_X3II) || defined(XDUOO_X20)) | ||
82 | xduoo_linux.c | ||
81 | #elif defined(RK27_GENERIC) || defined(HM60X) || defined(HM801) \ | 83 | #elif defined(RK27_GENERIC) || defined(HM60X) || defined(HM801) \ |
82 | || defined(MA9) || defined(MA9C) || defined(MA8) || defined(MA8C) \ | 84 | || defined(MA9) || defined(MA9C) || defined(MA8) || defined(MA8C) \ |
83 | || defined(IHIFI760) || defined(IHIFI960) || defined(IHIFI800) \ | 85 | || defined(IHIFI760) || defined(IHIFI960) || defined(IHIFI800) \ |
diff --git a/bootloader/rocker_linux.c b/bootloader/rocker_linux.c index cb0e5b66e5..80b3bfbab5 100644 --- a/bootloader/rocker_linux.c +++ b/bootloader/rocker_linux.c | |||
@@ -12,7 +12,7 @@ | |||
12 | * | 12 | * |
13 | * Based on Rockbox iriver bootloader by Linus Nielsen Feltzing | 13 | * Based on Rockbox iriver bootloader by Linus Nielsen Feltzing |
14 | * and the ipodlinux bootloader by Daniel Palffy and Bernard Leach | 14 | * and the ipodlinux bootloader by Daniel Palffy and Bernard Leach |
15 | * | 15 | * |
16 | * This program is free software; you can redistribute it and/or | 16 | * This program is free software; you can redistribute it and/or |
17 | * modify it under the terms of the GNU General Public License | 17 | * modify it under the terms of the GNU General Public License |
18 | * as published by the Free Software Foundation; either version 2 | 18 | * as published by the Free Software Foundation; either version 2 |
@@ -464,7 +464,7 @@ static int open_log(void) | |||
464 | return fd; | 464 | return fd; |
465 | close(fd); | 465 | close(fd); |
466 | /* move file */ | 466 | /* move file */ |
467 | rename("/mnt/sd_0/rockbox.log", "/mnt_sd0/rockbox.log.1"); | 467 | rename("/mnt/sd_0/rockbox.log", "/mnt_sd_0/rockbox.log.1"); |
468 | /* re-open the file, truncate in case the move was unsuccessful */ | 468 | /* re-open the file, truncate in case the move was unsuccessful */ |
469 | return open("/mnt/sd_0/rockbox.log", O_RDWR | O_CREAT | O_APPEND | O_TRUNC); | 469 | return open("/mnt/sd_0/rockbox.log", O_RDWR | O_CREAT | O_APPEND | O_TRUNC); |
470 | } | 470 | } |
diff --git a/bootloader/xduoo_linux.c b/bootloader/xduoo_linux.c new file mode 100644 index 0000000000..1071c6dc9b --- /dev/null +++ b/bootloader/xduoo_linux.c | |||
@@ -0,0 +1,555 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * | ||
10 | * Copyright (C) 2016 by Amaury Pouly | ||
11 | * 2018 by Marcin Bukat | ||
12 | * 2018 by Roman Stolyarov | ||
13 | * | ||
14 | * Based on Rockbox iriver bootloader by Linus Nielsen Feltzing | ||
15 | * and the ipodlinux bootloader by Daniel Palffy and Bernard Leach | ||
16 | * | ||
17 | * This program is free software; you can redistribute it and/or | ||
18 | * modify it under the terms of the GNU General Public License | ||
19 | * as published by the Free Software Foundation; either version 2 | ||
20 | * of the License, or (at your option) any later version. | ||
21 | * | ||
22 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
23 | * KIND, either express or implied. | ||
24 | * | ||
25 | ****************************************************************************/ | ||
26 | |||
27 | #include "system.h" | ||
28 | #include "lcd.h" | ||
29 | #include "backlight.h" | ||
30 | #include "button-target.h" | ||
31 | #include "button.h" | ||
32 | #include "../kernel/kernel-internal.h" | ||
33 | #include "core_alloc.h" | ||
34 | #include "filesystem-app.h" | ||
35 | #include "lcd.h" | ||
36 | #include "font.h" | ||
37 | #include "power.h" | ||
38 | #include <string.h> | ||
39 | #include <stdlib.h> | ||
40 | #include <unistd.h> | ||
41 | #include <sys/types.h> | ||
42 | #include <sys/stat.h> | ||
43 | #include <fcntl.h> | ||
44 | #include <dirent.h> | ||
45 | #include <sys/wait.h> | ||
46 | #include <stdarg.h> | ||
47 | #include "version.h" | ||
48 | |||
49 | /* all images must have the following size */ | ||
50 | #define ICON_WIDTH 130 | ||
51 | #define ICON_HEIGHT 130 | ||
52 | |||
53 | /* images */ | ||
54 | #include "bitmaps/rockboxicon.h" | ||
55 | #include "bitmaps/hibyicon.h" | ||
56 | #include "bitmaps/toolsicon.h" | ||
57 | |||
58 | /* don't issue an error when parsing the file for dependencies */ | ||
59 | #if defined(BMPWIDTH_rockboxicon) && (BMPWIDTH_rockboxicon != ICON_WIDTH || \ | ||
60 | BMPHEIGHT_rockboxicon != ICON_HEIGHT) | ||
61 | #error rockboxicon has the wrong resolution | ||
62 | #endif | ||
63 | #if defined(BMPWIDTH_hibyicon) && (BMPWIDTH_hibyicon != ICON_WIDTH || \ | ||
64 | BMPHEIGHT_hibyicon != ICON_HEIGHT) | ||
65 | #error hibyicon has the wrong resolution | ||
66 | #endif | ||
67 | #if defined(BMPWIDTH_toolsicon) && (BMPWIDTH_toolsicon != ICON_WIDTH || \ | ||
68 | BMPHEIGHT_toolsicon != ICON_HEIGHT) | ||
69 | #error toolsicon has the wrong resolution | ||
70 | #endif | ||
71 | |||
72 | #ifndef BUTTON_UP | ||
73 | #define BUTTON_UP BUTTON_PREV | ||
74 | #endif | ||
75 | #ifndef BUTTON_DOWN | ||
76 | #define BUTTON_DOWN BUTTON_NEXT | ||
77 | #endif | ||
78 | #ifndef BUTTON_ENTER | ||
79 | #define BUTTON_ENTER BUTTON_PLAY | ||
80 | #endif | ||
81 | |||
82 | /* return icon y position (x is always centered) */ | ||
83 | static int get_icon_y(void) | ||
84 | { | ||
85 | int h; | ||
86 | lcd_getstringsize("X", NULL, &h); | ||
87 | return ((LCD_HEIGHT - ICON_HEIGHT)/2) - h; | ||
88 | } | ||
89 | |||
90 | /* Important Note: this bootloader is carefully written so that in case of | ||
91 | * error, the OF is run. This seems like the safest option since the OF is | ||
92 | * always there and might do magic things. */ | ||
93 | |||
94 | enum boot_mode | ||
95 | { | ||
96 | BOOT_ROCKBOX, | ||
97 | BOOT_TOOLS, | ||
98 | BOOT_OF, | ||
99 | BOOT_COUNT, | ||
100 | BOOT_USB, /* special */ | ||
101 | BOOT_STOP, /* power down/suspend */ | ||
102 | }; | ||
103 | |||
104 | static void display_text_center(int y, const char *text) | ||
105 | { | ||
106 | int width; | ||
107 | lcd_getstringsize(text, &width, NULL); | ||
108 | lcd_putsxy(LCD_WIDTH / 2 - width / 2, y, text); | ||
109 | } | ||
110 | |||
111 | static void display_text_centerf(int y, const char *format, ...) | ||
112 | { | ||
113 | char buf[1024]; | ||
114 | va_list ap; | ||
115 | va_start(ap, format); | ||
116 | |||
117 | vsnprintf(buf, sizeof(buf), format, ap); | ||
118 | display_text_center(y, buf); | ||
119 | } | ||
120 | |||
121 | /* get timeout before taking action if the user doesn't touch the device */ | ||
122 | static int get_inactivity_tmo(void) | ||
123 | { | ||
124 | #if defined(HAS_BUTTON_HOLD) | ||
125 | if(button_hold()) | ||
126 | return 5 * HZ; /* Inactivity timeout when on hold */ | ||
127 | else | ||
128 | #endif | ||
129 | return 10 * HZ; /* Inactivity timeout when not on hold */ | ||
130 | } | ||
131 | |||
132 | /* return action on idle timeout */ | ||
133 | static enum boot_mode inactivity_action(enum boot_mode cur_selection) | ||
134 | { | ||
135 | #if defined(HAS_BUTTON_HOLD) | ||
136 | if(button_hold()) | ||
137 | return BOOT_STOP; /* power down/suspend */ | ||
138 | else | ||
139 | #endif | ||
140 | return cur_selection; /* return last choice */ | ||
141 | } | ||
142 | |||
143 | /* we store the boot mode in a file in /tmp so we can reload it between 'boots' | ||
144 | * (since the mostly suspends instead of powering down) */ | ||
145 | static enum boot_mode load_boot_mode(enum boot_mode mode) | ||
146 | { | ||
147 | int fd = open("/data/rb_bl_mode.txt", O_RDONLY); | ||
148 | if(fd >= 0) | ||
149 | { | ||
150 | read(fd, &mode, sizeof(mode)); | ||
151 | close(fd); | ||
152 | } | ||
153 | return mode; | ||
154 | } | ||
155 | |||
156 | static void save_boot_mode(enum boot_mode mode) | ||
157 | { | ||
158 | int fd = open("/data/rb_bl_mode.txt", O_RDWR | O_CREAT | O_TRUNC); | ||
159 | if(fd >= 0) | ||
160 | { | ||
161 | write(fd, &mode, sizeof(mode)); | ||
162 | close(fd); | ||
163 | } | ||
164 | } | ||
165 | |||
166 | static enum boot_mode get_boot_mode(void) | ||
167 | { | ||
168 | /* load previous mode, or start with rockbox if none */ | ||
169 | enum boot_mode init_mode = load_boot_mode(BOOT_ROCKBOX); | ||
170 | /* wait for user action */ | ||
171 | enum boot_mode mode = init_mode; | ||
172 | int last_activity = current_tick; | ||
173 | #if defined(HAS_BUTTON_HOLD) | ||
174 | bool hold_status = button_hold(); | ||
175 | #endif | ||
176 | while(true) | ||
177 | { | ||
178 | /* on usb detect, return to usb | ||
179 | * FIXME this is a hack, we need proper usb detection */ | ||
180 | if(power_input_status() & POWER_INPUT_USB_CHARGER) | ||
181 | { | ||
182 | /* save last choice */ | ||
183 | save_boot_mode(mode); | ||
184 | return BOOT_USB; | ||
185 | } | ||
186 | /* inactivity detection */ | ||
187 | int timeout = last_activity + get_inactivity_tmo(); | ||
188 | if(TIME_AFTER(current_tick, timeout)) | ||
189 | { | ||
190 | /* save last choice */ | ||
191 | save_boot_mode(mode); | ||
192 | return inactivity_action(mode); | ||
193 | } | ||
194 | /* redraw */ | ||
195 | lcd_clear_display(); | ||
196 | /* display top text */ | ||
197 | #if defined(HAS_BUTTON_HOLD) | ||
198 | if(button_hold()) | ||
199 | { | ||
200 | lcd_set_foreground(LCD_RGBPACK(255, 0, 0)); | ||
201 | display_text_center(0, "ON HOLD!"); | ||
202 | } | ||
203 | else | ||
204 | #endif | ||
205 | { | ||
206 | lcd_set_foreground(LCD_RGBPACK(255, 201, 0)); | ||
207 | display_text_center(0, "SELECT PLAYER"); | ||
208 | } | ||
209 | lcd_set_foreground(LCD_RGBPACK(255, 201, 0)); | ||
210 | /* display icon */ | ||
211 | const struct bitmap *icon = (mode == BOOT_OF) ? &bm_hibyicon : | ||
212 | (mode == BOOT_ROCKBOX) ? &bm_rockboxicon : &bm_toolsicon; | ||
213 | lcd_bmp(icon, (LCD_WIDTH - ICON_WIDTH) / 2, get_icon_y()); | ||
214 | /* display bottom description */ | ||
215 | const char *desc = (mode == BOOT_OF) ? "HIBY PLAYER" : | ||
216 | (mode == BOOT_ROCKBOX) ? "ROCKBOX" : "TOOLS"; | ||
217 | |||
218 | int desc_height; | ||
219 | lcd_getstringsize(desc, NULL, &desc_height); | ||
220 | display_text_center(LCD_HEIGHT - 3*desc_height, desc); | ||
221 | |||
222 | /* display arrows */ | ||
223 | int arrow_width, arrow_height; | ||
224 | lcd_getstringsize("<", &arrow_width, &arrow_height); | ||
225 | int arrow_y = get_icon_y() + ICON_HEIGHT / 2 - arrow_height / 2; | ||
226 | lcd_putsxy(arrow_width / 2, arrow_y, "<"); | ||
227 | lcd_putsxy(LCD_WIDTH - 3 * arrow_width / 2, arrow_y, ">"); | ||
228 | |||
229 | lcd_set_foreground(LCD_RGBPACK(0, 255, 0)); | ||
230 | display_text_centerf(LCD_HEIGHT - arrow_height * 3 / 2, "timeout in %d sec", | ||
231 | (timeout - current_tick + HZ - 1) / HZ); | ||
232 | |||
233 | lcd_update(); | ||
234 | |||
235 | /* wait for a key */ | ||
236 | int btn = button_get_w_tmo(HZ / 10); | ||
237 | |||
238 | #if defined(HAS_BUTTON_HOLD) | ||
239 | /* record action, changing HOLD counts as action */ | ||
240 | if(btn & BUTTON_MAIN || hold_status != button_hold()) | ||
241 | last_activity = current_tick; | ||
242 | |||
243 | hold_status = button_hold(); | ||
244 | #else | ||
245 | if(btn & BUTTON_MAIN) | ||
246 | last_activity = current_tick; | ||
247 | #endif | ||
248 | /* ignore release, allow repeat */ | ||
249 | if(btn & BUTTON_REL) | ||
250 | continue; | ||
251 | if(btn & BUTTON_REPEAT) | ||
252 | btn &= ~BUTTON_REPEAT; | ||
253 | /* play -> stop loop and return mode */ | ||
254 | if(btn == BUTTON_ENTER) | ||
255 | break; | ||
256 | /* left/right/up/down: change mode */ | ||
257 | if(btn == BUTTON_UP || btn == BUTTON_VOL_UP) | ||
258 | mode = (mode + BOOT_COUNT - 1) % BOOT_COUNT; | ||
259 | if(btn == BUTTON_DOWN || btn == BUTTON_VOL_DOWN) | ||
260 | mode = (mode + 1) % BOOT_COUNT; | ||
261 | } | ||
262 | |||
263 | /* save mode */ | ||
264 | save_boot_mode(mode); | ||
265 | return mode; | ||
266 | } | ||
267 | |||
268 | void error_screen(const char *msg) | ||
269 | { | ||
270 | lcd_clear_display(); | ||
271 | lcd_putsf(0, 0, msg); | ||
272 | lcd_update(); | ||
273 | } | ||
274 | |||
275 | int choice_screen(const char *title, bool center, int nr_choices, const char *choices[]) | ||
276 | { | ||
277 | int choice = 0; | ||
278 | int max_len = 0; | ||
279 | int h; | ||
280 | lcd_getstringsize("x", NULL, &h); | ||
281 | for(int i = 0; i < nr_choices; i++) | ||
282 | { | ||
283 | int len = strlen(choices[i]); | ||
284 | if(len > max_len) | ||
285 | max_len = len; | ||
286 | } | ||
287 | char *buf = malloc(max_len + 10); | ||
288 | int top_y = 2 * h; | ||
289 | int nr_lines = (LCD_HEIGHT - top_y) / h; | ||
290 | while(true) | ||
291 | { | ||
292 | /* make sure choice is visible */ | ||
293 | int offset = choice - nr_lines / 2; | ||
294 | if(offset < 0) | ||
295 | offset = 0; | ||
296 | lcd_clear_display(); | ||
297 | /* display top text */ | ||
298 | lcd_set_foreground(LCD_RGBPACK(255, 201, 0)); | ||
299 | display_text_center(0, title); | ||
300 | int line = 0; | ||
301 | for(int i = 0; i < nr_choices && line < nr_lines; i++) | ||
302 | { | ||
303 | if(i < offset) | ||
304 | continue; | ||
305 | if(i == choice) | ||
306 | lcd_set_foreground(LCD_RGBPACK(255, 0, 0)); | ||
307 | else | ||
308 | lcd_set_foreground(LCD_RGBPACK(255, 201, 0)); | ||
309 | sprintf(buf, "%s", choices[i]); | ||
310 | if(center) | ||
311 | display_text_center(top_y + h * line, buf); | ||
312 | else | ||
313 | lcd_putsxy(0, top_y + h * line, buf); | ||
314 | line++; | ||
315 | } | ||
316 | |||
317 | lcd_update(); | ||
318 | |||
319 | /* wait for a key */ | ||
320 | int btn = button_get_w_tmo(HZ / 10); | ||
321 | /* ignore release, allow repeat */ | ||
322 | if(btn & BUTTON_REL) | ||
323 | continue; | ||
324 | if(btn & BUTTON_REPEAT) | ||
325 | btn &= ~BUTTON_REPEAT; | ||
326 | /* play -> stop loop and return mode */ | ||
327 | if(btn == BUTTON_ENTER) | ||
328 | { | ||
329 | free(buf); | ||
330 | return btn == BUTTON_ENTER ? choice : -1; | ||
331 | } | ||
332 | /* left/right/up/down: change mode */ | ||
333 | if(btn == BUTTON_UP || btn == BUTTON_VOL_UP) | ||
334 | choice = (choice + nr_choices - 1) % nr_choices; | ||
335 | if(btn == BUTTON_DOWN || btn == BUTTON_VOL_DOWN) | ||
336 | choice = (choice + 1) % nr_choices; | ||
337 | } | ||
338 | } | ||
339 | |||
340 | void run_file(const char *name) | ||
341 | { | ||
342 | char *dirname = "/mnt/sd_0/"; | ||
343 | char *buf = malloc(strlen(dirname) + strlen(name) + 1); | ||
344 | sprintf(buf, "%s%s", dirname, name); | ||
345 | |||
346 | lcd_clear_display(); | ||
347 | lcd_set_foreground(LCD_RGBPACK(255, 201, 0)); | ||
348 | lcd_putsf(0, 0, "Running %s", name); | ||
349 | lcd_update(); | ||
350 | |||
351 | pid_t pid = fork(); | ||
352 | if(pid == 0) | ||
353 | { | ||
354 | execlp("sh", "sh", buf, NULL); | ||
355 | _exit(42); | ||
356 | } | ||
357 | int status; | ||
358 | waitpid(pid, &status, 0); | ||
359 | if(WIFEXITED(status)) | ||
360 | { | ||
361 | lcd_set_foreground(LCD_RGBPACK(255, 201, 0)); | ||
362 | lcd_putsf(0, 1, "program returned %d", WEXITSTATUS(status)); | ||
363 | } | ||
364 | else | ||
365 | { | ||
366 | lcd_set_foreground(LCD_RGBPACK(255, 0, 0)); | ||
367 | lcd_putsf(0, 1, "an error occured: %x", status); | ||
368 | } | ||
369 | lcd_set_foreground(LCD_RGBPACK(255, 0, 0)); | ||
370 | lcd_putsf(0, 3, "Press any key or wait"); | ||
371 | lcd_update(); | ||
372 | /* wait a small time */ | ||
373 | sleep(HZ); | ||
374 | /* ignore event */ | ||
375 | while(button_get(false) != 0) {} | ||
376 | /* wait for any key or timeout */ | ||
377 | button_get_w_tmo(4 * HZ); | ||
378 | } | ||
379 | |||
380 | void run_script_menu(void) | ||
381 | { | ||
382 | const char **entries = NULL; | ||
383 | int nr_entries = 0; | ||
384 | DIR *dir = opendir("/mnt/sd_0"); | ||
385 | struct dirent *ent; | ||
386 | while((ent = readdir(dir))) | ||
387 | { | ||
388 | if(ent->d_type != DT_REG) | ||
389 | continue; | ||
390 | entries = realloc(entries, (nr_entries + 1) * sizeof(const char *)); | ||
391 | entries[nr_entries++] = strdup(ent->d_name); | ||
392 | } | ||
393 | closedir(dir); | ||
394 | int idx = choice_screen("RUN SCRIPT", false, nr_entries, entries); | ||
395 | if(idx >= 0) | ||
396 | run_file(entries[idx]); | ||
397 | for(int i = 0; i < nr_entries; i++) | ||
398 | free((char *)entries[i]); | ||
399 | free(entries); | ||
400 | } | ||
401 | |||
402 | static void adb(int start) | ||
403 | { | ||
404 | pid_t pid = fork(); | ||
405 | if(pid == 0) | ||
406 | { | ||
407 | execlp("/etc/init.d/K90adb", "K90adb", start ? "start" : "stop", NULL); | ||
408 | _exit(42); | ||
409 | } | ||
410 | int status; | ||
411 | waitpid(pid, &status, 0); | ||
412 | #if 0 | ||
413 | if(WIFEXITED(status)) | ||
414 | { | ||
415 | lcd_set_foreground(LCD_RGBPACK(255, 201, 0)); | ||
416 | lcd_putsf(0, 1, "program returned %d", WEXITSTATUS(status)); | ||
417 | } | ||
418 | else | ||
419 | { | ||
420 | lcd_set_foreground(LCD_RGBPACK(255, 0, 0)); | ||
421 | lcd_putsf(0, 1, "an error occured: %x", status); | ||
422 | } | ||
423 | #endif | ||
424 | } | ||
425 | |||
426 | static void tools_screen(void) | ||
427 | { | ||
428 | const char *choices[] = {"ADB start", "ADB stop", "Run script", "Restart", "Shutdown"}; | ||
429 | int choice = choice_screen("TOOLS MENU", true, 5, choices); | ||
430 | if(choice == 0) | ||
431 | { | ||
432 | /* run service menu */ | ||
433 | printf("Starting ADB service...\n"); | ||
434 | fflush(stdout); | ||
435 | adb(1); | ||
436 | } | ||
437 | else if(choice == 1) | ||
438 | { | ||
439 | printf("Stopping ADB service...\n"); | ||
440 | fflush(stdout); | ||
441 | adb(0); | ||
442 | } | ||
443 | else if(choice == 2) | ||
444 | { | ||
445 | run_script_menu(); | ||
446 | } | ||
447 | else if(choice == 3) | ||
448 | system_reboot(); | ||
449 | else if(choice == 4) | ||
450 | power_off(); | ||
451 | } | ||
452 | |||
453 | #if 0 | ||
454 | /* open log file */ | ||
455 | static int open_log(void) | ||
456 | { | ||
457 | /* open regular log file */ | ||
458 | int fd = open("/mnt/sd_0/rockbox.log", O_RDWR | O_CREAT | O_APPEND); | ||
459 | /* get its size */ | ||
460 | struct stat stat; | ||
461 | if(fstat(fd, &stat) != 0) | ||
462 | return fd; /* on error, don't do anything */ | ||
463 | /* if file is too large, rename it and start a new log file */ | ||
464 | if(stat.st_size < 1000000) | ||
465 | return fd; | ||
466 | close(fd); | ||
467 | /* move file */ | ||
468 | rename("/mnt/sd_0/rockbox.log", "/mnt/sd_0/rockbox.log.1"); | ||
469 | /* re-open the file, truncate in case the move was unsuccessful */ | ||
470 | return open("/mnt/sd_0/rockbox.log", O_RDWR | O_CREAT | O_APPEND | O_TRUNC); | ||
471 | } | ||
472 | #endif | ||
473 | |||
474 | int main(int argc, char **argv) | ||
475 | { | ||
476 | (void) argc; | ||
477 | (void) argv; | ||
478 | #if 0 | ||
479 | /* redirect stdout and stderr to have error messages logged somewhere on the | ||
480 | * user partition */ | ||
481 | int fd = open_log(); | ||
482 | if(fd >= 0) | ||
483 | { | ||
484 | dup2(fd, fileno(stdout)); | ||
485 | dup2(fd, fileno(stderr)); | ||
486 | close(fd); | ||
487 | } | ||
488 | /* print version */ | ||
489 | printf("Rockbox boot loader\n"); | ||
490 | printf("Version: %s\n", rbversion); | ||
491 | printf("%s\n", MODEL_NAME); | ||
492 | #endif | ||
493 | |||
494 | system_init(); | ||
495 | core_allocator_init(); | ||
496 | kernel_init(); | ||
497 | paths_init(); | ||
498 | lcd_init(); | ||
499 | font_init(); | ||
500 | button_init(); | ||
501 | backlight_init(); | ||
502 | backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING); | ||
503 | |||
504 | /* try to load the extra font we install on the device */ | ||
505 | //int font_id = font_load("/usr/rockbox/fonts/20-Terminus-Bold.fnt"); | ||
506 | //if(font_id >= 0) | ||
507 | // lcd_setfont(font_id); | ||
508 | |||
509 | /* run all tools menu */ | ||
510 | while(true) | ||
511 | { | ||
512 | enum boot_mode mode = get_boot_mode(); | ||
513 | if(mode == BOOT_USB || mode == BOOT_OF) | ||
514 | { | ||
515 | #if 0 | ||
516 | fflush(stdout); | ||
517 | fflush(stderr); | ||
518 | close(fileno(stdout)); | ||
519 | close(fileno(stderr)); | ||
520 | #endif | ||
521 | /* for now the only way we have to trigger USB mode it to run the OF */ | ||
522 | /* boot OF */ | ||
523 | execvp("/usr/bin/hiby_player", argv); | ||
524 | error_screen("Cannot boot OF"); | ||
525 | sleep(5 * HZ); | ||
526 | } | ||
527 | else if(mode == BOOT_TOOLS) | ||
528 | { | ||
529 | tools_screen(); | ||
530 | } | ||
531 | else if(mode == BOOT_ROCKBOX) | ||
532 | { | ||
533 | fflush(stdout); | ||
534 | #if defined(XDUOO_X3II) | ||
535 | system("/bin/cp /mnt/sd_0/.rockbox/rockbox.x3ii /tmp"); | ||
536 | execl("/tmp/rockbox.x3ii", "rockbox.x3ii", NULL); | ||
537 | #elif defined(XDUOO_X20) | ||
538 | system("/bin/cp /mnt/sd_0/.rockbox/rockbox.x20 /tmp"); | ||
539 | execl("/tmp/rockbox.x20", "rockbox.x20", NULL); | ||
540 | #endif | ||
541 | printf("execvp failed: %s\n", strerror(errno)); | ||
542 | /* fallback to OF in case of failure */ | ||
543 | error_screen("Cannot boot Rockbox"); | ||
544 | sleep(5 * HZ); | ||
545 | } | ||
546 | else | ||
547 | { | ||
548 | printf("suspend\n"); | ||
549 | // nwz_power_suspend(); | ||
550 | } | ||
551 | } | ||
552 | /* if we reach this point, everything failed, so return an error so that | ||
553 | * sysmgrd knows something is wrong */ | ||
554 | return 1; | ||
555 | } | ||
diff --git a/firmware/SOURCES b/firmware/SOURCES index 89f4f52895..7be6010ab7 100644 --- a/firmware/SOURCES +++ b/firmware/SOURCES | |||
@@ -113,25 +113,37 @@ target/hosted/sonynwz/nvp-nwz.c | |||
113 | target/hosted/sonynwz/nwz-db.c | 113 | target/hosted/sonynwz/nwz-db.c |
114 | #endif | 114 | #endif |
115 | 115 | ||
116 | #if defined(AGPTEK_ROCKER) && !defined(SIMULATOR) | 116 | #if ((defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20)) && !defined(SIMULATOR)) |
117 | drivers/lcd-memframe.c | 117 | drivers/lcd-memframe.c |
118 | target/hosted/alsa-controls.c | ||
119 | target/hosted/pcm-alsa.c | ||
118 | target/hosted/backtrace-glibc.c | 120 | target/hosted/backtrace-glibc.c |
119 | target/hosted/kernel-unix.c | ||
120 | target/hosted/filesystem-unix.c | 121 | target/hosted/filesystem-unix.c |
122 | target/hosted/kernel-unix.c | ||
121 | target/hosted/lc-unix.c | 123 | target/hosted/lc-unix.c |
122 | target/hosted/alsa-controls.c | 124 | target/hosted/sysfs.c |
123 | target/hosted/pcm-alsa.c | 125 | target/hosted/backlight-unix.c |
124 | target/hosted/agptek/sysfs.c | 126 | target/hosted/system-hosted.c |
125 | target/hosted/agptek/backlight-agptek.c | 127 | #endif |
128 | |||
129 | #if defined(AGPTEK_ROCKER) && !defined(SIMULATOR) | ||
126 | target/hosted/agptek/button-agptek.c | 130 | target/hosted/agptek/button-agptek.c |
127 | target/hosted/agptek/debug-agptek.c | 131 | target/hosted/agptek/debug-agptek.c |
128 | target/hosted/agptek/lcd-agptek.c | 132 | target/hosted/agptek/lcd-agptek.c |
129 | target/hosted/agptek/power-agptek.c | 133 | target/hosted/agptek/power-agptek.c |
130 | target/hosted/agptek/powermgmt-agptek.c | 134 | target/hosted/agptek/powermgmt-agptek.c |
131 | target/hosted/agptek/system-agptek.c | ||
132 | target/hosted/agptek/usb-agptek.c | 135 | target/hosted/agptek/usb-agptek.c |
133 | #endif | 136 | #endif |
134 | 137 | ||
138 | #if ((defined(XDUOO_X3II)||defined(XDUOO_X20)) && !defined(SIMULATOR)) | ||
139 | target/hosted/xduoo/button-xduoo.c | ||
140 | target/hosted/xduoo/debug-xduoo.c | ||
141 | target/hosted/xduoo/lcd-xduoo.c | ||
142 | target/hosted/xduoo/power-xduoo.c | ||
143 | target/hosted/xduoo/powermgmt-xduoo.c | ||
144 | target/hosted/xduoo/usb-xduoo.c | ||
145 | #endif | ||
146 | |||
135 | #if defined(SAMSUNG_YPR0) && !defined(SIMULATOR) | 147 | #if defined(SAMSUNG_YPR0) && !defined(SIMULATOR) |
136 | drivers/adc-as3514.c | 148 | drivers/adc-as3514.c |
137 | #if (CONFIG_RTC == RTC_AS3514) | 149 | #if (CONFIG_RTC == RTC_AS3514) |
@@ -502,6 +514,8 @@ target/hosted/alsa-controls.c | |||
502 | target/hosted/pcm-alsa.c | 514 | target/hosted/pcm-alsa.c |
503 | #elif defined(HAVE_ROCKER_CODEC) && !defined(SIMULATOR) | 515 | #elif defined(HAVE_ROCKER_CODEC) && !defined(SIMULATOR) |
504 | drivers/audio/rocker_codec.c | 516 | drivers/audio/rocker_codec.c |
517 | #elif defined(HAVE_XDUOO_LINUX_CODEC) && !defined(SIMULATOR) | ||
518 | drivers/audio/xduoolinux_codec.c | ||
505 | #elif defined(HAVE_SDL_AUDIO) | 519 | #elif defined(HAVE_SDL_AUDIO) |
506 | drivers/audio/sdl.c | 520 | drivers/audio/sdl.c |
507 | #if CONFIG_CODEC == SWCODEC | 521 | #if CONFIG_CODEC == SWCODEC |
@@ -584,7 +598,7 @@ target/arm/ipod/powermgmt-ipod-pcf.c | |||
584 | target/arm/pp/i2c-pp.c | 598 | target/arm/pp/i2c-pp.c |
585 | #elif CONFIG_I2C == I2C_PNX0101 | 599 | #elif CONFIG_I2C == I2C_PNX0101 |
586 | target/arm/pnx0101/i2c-pnx0101.c | 600 | target/arm/pnx0101/i2c-pnx0101.c |
587 | #elif CONFIG_I2C == I2C_TCC780X || CONFIG_I2C == I2C_TCC77X | 601 | #elif CONFIG_I2C == I2C_TCC780X || CONFIG_I2C == I2C_TCC77X |
588 | target/arm/i2c-telechips.c | 602 | target/arm/i2c-telechips.c |
589 | #elif CONFIG_I2C == I2C_S3C2440 | 603 | #elif CONFIG_I2C == I2C_S3C2440 |
590 | target/arm/s3c2440/i2c-s3c2440.c | 604 | target/arm/s3c2440/i2c-s3c2440.c |
@@ -837,9 +851,9 @@ drivers/isp1583.c | |||
837 | target/arm/rk27xx/usb-drv-rk27xx.c | 851 | target/arm/rk27xx/usb-drv-rk27xx.c |
838 | #endif | 852 | #endif |
839 | #else /* !defined(HAVE_USBSTACK) */ | 853 | #else /* !defined(HAVE_USBSTACK) */ |
840 | #if CONFIG_USBOTG == USBOTG_ISP1362 | 854 | #if CONFIG_USBOTG == USBOTG_ISP1362 |
841 | drivers/isp1362.c | 855 | drivers/isp1362.c |
842 | #elif CONFIG_USBOTG == USBOTG_M5636 | 856 | #elif CONFIG_USBOTG == USBOTG_M5636 |
843 | drivers/m5636.c | 857 | drivers/m5636.c |
844 | #endif | 858 | #endif |
845 | #endif /* !defined(HAVE_USBSTACK) */ | 859 | #endif /* !defined(HAVE_USBSTACK) */ |
@@ -1415,7 +1429,7 @@ target/arm/pnx0101/iriver-ifp7xx/button-ifp7xx.c | |||
1415 | target/arm/pnx0101/iriver-ifp7xx/lcd-ifp7xx.c | 1429 | target/arm/pnx0101/iriver-ifp7xx/lcd-ifp7xx.c |
1416 | target/arm/pnx0101/iriver-ifp7xx/power-ifp7xx.c | 1430 | target/arm/pnx0101/iriver-ifp7xx/power-ifp7xx.c |
1417 | target/arm/pnx0101/iriver-ifp7xx/powermgmt-ifp7xx.c | 1431 | target/arm/pnx0101/iriver-ifp7xx/powermgmt-ifp7xx.c |
1418 | target/arm/pnx0101/iriver-ifp7xx/usb-ifp7xx.c | 1432 | target/arm/pnx0101/iriver-ifp7xx/usb-ifp7xx.c |
1419 | #ifndef BOOTLOADER | 1433 | #ifndef BOOTLOADER |
1420 | target/arm/pnx0101/pcm-pnx0101.c | 1434 | target/arm/pnx0101/pcm-pnx0101.c |
1421 | #endif /* BOOTLOADER */ | 1435 | #endif /* BOOTLOADER */ |
@@ -1989,7 +2003,7 @@ target/hosted/ibasso/dx90/button-dx90.c | |||
1989 | #ifdef WIN32 | 2003 | #ifdef WIN32 |
1990 | asm/mempcpy.c | 2004 | asm/mempcpy.c |
1991 | target/hosted/filesystem-win32.c | 2005 | target/hosted/filesystem-win32.c |
1992 | #else /* !WIN32 */ | 2006 | #else /* !WIN32 */ |
1993 | target/hosted/filesystem-unix.c | 2007 | target/hosted/filesystem-unix.c |
1994 | #endif /* WIN32 */ | 2008 | #endif /* WIN32 */ |
1995 | target/hosted/sdl/load_code-sdl.c | 2009 | target/hosted/sdl/load_code-sdl.c |
diff --git a/firmware/asm/SOURCES b/firmware/asm/SOURCES index eba5bd2cb6..085b6351a5 100644 --- a/firmware/asm/SOURCES +++ b/firmware/asm/SOURCES | |||
@@ -15,7 +15,7 @@ mempcpy.c | |||
15 | defined(CREATIVE_ZVx) || defined(SANSA_CONNECT) || defined(SANSA_FUZEPLUS) || \ | 15 | defined(CREATIVE_ZVx) || defined(SANSA_CONNECT) || defined(SANSA_FUZEPLUS) || \ |
16 | defined(COWON_D2) || defined(MINI2440) || defined(SAMSUNG_YPR0) || \ | 16 | defined(COWON_D2) || defined(MINI2440) || defined(SAMSUNG_YPR0) || \ |
17 | defined(SAMSUNG_YPR1) || defined(DX50) || defined(DX90) || (defined(MROBE_500) && !defined(LCD_USE_DMA)) || \ | 17 | defined(SAMSUNG_YPR1) || defined(DX50) || defined(DX90) || (defined(MROBE_500) && !defined(LCD_USE_DMA)) || \ |
18 | defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) || defined(SONY_NWZ_LINUX) || defined(AGPTEK_ROCKER)) && \ | 18 | defined(CREATIVE_ZEN) || defined(CREATIVE_ZENXFI) || defined(SONY_NWZ_LINUX) || defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20)) && \ |
19 | !defined(SIMULATOR) | 19 | !defined(SIMULATOR) |
20 | #if LCD_DEPTH >= 24 | 20 | #if LCD_DEPTH >= 24 |
21 | lcd-as-memframe-24bit.c | 21 | lcd-as-memframe-24bit.c |
diff --git a/firmware/drivers/audio/xduoolinux_codec.c b/firmware/drivers/audio/xduoolinux_codec.c new file mode 100644 index 0000000000..5db4902e5f --- /dev/null +++ b/firmware/drivers/audio/xduoolinux_codec.c | |||
@@ -0,0 +1,122 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * | ||
11 | * Copyright (c) 2018 Marcin Bukat | ||
12 | * Copyright (c) 2018 Roman Stolyarov | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or | ||
15 | * modify it under the terms of the GNU General Public License | ||
16 | * as published by the Free Software Foundation; either version 2 | ||
17 | * of the License, or (at your option) any later version. | ||
18 | * | ||
19 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
20 | * KIND, either express or implied. | ||
21 | * | ||
22 | ****************************************************************************/ | ||
23 | |||
24 | #include "config.h" | ||
25 | #include "audio.h" | ||
26 | #include "audiohw.h" | ||
27 | #include "system.h" | ||
28 | #include "kernel.h" | ||
29 | #include "panic.h" | ||
30 | #include "sysfs.h" | ||
31 | #include "alsa-controls.h" | ||
32 | |||
33 | static int fd_hw; | ||
34 | |||
35 | static void hw_open(void) | ||
36 | { | ||
37 | fd_hw = open("/dev/snd/controlC0", O_RDWR); | ||
38 | if(fd_hw < 0) | ||
39 | panicf("Cannot open '/dev/snd/controlC0'"); | ||
40 | } | ||
41 | |||
42 | static void hw_close(void) | ||
43 | { | ||
44 | close(fd_hw); | ||
45 | } | ||
46 | |||
47 | void audiohw_preinit(void) | ||
48 | { | ||
49 | alsa_controls_init(); | ||
50 | hw_open(); | ||
51 | } | ||
52 | |||
53 | void audiohw_postinit(void) | ||
54 | { | ||
55 | long int ps = 2; // headset | ||
56 | int status = 0; | ||
57 | |||
58 | const char * const sysfs_lo_switch = "/sys/class/switch/lineout/state"; | ||
59 | const char * const sysfs_hs_switch = "/sys/class/switch/headset/state"; | ||
60 | #ifdef XDUOO_X20 | ||
61 | const char * const sysfs_bal_switch = "/sys/class/switch/balance/state"; | ||
62 | #endif | ||
63 | |||
64 | #if defined(XDUOO_X3II) | ||
65 | alsa_controls_set_bool("AK4490 Soft Mute", true); | ||
66 | #endif | ||
67 | |||
68 | sysfs_get_int(sysfs_lo_switch, &status); | ||
69 | if (status) ps = 1; // lineout | ||
70 | |||
71 | sysfs_get_int(sysfs_hs_switch, &status); | ||
72 | if (status) ps = 2; // headset | ||
73 | |||
74 | #ifdef XDUOO_X20 | ||
75 | sysfs_get_int(sysfs_bal_switch, &status); | ||
76 | if (status) ps = 3; // balance | ||
77 | #endif | ||
78 | |||
79 | /* Output port switch */ | ||
80 | alsa_controls_set_ints("Output Port Switch", 1, &ps); | ||
81 | |||
82 | #if defined(XDUOO_X3II) | ||
83 | alsa_controls_set_bool("AK4490 Soft Mute", false); | ||
84 | #endif | ||
85 | } | ||
86 | |||
87 | void audiohw_close(void) | ||
88 | { | ||
89 | hw_close(); | ||
90 | alsa_controls_close(); | ||
91 | } | ||
92 | |||
93 | void audiohw_set_frequency(int fsel) | ||
94 | { | ||
95 | (void)fsel; | ||
96 | } | ||
97 | |||
98 | void audiohw_set_volume(int vol_l, int vol_r) | ||
99 | { | ||
100 | long int vol_l_hw = -vol_l/5; | ||
101 | long int vol_r_hw = -vol_r/5; | ||
102 | |||
103 | alsa_controls_set_ints("Left Playback Volume", 1, &vol_l_hw); | ||
104 | alsa_controls_set_ints("Right Playback Volume", 1, &vol_r_hw); | ||
105 | } | ||
106 | |||
107 | void audiohw_set_filter_roll_off(int value) | ||
108 | { | ||
109 | /* 0 = fast (sharp); | ||
110 | 1 = slow; | ||
111 | 2 = fast2 | ||
112 | 3 = slow2 | ||
113 | 4 = NOS ? */ | ||
114 | long int value_hw = value; | ||
115 | #if defined(XDUOO_X3II) | ||
116 | alsa_controls_set_ints("AK4490 Digital Filter", 1, &value_hw); | ||
117 | #elif defined(XDUOO_X20) | ||
118 | alsa_controls_set_ints("ES9018_K2M Digital Filter", 1, &value_hw); | ||
119 | #else | ||
120 | (void)value; | ||
121 | #endif | ||
122 | } | ||
diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h index 458fba3412..00bb15812d 100644 --- a/firmware/export/audiohw.h +++ b/firmware/export/audiohw.h | |||
@@ -224,6 +224,8 @@ struct sound_settings_info | |||
224 | #include "codec-dx90.h" | 224 | #include "codec-dx90.h" |
225 | #elif defined(HAVE_ROCKER_CODEC) | 225 | #elif defined(HAVE_ROCKER_CODEC) |
226 | #include "rocker_codec.h" | 226 | #include "rocker_codec.h" |
227 | #elif defined(HAVE_XDUOO_LINUX_CODEC) | ||
228 | #include "rocker_codec.h" | ||
227 | #endif | 229 | #endif |
228 | 230 | ||
229 | /* convert caps into defines */ | 231 | /* convert caps into defines */ |
diff --git a/firmware/export/config.h b/firmware/export/config.h index a41cceff59..c55d489c26 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h | |||
@@ -171,6 +171,8 @@ | |||
171 | #define XDUOO_X3_PAD 66 | 171 | #define XDUOO_X3_PAD 66 |
172 | #define IHIFI_770_PAD 67 | 172 | #define IHIFI_770_PAD 67 |
173 | #define IHIFI_800_PAD 68 | 173 | #define IHIFI_800_PAD 68 |
174 | #define XDUOO_X3II_PAD 69 | ||
175 | #define XDUOO_X20_PAD 70 | ||
174 | 176 | ||
175 | /* CONFIG_REMOTE_KEYPAD */ | 177 | /* CONFIG_REMOTE_KEYPAD */ |
176 | #define H100_REMOTE 1 | 178 | #define H100_REMOTE 1 |
@@ -624,6 +626,10 @@ Lyre prototype 1 */ | |||
624 | #include "config/agptekrocker.h" | 626 | #include "config/agptekrocker.h" |
625 | #elif defined(XDUOO_X3) | 627 | #elif defined(XDUOO_X3) |
626 | #include "config/xduoox3.h" | 628 | #include "config/xduoox3.h" |
629 | #elif defined(XDUOO_X3II) | ||
630 | #include "config/xduoox3ii.h" | ||
631 | #elif defined(XDUOO_X20) | ||
632 | #include "config/xduoox20.h" | ||
627 | #else | 633 | #else |
628 | /* no known platform */ | 634 | /* no known platform */ |
629 | #endif | 635 | #endif |
diff --git a/firmware/export/config/agptekrocker.h b/firmware/export/config/agptekrocker.h index 172e079721..372287f4b5 100644 --- a/firmware/export/config/agptekrocker.h +++ b/firmware/export/config/agptekrocker.h | |||
@@ -3,7 +3,7 @@ | |||
3 | */ | 3 | */ |
4 | 4 | ||
5 | /* For Rolo and boot loader */ | 5 | /* For Rolo and boot loader */ |
6 | #define MODEL_NUMBER 103//??? | 6 | #define MODEL_NUMBER 105 |
7 | 7 | ||
8 | #define MODEL_NAME "Agptek Rocker" | 8 | #define MODEL_NAME "Agptek Rocker" |
9 | 9 | ||
diff --git a/firmware/export/config/xduoox20.h b/firmware/export/config/xduoox20.h new file mode 100644 index 0000000000..d451ba31f4 --- /dev/null +++ b/firmware/export/config/xduoox20.h | |||
@@ -0,0 +1,126 @@ | |||
1 | /* | ||
2 | * This config file is for the xDuoo X20 | ||
3 | */ | ||
4 | |||
5 | /* For Rolo and boot loader */ | ||
6 | #define MODEL_NUMBER 111 | ||
7 | |||
8 | #define MODEL_NAME "xDuoo X20" | ||
9 | |||
10 | /* LCD dimensions */ | ||
11 | #define LCD_WIDTH 240 | ||
12 | #define LCD_HEIGHT 320 | ||
13 | /* sqrt(240^2 + 320^2) / 2.4 = 166 */ | ||
14 | #define LCD_DPI 166 | ||
15 | |||
16 | #ifndef SIMULATOR | ||
17 | #define CONFIG_PLATFORM (PLATFORM_HOSTED) | ||
18 | #endif | ||
19 | |||
20 | /* define this if you have a bitmap LCD display */ | ||
21 | #define HAVE_LCD_BITMAP | ||
22 | |||
23 | /* define this if you have a colour LCD */ | ||
24 | #define HAVE_LCD_COLOR | ||
25 | |||
26 | #define HAVE_LCD_ENABLE | ||
27 | |||
28 | /* Define this if the LCD can shut down */ | ||
29 | #define HAVE_LCD_SHUTDOWN | ||
30 | |||
31 | /* define this if you want album art for this target */ | ||
32 | #define HAVE_ALBUMART | ||
33 | |||
34 | /* define this to enable bitmap scaling */ | ||
35 | #define HAVE_BMP_SCALING | ||
36 | |||
37 | /* define this to enable JPEG decoding */ | ||
38 | #define HAVE_JPEG | ||
39 | |||
40 | /* define this if you have access to the quickscreen */ | ||
41 | #define HAVE_QUICKSCREEN | ||
42 | |||
43 | /* define this if you would like tagcache to build on this target */ | ||
44 | #define HAVE_TAGCACHE | ||
45 | |||
46 | #define LCD_DEPTH 32 | ||
47 | /* Check that but should not matter */ | ||
48 | #define LCD_PIXELFORMAT XRGB8888 | ||
49 | |||
50 | #define HAVE_BACKLIGHT | ||
51 | #define HAVE_BACKLIGHT_BRIGHTNESS | ||
52 | |||
53 | /* Main LCD backlight brightness range and defaults: the backlight driver | ||
54 | * has levels from 0 to 2555. But 0 is off so start at 1. | ||
55 | */ | ||
56 | #define MIN_BRIGHTNESS_SETTING 1 | ||
57 | #define MAX_BRIGHTNESS_SETTING 255 | ||
58 | #define DEFAULT_BRIGHTNESS_SETTING 70 | ||
59 | |||
60 | /* Which backlight fading type? */ | ||
61 | #define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING | ||
62 | |||
63 | /* define this if you have a real-time clock */ | ||
64 | #define CONFIG_RTC APPLICATION | ||
65 | |||
66 | /* The number of bytes reserved for loadable codecs */ | ||
67 | #define CODEC_SIZE 0x80000 | ||
68 | |||
69 | /* The number of bytes reserved for loadable plugins */ | ||
70 | #define PLUGIN_BUFFER_SIZE 0x100000 | ||
71 | |||
72 | /* Define this if you do software codec */ | ||
73 | #define CONFIG_CODEC SWCODEC | ||
74 | |||
75 | #define HAVE_HEADPHONE_DETECTION | ||
76 | |||
77 | /* KeyPad configuration for plugins */ | ||
78 | #define CONFIG_KEYPAD XDUOO_X20_PAD | ||
79 | |||
80 | /* Define this if a programmable hotkey is mapped */ | ||
81 | #define HAVE_HOTKEY | ||
82 | |||
83 | /* define this if the target has volume keys which can be used in the lists */ | ||
84 | #define HAVE_VOLUME_IN_LIST | ||
85 | |||
86 | #ifndef SIMULATOR | ||
87 | /* We have usb power and can detect usb but it is handled by Linux */ | ||
88 | #define HAVE_USB_POWER | ||
89 | |||
90 | #endif | ||
91 | |||
92 | #define CONFIG_BATTERY_MEASURE PERCENTAGE_MEASURE | ||
93 | |||
94 | /* Linux controlls charging, we can monitor */ | ||
95 | #define CONFIG_CHARGING CHARGING_MONITOR | ||
96 | |||
97 | /* define this if the hardware can be powered off while charging */ | ||
98 | #define HAVE_POWEROFF_WHILE_CHARGING | ||
99 | |||
100 | /* same dimensions as gigabeats */ | ||
101 | #define CONFIG_LCD LCD_INGENIC_LINUX | ||
102 | |||
103 | /* Define this if you have a software controlled poweroff */ | ||
104 | #define HAVE_SW_POWEROFF | ||
105 | |||
106 | /* Define this to the CPU frequency */ | ||
107 | #define CPU_FREQ 504000000 | ||
108 | |||
109 | /* No special storage */ | ||
110 | #define CONFIG_STORAGE STORAGE_HOSTFS | ||
111 | #define HAVE_STORAGE_FLUSH | ||
112 | |||
113 | /* Battery */ | ||
114 | #define BATTERY_TYPES_COUNT 1 | ||
115 | |||
116 | /* Audio codec */ | ||
117 | #define HAVE_XDUOO_LINUX_CODEC | ||
118 | |||
119 | /* We don't have hardware controls */ | ||
120 | #define HAVE_SW_TONE_CONTROLS | ||
121 | |||
122 | /* Battery */ | ||
123 | #define BATTERY_CAPACITY_DEFAULT 2400 /* default battery capacity */ | ||
124 | #define BATTERY_CAPACITY_MIN 2400 /* min. capacity selectable */ | ||
125 | #define BATTERY_CAPACITY_MAX 2400 /* max. capacity selectable */ | ||
126 | #define BATTERY_CAPACITY_INC 0 /* capacity increment */ | ||
diff --git a/firmware/export/config/xduoox3ii.h b/firmware/export/config/xduoox3ii.h new file mode 100644 index 0000000000..af63c4f97b --- /dev/null +++ b/firmware/export/config/xduoox3ii.h | |||
@@ -0,0 +1,126 @@ | |||
1 | /* | ||
2 | * This config file is for the xDuoo X3ii | ||
3 | */ | ||
4 | |||
5 | /* For Rolo and boot loader */ | ||
6 | #define MODEL_NUMBER 110 | ||
7 | |||
8 | #define MODEL_NAME "xDuoo X3ii" | ||
9 | |||
10 | /* LCD dimensions */ | ||
11 | #define LCD_WIDTH 240 | ||
12 | #define LCD_HEIGHT 320 | ||
13 | /* sqrt(240^2 + 320^2) / 2.4 = 166 */ | ||
14 | #define LCD_DPI 166 | ||
15 | |||
16 | #ifndef SIMULATOR | ||
17 | #define CONFIG_PLATFORM (PLATFORM_HOSTED) | ||
18 | #endif | ||
19 | |||
20 | /* define this if you have a bitmap LCD display */ | ||
21 | #define HAVE_LCD_BITMAP | ||
22 | |||
23 | /* define this if you have a colour LCD */ | ||
24 | #define HAVE_LCD_COLOR | ||
25 | |||
26 | #define HAVE_LCD_ENABLE | ||
27 | |||
28 | /* Define this if the LCD can shut down */ | ||
29 | #define HAVE_LCD_SHUTDOWN | ||
30 | |||
31 | /* define this if you want album art for this target */ | ||
32 | #define HAVE_ALBUMART | ||
33 | |||
34 | /* define this to enable bitmap scaling */ | ||
35 | #define HAVE_BMP_SCALING | ||
36 | |||
37 | /* define this to enable JPEG decoding */ | ||
38 | #define HAVE_JPEG | ||
39 | |||
40 | /* define this if you have access to the quickscreen */ | ||
41 | #define HAVE_QUICKSCREEN | ||
42 | |||
43 | /* define this if you would like tagcache to build on this target */ | ||
44 | #define HAVE_TAGCACHE | ||
45 | |||
46 | #define LCD_DEPTH 32 | ||
47 | /* Check that but should not matter */ | ||
48 | #define LCD_PIXELFORMAT XRGB8888 | ||
49 | |||
50 | #define HAVE_BACKLIGHT | ||
51 | #define HAVE_BACKLIGHT_BRIGHTNESS | ||
52 | |||
53 | /* Main LCD backlight brightness range and defaults: the backlight driver | ||
54 | * has levels from 0 to 2555. But 0 is off so start at 1. | ||
55 | */ | ||
56 | #define MIN_BRIGHTNESS_SETTING 1 | ||
57 | #define MAX_BRIGHTNESS_SETTING 255 | ||
58 | #define DEFAULT_BRIGHTNESS_SETTING 70 | ||
59 | |||
60 | /* Which backlight fading type? */ | ||
61 | #define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING | ||
62 | |||
63 | /* define this if you have a real-time clock */ | ||
64 | #define CONFIG_RTC APPLICATION | ||
65 | |||
66 | /* The number of bytes reserved for loadable codecs */ | ||
67 | #define CODEC_SIZE 0x80000 | ||
68 | |||
69 | /* The number of bytes reserved for loadable plugins */ | ||
70 | #define PLUGIN_BUFFER_SIZE 0x100000 | ||
71 | |||
72 | /* Define this if you do software codec */ | ||
73 | #define CONFIG_CODEC SWCODEC | ||
74 | |||
75 | #define HAVE_HEADPHONE_DETECTION | ||
76 | |||
77 | /* KeyPad configuration for plugins */ | ||
78 | #define CONFIG_KEYPAD XDUOO_X3II_PAD | ||
79 | |||
80 | /* Define this if a programmable hotkey is mapped */ | ||
81 | #define HAVE_HOTKEY | ||
82 | |||
83 | /* define this if the target has volume keys which can be used in the lists */ | ||
84 | #define HAVE_VOLUME_IN_LIST | ||
85 | |||
86 | #ifndef SIMULATOR | ||
87 | /* We have usb power and can detect usb but it is handled by Linux */ | ||
88 | #define HAVE_USB_POWER | ||
89 | |||
90 | #endif | ||
91 | |||
92 | #define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE | ||
93 | |||
94 | /* Linux controlls charging, we can monitor */ | ||
95 | #define CONFIG_CHARGING CHARGING_MONITOR | ||
96 | |||
97 | /* define this if the hardware can be powered off while charging */ | ||
98 | #define HAVE_POWEROFF_WHILE_CHARGING | ||
99 | |||
100 | /* same dimensions as gigabeats */ | ||
101 | #define CONFIG_LCD LCD_INGENIC_LINUX | ||
102 | |||
103 | /* Define this if you have a software controlled poweroff */ | ||
104 | #define HAVE_SW_POWEROFF | ||
105 | |||
106 | /* Define this to the CPU frequency */ | ||
107 | #define CPU_FREQ 504000000 | ||
108 | |||
109 | /* No special storage */ | ||
110 | #define CONFIG_STORAGE STORAGE_HOSTFS | ||
111 | #define HAVE_STORAGE_FLUSH | ||
112 | |||
113 | /* Battery */ | ||
114 | #define BATTERY_TYPES_COUNT 1 | ||
115 | |||
116 | /* Audio codec */ | ||
117 | #define HAVE_XDUOO_LINUX_CODEC | ||
118 | |||
119 | /* We don't have hardware controls */ | ||
120 | #define HAVE_SW_TONE_CONTROLS | ||
121 | |||
122 | /* Battery */ | ||
123 | #define BATTERY_CAPACITY_DEFAULT 2000 /* default battery capacity */ | ||
124 | #define BATTERY_CAPACITY_MIN 2000 /* min. capacity selectable */ | ||
125 | #define BATTERY_CAPACITY_MAX 2000 /* max. capacity selectable */ | ||
126 | #define BATTERY_CAPACITY_INC 0 /* capacity increment */ | ||
diff --git a/firmware/export/rbpaths.h b/firmware/export/rbpaths.h index 165dd37494..b95f1614eb 100644 --- a/firmware/export/rbpaths.h +++ b/firmware/export/rbpaths.h | |||
@@ -42,7 +42,7 @@ | |||
42 | 42 | ||
43 | #if !defined(APPLICATION) || defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || \ | 43 | #if !defined(APPLICATION) || defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || \ |
44 | defined(DX50) || defined(DX90) || defined(SONY_NWZ_LINUX) || \ | 44 | defined(DX50) || defined(DX90) || defined(SONY_NWZ_LINUX) || \ |
45 | defined(AGPTEK_ROCKER) | 45 | defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20) |
46 | 46 | ||
47 | #if defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) | 47 | #if defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) |
48 | #define HOME_DIR "/mnt/media0" | 48 | #define HOME_DIR "/mnt/media0" |
diff --git a/firmware/export/xduoolinux_codec.h b/firmware/export/xduoolinux_codec.h new file mode 100644 index 0000000000..ccd49f09aa --- /dev/null +++ b/firmware/export/xduoolinux_codec.h | |||
@@ -0,0 +1,7 @@ | |||
1 | #ifndef __XDUOOLINUX_CODEC__ | ||
2 | #define __XDUOOLINUX_CODEC__ | ||
3 | |||
4 | #define AUDIOHW_CAPS (FILTER_ROLL_OFF_CAP) | ||
5 | AUDIOHW_SETTING(VOLUME, "dB", 0, 1, -127, 0, -30) | ||
6 | AUDIOHW_SETTING(FILTER_ROLL_OFF, "", 0, 1, 0, 4, 0) | ||
7 | #endif | ||
diff --git a/firmware/target/hosted/agptek/backlight-target.h b/firmware/target/hosted/backlight-target.h index e3b8a7bd78..e3b8a7bd78 100644 --- a/firmware/target/hosted/agptek/backlight-target.h +++ b/firmware/target/hosted/backlight-target.h | |||
diff --git a/firmware/target/hosted/agptek/backlight-agptek.c b/firmware/target/hosted/backlight-unix.c index 2f00787f72..2f00787f72 100644 --- a/firmware/target/hosted/agptek/backlight-agptek.c +++ b/firmware/target/hosted/backlight-unix.c | |||
diff --git a/firmware/target/hosted/filesystem-app.c b/firmware/target/hosted/filesystem-app.c index d9fcd64e2d..b49412ea48 100644 --- a/firmware/target/hosted/filesystem-app.c +++ b/firmware/target/hosted/filesystem-app.c | |||
@@ -36,8 +36,7 @@ | |||
36 | #include "rbpaths.h" | 36 | #include "rbpaths.h" |
37 | #include "logf.h" | 37 | #include "logf.h" |
38 | 38 | ||
39 | 39 | #if (defined(AGPTEK_ROCKER) || defined(XDUOO_X3II) || defined(XDUOO_X20)) && !defined(BOOTLOADER) | |
40 | #if defined(AGPTEK_ROCKER) && !defined(BOOTLOADER) | ||
41 | #define PIVOT_ROOT "/mnt/sd_0" | 40 | #define PIVOT_ROOT "/mnt/sd_0" |
42 | #endif | 41 | #endif |
43 | 42 | ||
@@ -52,7 +51,8 @@ static const char rbhome[] = HOME_DIR; | |||
52 | #endif | 51 | #endif |
53 | 52 | ||
54 | #if !(defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || defined(DX50) || \ | 53 | #if !(defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1) || defined(DX50) || \ |
55 | defined(SONY_NWZ_LINUX) || defined(DX90) || defined(AGPTEK_ROCKER)) && \ | 54 | defined(SONY_NWZ_LINUX) || defined(DX90) || defined(AGPTEK_ROCKER) || \ |
55 | defined(XDUOO_X3II) || defined(XDUOO_X20)) && \ | ||
56 | !defined(__PCTOOL__) | 56 | !defined(__PCTOOL__) |
57 | /* Special dirs are user-accessible (and user-writable) dirs which take priority | 57 | /* Special dirs are user-accessible (and user-writable) dirs which take priority |
58 | * over the ones where Rockbox is installed to. Classic example would be | 58 | * over the ones where Rockbox is installed to. Classic example would be |
diff --git a/firmware/target/hosted/rtc.c b/firmware/target/hosted/rtc.c index 178e797a8d..488531c77c 100644 --- a/firmware/target/hosted/rtc.c +++ b/firmware/target/hosted/rtc.c | |||
@@ -42,7 +42,7 @@ int rtc_read_datetime(struct tm *tm) | |||
42 | 42 | ||
43 | int rtc_write_datetime(const struct tm *tm) | 43 | int rtc_write_datetime(const struct tm *tm) |
44 | { | 44 | { |
45 | #if defined(AGPTEK_ROCKER) && !defined(WIN32) | 45 | #if !defined(WIN32) |
46 | struct timeval tv; | 46 | struct timeval tv; |
47 | struct tm *tm_time; | 47 | struct tm *tm_time; |
48 | 48 | ||
diff --git a/firmware/target/hosted/sdl/sim-ui-defines.h b/firmware/target/hosted/sdl/sim-ui-defines.h index 99ae062595..1e96383682 100644 --- a/firmware/target/hosted/sdl/sim-ui-defines.h +++ b/firmware/target/hosted/sdl/sim-ui-defines.h | |||
@@ -521,6 +521,7 @@ | |||
521 | #define UI_HEIGHT 380 | 521 | #define UI_HEIGHT 380 |
522 | #define UI_LCD_POSX 29 | 522 | #define UI_LCD_POSX 29 |
523 | #define UI_LCD_POSY 25 | 523 | #define UI_LCD_POSY 25 |
524 | |||
524 | #elif defined(XDUOO_X3) | 525 | #elif defined(XDUOO_X3) |
525 | #define UI_TITLE "xDuoo X3" | 526 | #define UI_TITLE "xDuoo X3" |
526 | #define UI_WIDTH 192 /* width of GUI window */ | 527 | #define UI_WIDTH 192 /* width of GUI window */ |
@@ -528,6 +529,20 @@ | |||
528 | #define UI_LCD_POSX 34 | 529 | #define UI_LCD_POSX 34 |
529 | #define UI_LCD_POSY 73 | 530 | #define UI_LCD_POSY 73 |
530 | 531 | ||
532 | #elif defined(XDUOO_X3II) | ||
533 | #define UI_TITLE "xDuoo X3ii" | ||
534 | #define UI_WIDTH 322 /* width of GUI window */ | ||
535 | #define UI_HEIGHT 609 /* height of GUI window */ | ||
536 | #define UI_LCD_POSX 43 | ||
537 | #define UI_LCD_POSY 62 | ||
538 | |||
539 | #elif defined(XDUOO_X20) | ||
540 | #define UI_TITLE "xDuoo X20" | ||
541 | #define UI_WIDTH 322 /* width of GUI window */ | ||
542 | #define UI_HEIGHT 609 /* height of GUI window */ | ||
543 | #define UI_LCD_POSX 43 | ||
544 | #define UI_LCD_POSY 62 | ||
545 | |||
531 | #elif defined(IHIFI770) | 546 | #elif defined(IHIFI770) |
532 | #define UI_TITLE "iHiFi 770" | 547 | #define UI_TITLE "iHiFi 770" |
533 | #define UI_WIDTH 382 /* width of GUI window */ | 548 | #define UI_WIDTH 382 /* width of GUI window */ |
@@ -554,4 +569,3 @@ | |||
554 | #endif | 569 | #endif |
555 | 570 | ||
556 | #endif /* #ifndef __UISDL_H__ */ | 571 | #endif /* #ifndef __UISDL_H__ */ |
557 | |||
diff --git a/firmware/target/hosted/agptek/sysfs.c b/firmware/target/hosted/sysfs.c index 177f338911..177f338911 100644 --- a/firmware/target/hosted/agptek/sysfs.c +++ b/firmware/target/hosted/sysfs.c | |||
diff --git a/firmware/target/hosted/agptek/sysfs.h b/firmware/target/hosted/sysfs.h index 639cc1c409..639cc1c409 100644 --- a/firmware/target/hosted/agptek/sysfs.h +++ b/firmware/target/hosted/sysfs.h | |||
diff --git a/firmware/target/hosted/agptek/system-agptek.c b/firmware/target/hosted/system-hosted.c index 7f0949daf2..7f0949daf2 100644 --- a/firmware/target/hosted/agptek/system-agptek.c +++ b/firmware/target/hosted/system-hosted.c | |||
diff --git a/firmware/target/hosted/xduoo/adc-target.h b/firmware/target/hosted/xduoo/adc-target.h new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/firmware/target/hosted/xduoo/adc-target.h | |||
diff --git a/firmware/target/hosted/xduoo/button-target.h b/firmware/target/hosted/xduoo/button-target.h new file mode 100644 index 0000000000..6cca5c22a0 --- /dev/null +++ b/firmware/target/hosted/xduoo/button-target.h | |||
@@ -0,0 +1,46 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2018 by Roman Stolyarov | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or | ||
12 | * modify it under the terms of the GNU General Public License | ||
13 | * as published by the Free Software Foundation; either version 2 | ||
14 | * of the License, or (at your option) any later version. | ||
15 | * | ||
16 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
17 | * KIND, either express or implied. | ||
18 | * | ||
19 | ****************************************************************************/ | ||
20 | #ifndef _BUTTON_TARGET_H_ | ||
21 | #define _BUTTON_TARGET_H_ | ||
22 | |||
23 | #define HAS_BUTTON_HOLD | ||
24 | |||
25 | /* Main unit's buttons */ | ||
26 | #define BUTTON_POWER 0x00000001 | ||
27 | #define BUTTON_HOME 0x00000002 | ||
28 | #define BUTTON_OPTION 0x00000004 | ||
29 | #define BUTTON_PREV 0x00000008 | ||
30 | #define BUTTON_NEXT 0x00000010 | ||
31 | #define BUTTON_PLAY 0x00000020 | ||
32 | #define BUTTON_VOL_UP 0x00000040 | ||
33 | #define BUTTON_VOL_DOWN 0x00000080 | ||
34 | |||
35 | #define BUTTON_LEFT 0 | ||
36 | #define BUTTON_RIGHT 0 | ||
37 | |||
38 | #define BUTTON_MAIN (BUTTON_POWER | BUTTON_HOME | BUTTON_OPTION | BUTTON_PREV | \ | ||
39 | BUTTON_NEXT | BUTTON_PLAY | BUTTON_VOL_UP | BUTTON_VOL_DOWN) | ||
40 | |||
41 | /* Software power-off */ | ||
42 | #define POWEROFF_BUTTON BUTTON_POWER | ||
43 | #define POWEROFF_COUNT 25 | ||
44 | |||
45 | #endif /* _BUTTON_TARGET_H_ */ | ||
46 | |||
diff --git a/firmware/target/hosted/xduoo/button-xduoo.c b/firmware/target/hosted/xduoo/button-xduoo.c new file mode 100644 index 0000000000..9fd1392b89 --- /dev/null +++ b/firmware/target/hosted/xduoo/button-xduoo.c | |||
@@ -0,0 +1,202 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___ | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2017 Marcin Bukat | ||
10 | * Copyright (C) 2018 Roman Stolyarov | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | #include <poll.h> | ||
22 | //#include <dir.h> | ||
23 | #include <errno.h> | ||
24 | #include <unistd.h> | ||
25 | #include <sys/types.h> | ||
26 | #include <linux/input.h> | ||
27 | #include <fcntl.h> | ||
28 | #include <string.h> | ||
29 | #include <stdlib.h> | ||
30 | |||
31 | #include "sysfs.h" | ||
32 | #include "button.h" | ||
33 | #include "button-target.h" | ||
34 | #include "panic.h" | ||
35 | |||
36 | #include "kernel.h" | ||
37 | #include "backlight.h" | ||
38 | #include "backlight-target.h" | ||
39 | |||
40 | static bool soft_hold = false; | ||
41 | #ifndef BOOTLOADER | ||
42 | static unsigned soft_hold_counter = 0; | ||
43 | #define SOFT_HOLD_BUTTON BUTTON_POWER | ||
44 | #define SOFT_HOLD_CNTMAX_1 (HZ) | ||
45 | #define SOFT_HOLD_CNTMAX_2 (HZ*2) | ||
46 | #endif | ||
47 | |||
48 | #define NR_POLL_DESC 3 | ||
49 | static struct pollfd poll_fds[NR_POLL_DESC]; | ||
50 | |||
51 | static int button_map(int keycode) | ||
52 | { | ||
53 | switch(keycode) | ||
54 | { | ||
55 | case KEY_BACK: | ||
56 | return BUTTON_HOME; | ||
57 | |||
58 | case KEY_MENU: | ||
59 | return BUTTON_OPTION; | ||
60 | |||
61 | case KEY_UP: | ||
62 | return BUTTON_PREV; | ||
63 | |||
64 | case KEY_DOWN: | ||
65 | return BUTTON_NEXT; | ||
66 | |||
67 | case KEY_ENTER: | ||
68 | return BUTTON_PLAY; | ||
69 | |||
70 | case KEY_VOLUMEUP: | ||
71 | return BUTTON_VOL_UP; | ||
72 | |||
73 | case KEY_VOLUMEDOWN: | ||
74 | return BUTTON_VOL_DOWN; | ||
75 | |||
76 | case KEY_POWER: | ||
77 | return BUTTON_POWER; | ||
78 | |||
79 | default: | ||
80 | return 0; | ||
81 | } | ||
82 | } | ||
83 | |||
84 | void button_init_device(void) | ||
85 | { | ||
86 | const char * const input_devs[] = { | ||
87 | "/dev/input/event0", | ||
88 | "/dev/input/event1", | ||
89 | "/dev/input/event2" | ||
90 | }; | ||
91 | |||
92 | for(int i = 0; i < NR_POLL_DESC; i++) | ||
93 | { | ||
94 | int fd = open(input_devs[i], O_RDWR); | ||
95 | |||
96 | if(fd < 0) | ||
97 | { | ||
98 | panicf("Cannot open input device: %s\n", input_devs[i]); | ||
99 | } | ||
100 | |||
101 | poll_fds[i].fd = fd; | ||
102 | poll_fds[i].events = POLLIN; | ||
103 | poll_fds[i].revents = 0; | ||
104 | } | ||
105 | } | ||
106 | |||
107 | int button_read_device(void) | ||
108 | { | ||
109 | static int button_bitmap = 0; | ||
110 | struct input_event event; | ||
111 | |||
112 | /* check if there are any events pending and process them */ | ||
113 | while(poll(poll_fds, NR_POLL_DESC, 0)) | ||
114 | { | ||
115 | for(int i = 0; i < NR_POLL_DESC; i++) | ||
116 | { | ||
117 | /* read only if non-blocking */ | ||
118 | if(poll_fds[i].revents & POLLIN) | ||
119 | { | ||
120 | int size = read(poll_fds[i].fd, &event, sizeof(event)); | ||
121 | if(size == (int)sizeof(event)) | ||
122 | { | ||
123 | int keycode = event.code; | ||
124 | /* event.value == 1 means press | ||
125 | * event.value == 0 means release | ||
126 | */ | ||
127 | bool press = event.value ? true : false; | ||
128 | |||
129 | /* map linux event code to rockbox button bitmap */ | ||
130 | if(press) | ||
131 | { | ||
132 | button_bitmap |= button_map(keycode); | ||
133 | } | ||
134 | else | ||
135 | { | ||
136 | button_bitmap &= ~button_map(keycode); | ||
137 | } | ||
138 | } | ||
139 | } | ||
140 | } | ||
141 | } | ||
142 | |||
143 | #ifndef BOOTLOADER | ||
144 | if (button_bitmap == SOFT_HOLD_BUTTON) { | ||
145 | soft_hold_counter++; | ||
146 | if (soft_hold_counter == SOFT_HOLD_CNTMAX_1) { | ||
147 | soft_hold = !soft_hold; | ||
148 | backlight_hold_changed(soft_hold); | ||
149 | } | ||
150 | else | ||
151 | if (soft_hold_counter == SOFT_HOLD_CNTMAX_2) { | ||
152 | soft_hold = false; | ||
153 | backlight_hold_changed(soft_hold); | ||
154 | } | ||
155 | } else { | ||
156 | soft_hold_counter = 0; | ||
157 | } | ||
158 | |||
159 | if((soft_hold) && (button_bitmap != SOFT_HOLD_BUTTON)) { | ||
160 | return BUTTON_NONE; | ||
161 | } | ||
162 | #endif | ||
163 | |||
164 | return button_bitmap; | ||
165 | } | ||
166 | |||
167 | bool headphones_inserted(void) | ||
168 | { | ||
169 | int status = 0; | ||
170 | const char * const sysfs_lo_switch = "/sys/class/switch/lineout/state"; | ||
171 | const char * const sysfs_hs_switch = "/sys/class/switch/headset/state"; | ||
172 | #ifdef XDUOO_X20 | ||
173 | const char * const sysfs_bal_switch = "/sys/class/switch/balance/state"; | ||
174 | #endif | ||
175 | |||
176 | sysfs_get_int(sysfs_lo_switch, &status); | ||
177 | if (status) return true; | ||
178 | |||
179 | sysfs_get_int(sysfs_hs_switch, &status); | ||
180 | if (status) return true; | ||
181 | |||
182 | #ifdef XDUOO_X20 | ||
183 | sysfs_get_int(sysfs_bal_switch, &status); | ||
184 | if (status) return true; | ||
185 | #endif | ||
186 | |||
187 | return false; | ||
188 | } | ||
189 | |||
190 | void button_close_device(void) | ||
191 | { | ||
192 | /* close descriptors */ | ||
193 | for(int i = 0; i < NR_POLL_DESC; i++) | ||
194 | { | ||
195 | close(poll_fds[i].fd); | ||
196 | } | ||
197 | } | ||
198 | |||
199 | bool button_hold(void) | ||
200 | { | ||
201 | return soft_hold; | ||
202 | } | ||
diff --git a/firmware/target/hosted/xduoo/debug-xduoo.c b/firmware/target/hosted/xduoo/debug-xduoo.c new file mode 100644 index 0000000000..33f3ac4b97 --- /dev/null +++ b/firmware/target/hosted/xduoo/debug-xduoo.c | |||
@@ -0,0 +1,6 @@ | |||
1 | #include <stdbool.h> | ||
2 | |||
3 | bool debug_hw_info(void) | ||
4 | { | ||
5 | return false; | ||
6 | } | ||
diff --git a/firmware/target/hosted/xduoo/lcd-target.h b/firmware/target/hosted/xduoo/lcd-target.h new file mode 100644 index 0000000000..bb9b77771b --- /dev/null +++ b/firmware/target/hosted/xduoo/lcd-target.h | |||
@@ -0,0 +1,32 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2016 Amaury Pouly | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or | ||
12 | * modify it under the terms of the GNU General Public License | ||
13 | * as published by the Free Software Foundation; either version 2 | ||
14 | * of the License, or (at your option) any later version. | ||
15 | * | ||
16 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
17 | * KIND, either express or implied. | ||
18 | * | ||
19 | ****************************************************************************/ | ||
20 | |||
21 | #ifndef __LCD_TARGET_H__ | ||
22 | #define __LCD_TARGET_H__ | ||
23 | |||
24 | /* needs special ioctl() to redraw updated framebuffer content */ | ||
25 | #define LCD_OPTIMIZED_UPDATE | ||
26 | #define LCD_OPTIMIZED_UPDATE_RECT | ||
27 | |||
28 | extern fb_data *framebuffer; /* see lcd-xduoo.c */ | ||
29 | #define LCD_FRAMEBUF_ADDR(col, row) (framebuffer + (row)*LCD_WIDTH + (col)) | ||
30 | |||
31 | extern void lcd_set_active(bool active); | ||
32 | #endif /* __LCD_TARGET_H__ */ | ||
diff --git a/firmware/target/hosted/xduoo/lcd-xduoo.c b/firmware/target/hosted/xduoo/lcd-xduoo.c new file mode 100644 index 0000000000..4b3148da03 --- /dev/null +++ b/firmware/target/hosted/xduoo/lcd-xduoo.c | |||
@@ -0,0 +1,140 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2017 Marcin Bukat | ||
10 | * Copyright (C) 2016 Amaury Pouly | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | #include <stdlib.h> | ||
23 | #include <unistd.h> | ||
24 | #include <stdio.h> | ||
25 | #include <linux/fb.h> | ||
26 | #include <sys/mman.h> | ||
27 | #include <sys/ioctl.h> | ||
28 | #include <fcntl.h> | ||
29 | #include "lcd.h" | ||
30 | #include "lcd-target.h" | ||
31 | #include "backlight-target.h" | ||
32 | #include "sysfs.h" | ||
33 | #include "panic.h" | ||
34 | |||
35 | static int fd = -1; | ||
36 | static struct fb_var_screeninfo vinfo; | ||
37 | fb_data *framebuffer = 0; /* global variable, see lcd-target.h */ | ||
38 | |||
39 | void lcd_init_device(void) | ||
40 | { | ||
41 | const char * const fb_dev = "/dev/fb0"; | ||
42 | fd = open(fb_dev, O_RDWR); | ||
43 | if(fd < 0) | ||
44 | { | ||
45 | panicf("Cannot open framebuffer: %s\n", fb_dev); | ||
46 | } | ||
47 | |||
48 | /* get fixed and variable information */ | ||
49 | struct fb_fix_screeninfo finfo; | ||
50 | if(ioctl(fd, FBIOGET_FSCREENINFO, &finfo) < 0) | ||
51 | { | ||
52 | panicf("Cannot read framebuffer fixed information"); | ||
53 | } | ||
54 | |||
55 | if(ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) < 0) | ||
56 | { | ||
57 | panicf("Cannot read framebuffer variable information"); | ||
58 | } | ||
59 | |||
60 | #if 0 | ||
61 | /* check resolution and framebuffer size */ | ||
62 | if(vinfo.xres != LCD_WIDTH || vinfo.yres != LCD_HEIGHT || vinfo.bits_per_pixel != LCD_DEPTH) | ||
63 | { | ||
64 | panicf("Unexpected framebuffer resolution: %dx%dx%d\n", vinfo.xres, | ||
65 | vinfo.yres, vinfo.bits_per_pixel); | ||
66 | } | ||
67 | #endif | ||
68 | /* Note: we use a framebuffer size of width*height*bbp. We cannot trust the | ||
69 | * values returned by the driver for line_length */ | ||
70 | |||
71 | /* map framebuffer */ | ||
72 | framebuffer = mmap(0, FRAMEBUFFER_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); | ||
73 | if((void *)framebuffer == MAP_FAILED) | ||
74 | { | ||
75 | panicf("Cannot map framebuffer"); | ||
76 | } | ||
77 | |||
78 | #ifdef HAVE_LCD_ENABLE | ||
79 | lcd_set_active(true); | ||
80 | #endif | ||
81 | } | ||
82 | |||
83 | #ifdef HAVE_LCD_SHUTDOWN | ||
84 | void lcd_shutdown(void) | ||
85 | { | ||
86 | munmap(framebuffer, FRAMEBUFFER_SIZE); | ||
87 | close(fd); | ||
88 | } | ||
89 | #endif | ||
90 | |||
91 | void lcd_enable(bool on) | ||
92 | { | ||
93 | const char * const sysfs_fb_blank = "/sys/class/graphics/fb0/blank"; | ||
94 | |||
95 | if (lcd_active() != on) | ||
96 | { | ||
97 | sysfs_set_int(sysfs_fb_blank, on ? 0 : 1); | ||
98 | lcd_set_active(on); | ||
99 | |||
100 | if (on) | ||
101 | { | ||
102 | send_event(LCD_EVENT_ACTIVATION, NULL); | ||
103 | } | ||
104 | } | ||
105 | } | ||
106 | |||
107 | static void redraw(void) | ||
108 | { | ||
109 | ioctl(fd, FBIOPAN_DISPLAY, &vinfo); | ||
110 | } | ||
111 | |||
112 | extern void lcd_copy_buffer_rect(fb_data *dst, const fb_data *src, | ||
113 | int width, int height); | ||
114 | |||
115 | void lcd_update(void) | ||
116 | { | ||
117 | /* Copy the Rockbox framebuffer to the second framebuffer */ | ||
118 | lcd_copy_buffer_rect(LCD_FRAMEBUF_ADDR(0, 0), FBADDR(0,0), | ||
119 | LCD_WIDTH*LCD_HEIGHT, 1); | ||
120 | redraw(); | ||
121 | } | ||
122 | |||
123 | void lcd_update_rect(int x, int y, int width, int height) | ||
124 | { | ||
125 | fb_data *dst = LCD_FRAMEBUF_ADDR(x, y); | ||
126 | fb_data * src = FBADDR(x,y); | ||
127 | |||
128 | /* Copy part of the Rockbox framebuffer to the second framebuffer */ | ||
129 | if (width < LCD_WIDTH) | ||
130 | { | ||
131 | /* Not full width - do line-by-line */ | ||
132 | lcd_copy_buffer_rect(dst, src, width, height); | ||
133 | } | ||
134 | else | ||
135 | { | ||
136 | /* Full width - copy as one line */ | ||
137 | lcd_copy_buffer_rect(dst, src, LCD_WIDTH*height, 1); | ||
138 | } | ||
139 | redraw(); | ||
140 | } | ||
diff --git a/firmware/target/hosted/xduoo/power-xduoo.c b/firmware/target/hosted/xduoo/power-xduoo.c new file mode 100644 index 0000000000..97a8dd4779 --- /dev/null +++ b/firmware/target/hosted/xduoo/power-xduoo.c | |||
@@ -0,0 +1,74 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2017 by Marcin Bukat | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or | ||
12 | * modify it under the terms of the GNU General Public License | ||
13 | * as published by the Free Software Foundation; either version 2 | ||
14 | * of the License, or (at your option) any later version. | ||
15 | * | ||
16 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
17 | * KIND, either express or implied. | ||
18 | * | ||
19 | ****************************************************************************/ | ||
20 | #include <sys/types.h> | ||
21 | #include <fcntl.h> | ||
22 | #include <string.h> | ||
23 | #include <unistd.h> | ||
24 | #include <stdio.h> | ||
25 | |||
26 | #include "system.h" | ||
27 | #include "power-xduoo.h" | ||
28 | #include "power.h" | ||
29 | #include "panic.h" | ||
30 | #include "sysfs.h" | ||
31 | |||
32 | const char * const sysfs_bat_voltage = | ||
33 | "/sys/class/power_supply/battery/voltage_now"; | ||
34 | |||
35 | const char * const sysfs_bat_capacity = | ||
36 | "/sys/class/power_supply/battery/capacity"; | ||
37 | |||
38 | const char * const sysfs_bat_status = | ||
39 | "/sys/class/power_supply/battery/status"; | ||
40 | |||
41 | const char * const sysfs_pow_supply = | ||
42 | "/sys/class/power_supply/usb/present"; | ||
43 | |||
44 | unsigned int xduoo_power_input_status(void) | ||
45 | { | ||
46 | int present = 0; | ||
47 | sysfs_get_int(sysfs_pow_supply, &present); | ||
48 | |||
49 | return present ? POWER_INPUT_USB_CHARGER : POWER_INPUT_NONE; | ||
50 | } | ||
51 | |||
52 | bool xduoo_power_charging_status(void) | ||
53 | { | ||
54 | char buf[12] = {0}; | ||
55 | sysfs_get_string(sysfs_bat_status, buf, sizeof(buf)); | ||
56 | |||
57 | return (strncmp(buf, "Charging", 8) == 0); | ||
58 | } | ||
59 | |||
60 | unsigned int xduoo_power_get_battery_voltage(void) | ||
61 | { | ||
62 | int battery_voltage; | ||
63 | sysfs_get_int(sysfs_bat_voltage, &battery_voltage); | ||
64 | |||
65 | return battery_voltage/1000; | ||
66 | } | ||
67 | |||
68 | unsigned int xduoo_power_get_battery_capacity(void) | ||
69 | { | ||
70 | int battery_capacity; | ||
71 | sysfs_get_int(sysfs_bat_capacity, &battery_capacity); | ||
72 | |||
73 | return battery_capacity; | ||
74 | } | ||
diff --git a/firmware/target/hosted/xduoo/power-xduoo.h b/firmware/target/hosted/xduoo/power-xduoo.h new file mode 100644 index 0000000000..d573865ed2 --- /dev/null +++ b/firmware/target/hosted/xduoo/power-xduoo.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2017 by Marcin Bukat | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or | ||
12 | * modify it under the terms of the GNU General Public License | ||
13 | * as published by the Free Software Foundation; either version 2 | ||
14 | * of the License, or (at your option) any later version. | ||
15 | * | ||
16 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
17 | * KIND, either express or implied. | ||
18 | * | ||
19 | ****************************************************************************/ | ||
20 | #ifndef _POWER_XDUOO_H_ | ||
21 | #define _POWER_XDUOO_H_ | ||
22 | |||
23 | #include <stdbool.h> | ||
24 | #include "config.h" | ||
25 | |||
26 | unsigned int xduoo_power_input_status(void); | ||
27 | bool xduoo_power_charging_status(void); | ||
28 | unsigned int xduoo_power_get_battery_voltage(void); | ||
29 | unsigned int xduoo_power_get_battery_capacity(void); | ||
30 | #endif /* _POWER_XDUOO_H_ */ | ||
31 | |||
diff --git a/firmware/target/hosted/xduoo/powermgmt-xduoo.c b/firmware/target/hosted/xduoo/powermgmt-xduoo.c new file mode 100644 index 0000000000..30001934ba --- /dev/null +++ b/firmware/target/hosted/xduoo/powermgmt-xduoo.c | |||
@@ -0,0 +1,70 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2017 Marcin Bukat | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or | ||
12 | * modify it under the terms of the GNU General Public License | ||
13 | * as published by the Free Software Foundation; either version 2 | ||
14 | * of the License, or (at your option) any later version. | ||
15 | * | ||
16 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
17 | * KIND, either express or implied. | ||
18 | * | ||
19 | ****************************************************************************/ | ||
20 | #include "powermgmt.h" | ||
21 | #include "power.h" | ||
22 | #include "power-xduoo.h" | ||
23 | |||
24 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = | ||
25 | { | ||
26 | 3470 | ||
27 | }; | ||
28 | |||
29 | /* the OF shuts down at this voltage */ | ||
30 | const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] = | ||
31 | { | ||
32 | 3400 | ||
33 | }; | ||
34 | |||
35 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ | ||
36 | const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = | ||
37 | { | ||
38 | { 3400, 3639, 3697, 3723, 3757, 3786, 3836, 3906, 3980, 4050, 4159 } | ||
39 | }; | ||
40 | |||
41 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ | ||
42 | const unsigned short const percent_to_volt_charge[11] = | ||
43 | { | ||
44 | 3485, 3780, 3836, 3857, 3890, 3930, 3986, 4062, 4158, 4185, 4196 | ||
45 | }; | ||
46 | |||
47 | unsigned int power_input_status(void) | ||
48 | { | ||
49 | /* POWER_INPUT_USB_CHARGER, POWER_INPUT_NONE */ | ||
50 | return xduoo_power_input_status(); | ||
51 | } | ||
52 | |||
53 | #if defined(XDUOO_X3II) | ||
54 | int _battery_voltage(void) | ||
55 | { | ||
56 | return xduoo_power_get_battery_voltage(); | ||
57 | } | ||
58 | #endif | ||
59 | |||
60 | #if defined(XDUOO_X20) | ||
61 | int _battery_level(void) | ||
62 | { | ||
63 | return xduoo_power_get_battery_capacity(); | ||
64 | } | ||
65 | #endif | ||
66 | |||
67 | bool charging_state(void) | ||
68 | { | ||
69 | return xduoo_power_charging_status(); | ||
70 | } | ||
diff --git a/firmware/target/hosted/xduoo/system-target.h b/firmware/target/hosted/xduoo/system-target.h new file mode 100644 index 0000000000..830f19fde4 --- /dev/null +++ b/firmware/target/hosted/xduoo/system-target.h | |||
@@ -0,0 +1,28 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2017 Marcin Bukat | ||
10 | * Copyright (C) 2016 Amaury Pouly | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | #ifndef __SYSTEM_TARGET_H__ | ||
22 | #define __SYSTEM_TARGET_H__ | ||
23 | |||
24 | #include "kernel-unix.h" | ||
25 | #include "system-hosted.h" | ||
26 | |||
27 | #define NEED_GENERIC_BYTESWAPS | ||
28 | #endif /* __SYSTEM_TARGET_H__ */ | ||
diff --git a/firmware/target/hosted/xduoo/usb-xduoo.c b/firmware/target/hosted/xduoo/usb-xduoo.c new file mode 100644 index 0000000000..19248ad262 --- /dev/null +++ b/firmware/target/hosted/xduoo/usb-xduoo.c | |||
@@ -0,0 +1,118 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___ | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2018 by Marcin Bukat | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or | ||
12 | * modify it under the terms of the GNU General Public License | ||
13 | * as published by the Free Software Foundation; either version 2 | ||
14 | * of the License, or (at your option) any later version. | ||
15 | * | ||
16 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
17 | * KIND, either express or implied. | ||
18 | * | ||
19 | ****************************************************************************/ | ||
20 | |||
21 | #include <stdlib.h> | ||
22 | #include <sys/mount.h> | ||
23 | #include <string.h> | ||
24 | #include "config.h" | ||
25 | #include "disk.h" | ||
26 | #include "usb.h" | ||
27 | #include "sysfs.h" | ||
28 | #include "power.h" | ||
29 | #include "power-xduoo.h" | ||
30 | |||
31 | static bool adb_mode = false; | ||
32 | |||
33 | /* TODO: implement usb detection properly */ | ||
34 | int usb_detect(void) | ||
35 | { | ||
36 | return power_input_status() == POWER_INPUT_USB_CHARGER ? USB_INSERTED : USB_EXTRACTED; | ||
37 | } | ||
38 | |||
39 | void usb_enable(bool on) | ||
40 | { | ||
41 | /* Ignore usb enable/disable when ADB is enabled so we can fireup adb shell | ||
42 | * without entering ums mode | ||
43 | */ | ||
44 | if (!adb_mode) | ||
45 | { | ||
46 | sysfs_set_int("/sys/class/android_usb/android0/enable", on ? 1 : 0); | ||
47 | } | ||
48 | } | ||
49 | |||
50 | /* This is called by usb thread after usb extract in order to return | ||
51 | * regular FS access | ||
52 | * | ||
53 | * returns the # of successful mounts | ||
54 | */ | ||
55 | int disk_mount_all(void) | ||
56 | { | ||
57 | const char *dev[] = {"/dev/mmcblk0p1", "/dev/mmcblk0"}; | ||
58 | const char *fs[] = {"vfat", "exfat"}; | ||
59 | |||
60 | sysfs_set_string("/sys/class/android_usb/android0/f_mass_storage/lun/file", ""); | ||
61 | |||
62 | for (int i=0; i<2; i++) | ||
63 | { | ||
64 | for (int j=0; j<2; j++) | ||
65 | { | ||
66 | if (mount(dev[i], "/mnt/sd_0", fs[j], 0, NULL) == 0) | ||
67 | { | ||
68 | return 1; | ||
69 | } | ||
70 | } | ||
71 | } | ||
72 | |||
73 | return 0; | ||
74 | } | ||
75 | |||
76 | /* This is called by usb thread after all threads ACKs usb inserted message | ||
77 | * | ||
78 | * returns the # of successful unmounts | ||
79 | */ | ||
80 | int disk_unmount_all(void) | ||
81 | { | ||
82 | if (umount("/mnt/sd_0") == 0) | ||
83 | { | ||
84 | sysfs_set_string("/sys/class/android_usb/android0/f_mass_storage/lun/file", "/dev/mmcblk0"); | ||
85 | return 1; | ||
86 | } | ||
87 | |||
88 | return 0; | ||
89 | } | ||
90 | |||
91 | void usb_init_device(void) | ||
92 | { | ||
93 | char functions[32] = {0}; | ||
94 | |||
95 | /* Check if ADB was activated in bootloader */ | ||
96 | sysfs_get_string("/sys/class/android_usb/android0/functions", functions, sizeof(functions)); | ||
97 | adb_mode = (strstr(functions, "adb") == NULL) ? false : true; | ||
98 | |||
99 | usb_enable(false); | ||
100 | |||
101 | if (adb_mode) | ||
102 | { | ||
103 | sysfs_set_string("/sys/class/android_usb/android0/functions", "mass_storage,adb"); | ||
104 | sysfs_set_string("/sys/class/android_usb/android0/idVendor", "18D1"); | ||
105 | sysfs_set_string("/sys/class/android_usb/android0/idProduct", "D002"); | ||
106 | } | ||
107 | else | ||
108 | { | ||
109 | sysfs_set_string("/sys/class/android_usb/android0/functions", "mass_storage"); | ||
110 | sysfs_set_string("/sys/class/android_usb/android0/idVendor", "C502"); | ||
111 | sysfs_set_string("/sys/class/android_usb/android0/idProduct", "0029"); | ||
112 | } | ||
113 | |||
114 | sysfs_set_string("/sys/class/android_usb/android0/iManufacturer", "Rockbox.org"); | ||
115 | sysfs_set_string("/sys/class/android_usb/android0/iProduct", "Rockbox media player"); | ||
116 | sysfs_set_string("/sys/class/android_usb/android0/iSerial", "0123456789ABCDEF"); | ||
117 | sysfs_set_string("/sys/class/android_usb/android0/f_mass_storage/inquiry_string", "xDuoo 0100"); | ||
118 | } | ||
diff --git a/firmware/target/hosted/xduoo/xduoo.make b/firmware/target/hosted/xduoo/xduoo.make new file mode 100644 index 0000000000..5c37d27412 --- /dev/null +++ b/firmware/target/hosted/xduoo/xduoo.make | |||
@@ -0,0 +1,52 @@ | |||
1 | # __________ __ ___. | ||
2 | # Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
3 | # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
4 | # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
5 | # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
6 | # \/ \/ \/ \/ \/ | ||
7 | # $Id$ | ||
8 | # | ||
9 | |||
10 | INCLUDES += -I$(FIRMDIR)/include -I$(FIRMDIR)/export $(TARGET_INC) -I$(BUILDDIR) -I$(APPSDIR) | ||
11 | |||
12 | SIMFLAGS += $(INCLUDES) $(DEFINES) -DHAVE_CONFIG_H $(GCCOPTS) | ||
13 | |||
14 | # bootloader build is sligtly different | ||
15 | ifneq (,$(findstring bootloader,$(APPSDIR))) | ||
16 | |||
17 | SRC += $(call preprocess, $(APPSDIR)/SOURCES) | ||
18 | CLEANOBJS += $(BUILDDIR)/bootloader.* | ||
19 | |||
20 | endif #bootloader | ||
21 | |||
22 | .SECONDEXPANSION: # $$(OBJ) is not populated until after this | ||
23 | |||
24 | ifneq (,$(findstring bootloader,$(APPSDIR))) | ||
25 | # bootloader build | ||
26 | |||
27 | $(BUILDDIR)/bootloader.elf : $$(OBJ) $(FIRMLIB) $(CORE_LIBS) | ||
28 | $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -o $@ $(OBJ) \ | ||
29 | -L$(BUILDDIR)/firmware -lfirmware \ | ||
30 | -L$(BUILDDIR)/lib $(call a2lnk,$(CORE_LIBS)) \ | ||
31 | $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,--gc-sections -Wl,-Map,$(BUILDDIR)/bootloader.map | ||
32 | |||
33 | $(BUILDDIR)/$(BINARY): $(BUILDDIR)/bootloader.elf | ||
34 | $(call PRINTS,OC $(@F))$(call objcopy,$^,$@) | ||
35 | |||
36 | else | ||
37 | # rockbox app build | ||
38 | |||
39 | $(BUILDDIR)/rockbox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) | ||
40 | $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -o $@ $(OBJ) \ | ||
41 | -L$(BUILDDIR)/firmware -lfirmware \ | ||
42 | -L$(RBCODEC_BLD)/codecs $(call a2lnk, $(VOICESPEEXLIB)) \ | ||
43 | -L$(BUILDDIR)/lib $(call a2lnk,$(CORE_LIBS)) \ | ||
44 | $(LDOPTS) $(GLOBAL_LDOPTS) -Wl,-Map,$(BUILDDIR)/rockbox.map | ||
45 | |||
46 | $(BUILDDIR)/rockbox.x3ii : $(BUILDDIR)/rockbox.elf | ||
47 | $(call PRINTS,OC $(@F))$(call objcopy,$^,$@) | ||
48 | |||
49 | $(BUILDDIR)/rockbox.x20 : $(BUILDDIR)/rockbox.elf | ||
50 | $(call PRINTS,OC $(@F))$(call objcopy,$^,$@) | ||
51 | |||
52 | endif | ||
diff --git a/tools/configure b/tools/configure index f6fc50d905..4b2b1ce829 100755 --- a/tools/configure +++ b/tools/configure | |||
@@ -888,7 +888,6 @@ mipsellinuxcc () { | |||
888 | SHARED_LDFLAG="-shared" | 888 | SHARED_LDFLAG="-shared" |
889 | SHARED_CFLAGS='-fPIC -fvisibility=hidden' | 889 | SHARED_CFLAGS='-fPIC -fvisibility=hidden' |
890 | endian="little" | 890 | endian="little" |
891 | app_type="rocker" | ||
892 | thread_support="HAVE_SIGALTSTACK_THREADS" | 891 | thread_support="HAVE_SIGALTSTACK_THREADS" |
893 | 892 | ||
894 | # Include path | 893 | # Include path |
@@ -1244,7 +1243,7 @@ voiceconfig () { | |||
1244 | exit 4 | 1243 | exit 4 |
1245 | fi | 1244 | fi |
1246 | fi | 1245 | fi |
1247 | 1246 | ||
1248 | echo "Using $ENCODER for encoding voice clips" | 1247 | echo "Using $ENCODER for encoding voice clips" |
1249 | 1248 | ||
1250 | # Read custom encoder options from command line | 1249 | # Read custom encoder options from command line |
@@ -1392,7 +1391,7 @@ ARG_ARM_THUMB= | |||
1392 | ARG_PREFIX="$PREFIX" | 1391 | ARG_PREFIX="$PREFIX" |
1393 | ARG_THREAD_SUPPORT= | 1392 | ARG_THREAD_SUPPORT= |
1394 | ARG_32BIT= | 1393 | ARG_32BIT= |
1395 | err= | 1394 | err= |
1396 | for arg in "$@"; do | 1395 | for arg in "$@"; do |
1397 | case "$arg" in | 1396 | case "$arg" in |
1398 | --ccache) ARG_CCACHE=1;; | 1397 | --ccache) ARG_CCACHE=1;; |
@@ -1565,6 +1564,8 @@ cat <<EOF | |||
1565 | 229) NWZ-S750 series | 1564 | 229) NWZ-S750 series |
1566 | ==xDuoo== ==AgpTek== | 1565 | ==xDuoo== ==AgpTek== |
1567 | 241) X3 240) Rocker | 1566 | 241) X3 240) Rocker |
1567 | 242) X3II | ||
1568 | 243) X20 | ||
1568 | 1569 | ||
1569 | EOF | 1570 | EOF |
1570 | 1571 | ||
@@ -2260,7 +2261,7 @@ fi | |||
2260 | t_manufacturer="tcc780x" | 2261 | t_manufacturer="tcc780x" |
2261 | t_model="cowond2" | 2262 | t_model="cowond2" |
2262 | ;; | 2263 | ;; |
2263 | 2264 | ||
2264 | 34|iaudiom3) | 2265 | 34|iaudiom3) |
2265 | target_id=37 | 2266 | target_id=37 |
2266 | modelname="iaudiom3" | 2267 | modelname="iaudiom3" |
@@ -2403,7 +2404,7 @@ fi | |||
2403 | t_manufacturer="tcc77x" | 2404 | t_manufacturer="tcc77x" |
2404 | t_model="logikdax" | 2405 | t_model="logikdax" |
2405 | ;; | 2406 | ;; |
2406 | 2407 | ||
2407 | 89|creativezenxfistyle) | 2408 | 89|creativezenxfistyle) |
2408 | target_id=94 | 2409 | target_id=94 |
2409 | modelname="creativezenxfistyle" | 2410 | modelname="creativezenxfistyle" |
@@ -2446,7 +2447,7 @@ fi | |||
2446 | t_manufacturer="tms320dm320" | 2447 | t_manufacturer="tms320dm320" |
2447 | t_model="creative-zvm" | 2448 | t_model="creative-zvm" |
2448 | ;; | 2449 | ;; |
2449 | 2450 | ||
2450 | 91|zenvisionm60gb) | 2451 | 91|zenvisionm60gb) |
2451 | target_id=40 | 2452 | target_id=40 |
2452 | modelname="zenvisionm60gb" | 2453 | modelname="zenvisionm60gb" |
@@ -2469,7 +2470,7 @@ fi | |||
2469 | t_manufacturer="tms320dm320" | 2470 | t_manufacturer="tms320dm320" |
2470 | t_model="creative-zvm" | 2471 | t_model="creative-zvm" |
2471 | ;; | 2472 | ;; |
2472 | 2473 | ||
2473 | 92|zenvision) | 2474 | 92|zenvision) |
2474 | target_id=39 | 2475 | target_id=39 |
2475 | modelname="zenvision" | 2476 | modelname="zenvision" |
@@ -2717,9 +2718,9 @@ fi | |||
2717 | ;; | 2718 | ;; |
2718 | 2719 | ||
2719 | 54|sansac100) | 2720 | 54|sansac100) |
2720 | target_id=42 | 2721 | target_id=42 |
2721 | modelname="sansac100" | 2722 | modelname="sansac100" |
2722 | target="SANSA_C100" | 2723 | target="SANSA_C100" |
2723 | memory=2 | 2724 | memory=2 |
2724 | arm946cc | 2725 | arm946cc |
2725 | tool="$rootdir/tools/scramble -add=c100" | 2726 | tool="$rootdir/tools/scramble -add=c100" |
@@ -3117,7 +3118,7 @@ fi | |||
3117 | t_manufacturer="s5l8700" | 3118 | t_manufacturer="s5l8700" |
3118 | t_model="meizu-m6sl" | 3119 | t_model="meizu-m6sl" |
3119 | ;; | 3120 | ;; |
3120 | 3121 | ||
3121 | 111|meizum6sp) | 3122 | 111|meizum6sp) |
3122 | target_id=46 | 3123 | target_id=46 |
3123 | modelname="meizum6sp" | 3124 | modelname="meizum6sp" |
@@ -3139,7 +3140,7 @@ fi | |||
3139 | t_manufacturer="s5l8700" | 3140 | t_manufacturer="s5l8700" |
3140 | t_model="meizu-m6sp" | 3141 | t_model="meizu-m6sp" |
3141 | ;; | 3142 | ;; |
3142 | 3143 | ||
3143 | 112|meizum3) | 3144 | 112|meizum3) |
3144 | target_id=47 | 3145 | target_id=47 |
3145 | modelname="meizum3" | 3146 | modelname="meizum3" |
@@ -3161,7 +3162,7 @@ fi | |||
3161 | t_manufacturer="s5l8700" | 3162 | t_manufacturer="s5l8700" |
3162 | t_model="meizu-m3" | 3163 | t_model="meizu-m3" |
3163 | ;; | 3164 | ;; |
3164 | 3165 | ||
3165 | 120|ondavx747) | 3166 | 120|ondavx747) |
3166 | target_id=45 | 3167 | target_id=45 |
3167 | modelname="ondavx747" | 3168 | modelname="ondavx747" |
@@ -3183,7 +3184,7 @@ fi | |||
3183 | t_manufacturer="ingenic_jz47xx" | 3184 | t_manufacturer="ingenic_jz47xx" |
3184 | t_model="onda_vx747" | 3185 | t_model="onda_vx747" |
3185 | ;; | 3186 | ;; |
3186 | 3187 | ||
3187 | 121|ondavx767) | 3188 | 121|ondavx767) |
3188 | target_id=64 | 3189 | target_id=64 |
3189 | modelname="ondavx767" | 3190 | modelname="ondavx767" |
@@ -3205,7 +3206,7 @@ fi | |||
3205 | t_manufacturer="ingenic_jz47xx" | 3206 | t_manufacturer="ingenic_jz47xx" |
3206 | t_model="onda_vx767" | 3207 | t_model="onda_vx767" |
3207 | ;; | 3208 | ;; |
3208 | 3209 | ||
3209 | 122|ondavx747p) | 3210 | 122|ondavx747p) |
3210 | target_id=54 | 3211 | target_id=54 |
3211 | modelname="ondavx747p" | 3212 | modelname="ondavx747p" |
@@ -3227,7 +3228,7 @@ fi | |||
3227 | t_manufacturer="ingenic_jz47xx" | 3228 | t_manufacturer="ingenic_jz47xx" |
3228 | t_model="onda_vx747" | 3229 | t_model="onda_vx747" |
3229 | ;; | 3230 | ;; |
3230 | 3231 | ||
3231 | 123|ondavx777) | 3232 | 123|ondavx777) |
3232 | target_id=61 | 3233 | target_id=61 |
3233 | modelname="ondavx777" | 3234 | modelname="ondavx777" |
@@ -3249,7 +3250,7 @@ fi | |||
3249 | t_manufacturer="ingenic_jz47xx" | 3250 | t_manufacturer="ingenic_jz47xx" |
3250 | t_model="onda_vx747" | 3251 | t_model="onda_vx747" |
3251 | ;; | 3252 | ;; |
3252 | 3253 | ||
3253 | 130|lyreproto1) | 3254 | 130|lyreproto1) |
3254 | target_id=56 | 3255 | target_id=56 |
3255 | modelname="lyreproto1" | 3256 | modelname="lyreproto1" |
@@ -3271,7 +3272,7 @@ fi | |||
3271 | t_manufacturer="at91sam" | 3272 | t_manufacturer="at91sam" |
3272 | t_model="lyre_proto1" | 3273 | t_model="lyre_proto1" |
3273 | ;; | 3274 | ;; |
3274 | 3275 | ||
3275 | 131|mini2440) | 3276 | 131|mini2440) |
3276 | target_id=99 | 3277 | target_id=99 |
3277 | modelname="mini2440" | 3278 | modelname="mini2440" |
@@ -3390,7 +3391,7 @@ fi | |||
3390 | t_manufacturer="s5l8700" | 3391 | t_manufacturer="s5l8700" |
3391 | t_model="yps3" | 3392 | t_model="yps3" |
3392 | ;; | 3393 | ;; |
3393 | 3394 | ||
3394 | 144|samsungypz5) | 3395 | 144|samsungypz5) |
3395 | target_id=90 | 3396 | target_id=90 |
3396 | modelname="samsungypz5" | 3397 | modelname="samsungypz5" |
@@ -4226,10 +4227,11 @@ fi | |||
4226 | 4227 | ||
4227 | 240|agptekrocker) | 4228 | 240|agptekrocker) |
4228 | application="yes" | 4229 | application="yes" |
4230 | app_type="rocker" | ||
4229 | target_id=97 | 4231 | target_id=97 |
4230 | modelname="agptekrocker" | 4232 | modelname="agptekrocker" |
4231 | target="AGPTEK_ROCKER" | 4233 | target="AGPTEK_ROCKER" |
4232 | memory=6 | 4234 | memory=8 |
4233 | tool="cp " | 4235 | tool="cp " |
4234 | boottool="cp " | 4236 | boottool="cp " |
4235 | bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" | 4237 | bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" |
@@ -4268,6 +4270,52 @@ fi | |||
4268 | t_model="xduoo_x3" | 4270 | t_model="xduoo_x3" |
4269 | ;; | 4271 | ;; |
4270 | 4272 | ||
4273 | 242|xduoox3ii) | ||
4274 | target_id=110 | ||
4275 | application=yes | ||
4276 | app_type="xduoo" | ||
4277 | modelname="xduoox3ii" | ||
4278 | target="XDUOO_X3II" | ||
4279 | memory=8 | ||
4280 | mipsellinuxcc | ||
4281 | tool="cp " | ||
4282 | boottool="cp " | ||
4283 | bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" | ||
4284 | bmp2rb_native="$rootdir/tools/bmp2rb -f 10" | ||
4285 | output="rockbox.x3ii" | ||
4286 | bootoutput="bootloader.x3ii" | ||
4287 | appextra="recorder:gui:hosted" | ||
4288 | plugins="yes" | ||
4289 | swcodec="yes" | ||
4290 | # architecture, manufacturer and model for the target-tree build | ||
4291 | t_cpu="hosted" | ||
4292 | t_manufacturer="xduoo" | ||
4293 | t_model="xduoo_x3ii" | ||
4294 | ;; | ||
4295 | |||
4296 | 243|xduoox20) | ||
4297 | target_id=111 | ||
4298 | application=yes | ||
4299 | app_type="xduoo" | ||
4300 | modelname="xduoox20" | ||
4301 | target="XDUOO_X20" | ||
4302 | memory=8 | ||
4303 | mipsellinuxcc | ||
4304 | tool="cp " | ||
4305 | boottool="cp " | ||
4306 | bmp2rb_mono="$rootdir/tools/bmp2rb -f 0" | ||
4307 | bmp2rb_native="$rootdir/tools/bmp2rb -f 10" | ||
4308 | output="rockbox.x20" | ||
4309 | bootoutput="bootloader.x20" | ||
4310 | appextra="recorder:gui:hosted" | ||
4311 | plugins="yes" | ||
4312 | swcodec="yes" | ||
4313 | # architecture, manufacturer and model for the target-tree build | ||
4314 | t_cpu="hosted" | ||
4315 | t_manufacturer="xduoo" | ||
4316 | t_model="xduoo_x20" | ||
4317 | ;; | ||
4318 | |||
4271 | 250|ihifi770c) | 4319 | 250|ihifi770c) |
4272 | target_id=107 | 4320 | target_id=107 |
4273 | modelname="ihifi770c" | 4321 | modelname="ihifi770c" |
@@ -4749,7 +4797,7 @@ if [ -z "$arch" ]; then | |||
4749 | arch="none" | 4797 | arch="none" |
4750 | echo "Warning: Could not determine target arch" | 4798 | echo "Warning: Could not determine target arch" |
4751 | fi | 4799 | fi |
4752 | if [ "$arch" != "none" ]; then | 4800 | if [ "$arch" != "none" ]; then |
4753 | if [ -n "$arch_version" ]; then | 4801 | if [ -n "$arch_version" ]; then |
4754 | echo "Automatically selected arch: $arch (ver $arch_version)" | 4802 | echo "Automatically selected arch: $arch (ver $arch_version)" |
4755 | else | 4803 | else |
@@ -4789,7 +4837,7 @@ if [ "$ARG_RBDIR" != "" ]; then | |||
4789 | rbdir="/"$ARG_RBDIR | 4837 | rbdir="/"$ARG_RBDIR |
4790 | else | 4838 | else |
4791 | rbdir=$ARG_RBDIR | 4839 | rbdir=$ARG_RBDIR |
4792 | fi | 4840 | fi |
4793 | echo "Using alternate rockbox dir: ${rbdir}" | 4841 | echo "Using alternate rockbox dir: ${rbdir}" |
4794 | fi | 4842 | fi |
4795 | 4843 | ||
diff --git a/tools/root.make b/tools/root.make index 72039335da..412dbbc97b 100644 --- a/tools/root.make +++ b/tools/root.make | |||
@@ -105,6 +105,8 @@ ifneq (,$(findstring bootloader,$(APPSDIR))) | |||
105 | include $(ROOTDIR)/firmware/target/hosted/sonynwz/sonynwz.make | 105 | include $(ROOTDIR)/firmware/target/hosted/sonynwz/sonynwz.make |
106 | else ifneq (,$(findstring rocker,$(APP_TYPE))) | 106 | else ifneq (,$(findstring rocker,$(APP_TYPE))) |
107 | include $(ROOTDIR)/firmware/target/hosted/agptek/rocker.make | 107 | include $(ROOTDIR)/firmware/target/hosted/agptek/rocker.make |
108 | else ifneq (,$(findstring xduoo,$(APP_TYPE))) | ||
109 | include $(ROOTDIR)/firmware/target/hosted/xduoo/xduoo.make | ||
108 | else | 110 | else |
109 | include $(APPSDIR)/bootloader.make | 111 | include $(APPSDIR)/bootloader.make |
110 | endif | 112 | endif |
@@ -149,6 +151,10 @@ else # core | |||
149 | include $(ROOTDIR)/firmware/target/hosted/agptek/rocker.make | 151 | include $(ROOTDIR)/firmware/target/hosted/agptek/rocker.make |
150 | endif | 152 | endif |
151 | 153 | ||
154 | ifneq (,$(findstring xduoo,$(APP_TYPE))) | ||
155 | include $(ROOTDIR)/firmware/target/hosted/xduoo/xduoo.make | ||
156 | endif | ||
157 | |||
152 | ifneq (,$(findstring android_ndk, $(APP_TYPE))) | 158 | ifneq (,$(findstring android_ndk, $(APP_TYPE))) |
153 | include $(ROOTDIR)/firmware/target/hosted/ibasso/android_ndk.make | 159 | include $(ROOTDIR)/firmware/target/hosted/ibasso/android_ndk.make |
154 | else | 160 | else |