summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2007-01-14 13:48:09 +0000
committerDave Chapman <dave@dchapman.com>2007-01-14 13:48:09 +0000
commitd64e626387e21dc6a7ab374f17dec1e902cd9779 (patch)
tree6a16bbf5de0becfd6588bff30c11c8ed9fd25c9e
parent72f1027b3edae94ad9962c654519c2cab8566078 (diff)
downloadrockbox-d64e626387e21dc6a7ab374f17dec1e902cd9779.tar.gz
rockbox-d64e626387e21dc6a7ab374f17dec1e902cd9779.zip
Start of work on a port to the Archos 'AV300' (AV320/340/380) - a working UI simulator (but with a dummy background image for now) and the beginnings of the target-specific firmare code. Port is temporarily using a 2bpp LCD buffer format - the AV300 has a 320x240 colour (YCbCr-based) LCD which will need a new framebuffer format and drawing routines, but the LCD is also capable of various paletted bitmap modes, one of which has an identical framebuffer format to the greyscale ipods. Buttons (and hence the button mappings) are identical to the Archos Recorder, with the exception that the PLAY button on the Recorder is replaced by pressing the joystick on the AV300 (which I call BUTTON_SELECT). The initial port will begin by being strictly HWCODEC, but will evolve to be a hybrid SWCODEC/HWCODEC platform - it has a MAS3587F but also a main CPU (54MHz arm7tdmi plus DSP) capable of software decoding of at least some formats.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12008 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/SOURCES2
-rw-r--r--apps/bitmaps/native/SOURCES2
-rw-r--r--apps/keymaps/keymap-av300.c261
-rw-r--r--apps/plugins/SUBDIRS3
-rw-r--r--apps/plugins/bitmaps/native/SOURCES5
-rw-r--r--apps/plugins/bounce.c6
-rw-r--r--apps/plugins/brickmania.c13
-rw-r--r--apps/plugins/calculator.c9
-rw-r--r--apps/plugins/chessbox/chessbox.c11
-rw-r--r--apps/plugins/chessclock.c11
-rw-r--r--apps/plugins/chip8.c12
-rw-r--r--apps/plugins/clock.c19
-rw-r--r--apps/plugins/cube.c12
-rw-r--r--apps/plugins/dice.c9
-rw-r--r--apps/plugins/disktidy.c9
-rw-r--r--apps/plugins/fire.c7
-rw-r--r--apps/plugins/fireworks.c3
-rw-r--r--apps/plugins/flipit.c9
-rw-r--r--apps/plugins/jewels.c8
-rw-r--r--apps/plugins/jpeg.c10
-rw-r--r--apps/plugins/lib/pluginlib_actions.h14
-rw-r--r--apps/plugins/mandelbrot.c12
-rw-r--r--apps/plugins/mazezam.c12
-rw-r--r--apps/plugins/minesweeper.c15
-rw-r--r--apps/plugins/mosaique.c5
-rw-r--r--apps/plugins/oscilloscope.c11
-rw-r--r--apps/plugins/pong.c8
-rw-r--r--apps/plugins/rockblox.c11
-rw-r--r--apps/plugins/sliding_puzzle.c7
-rw-r--r--apps/plugins/snake.c6
-rw-r--r--apps/plugins/snake2.c12
-rw-r--r--apps/plugins/sokoban.c9
-rw-r--r--apps/plugins/solitaire.c17
-rw-r--r--apps/plugins/spacerocks.c14
-rw-r--r--apps/plugins/star.c13
-rw-r--r--apps/plugins/stats.c3
-rw-r--r--apps/plugins/stopwatch.c7
-rw-r--r--apps/plugins/sudoku/sudoku.h10
-rw-r--r--apps/plugins/viewer.c13
-rw-r--r--apps/plugins/vu_meter.c11
-rw-r--r--apps/plugins/wormlet.c16
-rw-r--r--apps/plugins/xobox.c10
-rw-r--r--apps/plugins/zxbox/keymaps.h8
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c8
-rw-r--r--apps/plugins/zxbox/zxvid_com.h4
-rw-r--r--apps/screens.h2
-rw-r--r--firmware/export/config.h24
-rw-r--r--firmware/target/arm/archos/av300/ata-av300.c56
-rw-r--r--firmware/target/arm/archos/av300/ata-target.h62
-rw-r--r--firmware/target/arm/archos/av300/button-target.h49
-rw-r--r--firmware/target/arm/archos/av300/power-av300.c97
-rwxr-xr-xtools/configure26
-rw-r--r--uisimulator/sdl/UI-av300.bmpbin0 -> 428454 bytes
-rw-r--r--uisimulator/sdl/button.c43
-rw-r--r--uisimulator/sdl/uisdl.h13
55 files changed, 1036 insertions, 13 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index c9587cf5bb..20707323f2 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -113,4 +113,6 @@ keymaps/keymap-h10.c
113keymaps/keymap-ifp7xx.c 113keymaps/keymap-ifp7xx.c
114#elif CONFIG_KEYPAD == SANSA_E200_PAD 114#elif CONFIG_KEYPAD == SANSA_E200_PAD
115keymaps/keymap-e200.c 115keymaps/keymap-e200.c
116#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
117keymaps/keymap-av300.c
116#endif 118#endif
diff --git a/apps/bitmaps/native/SOURCES b/apps/bitmaps/native/SOURCES
index 027f33e238..ba642ab7aa 100644
--- a/apps/bitmaps/native/SOURCES
+++ b/apps/bitmaps/native/SOURCES
@@ -9,6 +9,8 @@ rockboxlogo.128x40x16.bmp
9rockboxlogo.138x46x2.bmp 9rockboxlogo.138x46x2.bmp
10#elif (LCD_WIDTH == 160) && (LCD_DEPTH == 2) 10#elif (LCD_WIDTH == 160) && (LCD_DEPTH == 2)
11rockboxlogo.160x53x2.bmp 11rockboxlogo.160x53x2.bmp
12#elif (LCD_WIDTH == 320) && (LCD_DEPTH == 2)
13rockboxlogo.160x53x2.bmp
12#elif (LCD_WIDTH == 160) && (LCD_DEPTH == 16) 14#elif (LCD_WIDTH == 160) && (LCD_DEPTH == 16)
13rockboxlogo.160x50x16.bmp 15rockboxlogo.160x50x16.bmp
14#elif (LCD_WIDTH == 176) && (LCD_DEPTH == 16) 16#elif (LCD_WIDTH == 176) && (LCD_DEPTH == 16)
diff --git a/apps/keymaps/keymap-av300.c b/apps/keymaps/keymap-av300.c
new file mode 100644
index 0000000000..22e1fcc9a1
--- /dev/null
+++ b/apps/keymaps/keymap-av300.c
@@ -0,0 +1,261 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2006 Antoine Cellerier <dionoea @t videolan d.t org>
10 *
11 * All files in this archive are subject to the GNU General Public License.
12 * See the file COPYING in the source tree root for full license agreement.
13 *
14 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
15 * KIND, either express or implied.
16 *
17 ****************************************************************************/
18
19/* *
20 * Button Code Definitions for archos AV300 target
21 *
22 * \TODO handle F3
23 */
24
25#include "config.h"
26#include "action.h"
27#include "button.h"
28#include "settings.h"
29
30/* CONTEXT_CUSTOM's used in this file...
31
32CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions)
33
34
35*/
36
37static const struct button_mapping button_context_standard[] = {
38 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
39 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
40 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
41 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
42
43 { ACTION_STD_OK, BUTTON_ON, BUTTON_NONE },
44 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
45 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
46
47 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
48 { ACTION_STD_MENU, BUTTON_F1, BUTTON_NONE },
49 { ACTION_STD_QUICKSCREEN, BUTTON_F2, BUTTON_NONE },
50 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
51 { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE },
52 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
53 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
54 { ACTION_F3, BUTTON_F3, BUTTON_NONE },
55
56 LAST_ITEM_IN_LIST
57};
58
59static const struct button_mapping button_context_wps[] = {
60 { ACTION_WPS_PLAY, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
61 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
62 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
63 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
64 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
65 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
66 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
67 { ACTION_WPS_STOP, BUTTON_OFF|BUTTON_REL, BUTTON_OFF },
68 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
69 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
70 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
71 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
72 { ACTION_WPS_MENU, BUTTON_F1|BUTTON_REL, BUTTON_F1 },
73 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
74 { ACTION_WPS_QUICKSCREEN, BUTTON_F2, BUTTON_NONE },
75 { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON },
76 { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_NONE },
77 { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON },
78 { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_DOWN, BUTTON_ON },
79 { ACTION_STD_KEYLOCK, BUTTON_F1|BUTTON_DOWN, BUTTON_NONE },
80 { ACTION_F3, BUTTON_F3, BUTTON_NONE },
81 { ACTION_WPS_ABSETB_NEXTDIR, BUTTON_ON|BUTTON_RIGHT, BUTTON_NONE },
82 { ACTION_WPS_ABSETA_PREVDIR, BUTTON_ON|BUTTON_LEFT, BUTTON_NONE },
83 { ACTION_WPSAB_RESET, BUTTON_ON|BUTTON_OFF, BUTTON_ON },
84
85
86 LAST_ITEM_IN_LIST
87};
88
89static const struct button_mapping button_context_settings[] = {
90 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
91 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
92 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
93 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
94 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
95 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
96 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
97 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
98
99 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
100};
101
102static const struct button_mapping button_context_tree[] = {
103 { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON },
104 { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE },
105 { ACTION_NONE, BUTTON_ON, BUTTON_NONE },
106 { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON },
107 { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_ON|BUTTON_UP },
108 { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
109 { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN, BUTTON_ON },
110 { ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_ON|BUTTON_DOWN },
111 { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
112 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
113}; /* button_context_listtree */
114
115static const struct button_mapping button_context_tree_scroll_lr[] = {
116 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
117 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
118 { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
119 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
120 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
121 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
122 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
123 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
124 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
125 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1),
126};
127
128static const struct button_mapping button_context_yesno[] = {
129 { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
130
131 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
132};
133static const struct button_mapping button_context_quickscreen[] = {
134 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE },
135 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
136 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
137 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
138 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
139 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
140 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
141 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE },
143
144 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
145}; /* button_context_quickscreen */
146
147static const struct button_mapping button_context_pitchscreen[] = {
148 { ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
149 { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
150 { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
151 { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
152 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
153 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
154 { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
155 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
156 { ACTION_PS_TOGGLE_MODE, BUTTON_F1, BUTTON_NONE },
157 { ACTION_PS_RESET, BUTTON_ON, BUTTON_NONE },
158 { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE },
159
160 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
161}; /* button_context_pitchcreen */
162
163static const struct button_mapping button_context_recscreen[] = {
164 { ACTION_REC_PAUSE, BUTTON_SELECT, BUTTON_NONE },
165 { ACTION_REC_F2, BUTTON_F2, BUTTON_NONE },
166 { ACTION_REC_F3, BUTTON_F3, BUTTON_NONE },
167 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
168 { ACTION_SETTINGS_INC, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
169 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
170 { ACTION_SETTINGS_DEC, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
171
172 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
173}; /* button_context_recscreen */
174
175static const struct button_mapping button_context_keyboard[] = {
176 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
177 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
178 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
179 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
180 { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_NONE },
181 { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
182 { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_NONE },
183 { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
184 { ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
185 { ACTION_KBD_PAGE_FLIP, BUTTON_F1, BUTTON_NONE },
186 { ACTION_KBD_DONE, BUTTON_F2, BUTTON_NONE },
187 { ACTION_KBD_ABORT, BUTTON_OFF, BUTTON_NONE },
188 { ACTION_KBD_BACKSPACE, BUTTON_F3, BUTTON_NONE },
189 { ACTION_KBD_BACKSPACE, BUTTON_F3|BUTTON_REPEAT, BUTTON_NONE },
190 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
191 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
192 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
193 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
194
195 LAST_ITEM_IN_LIST
196}; /* button_context_keyboard */
197
198static const struct button_mapping button_context_bmark[] = {
199 { ACTION_BMS_DELETE, BUTTON_SELECT|BUTTON_ON, BUTTON_SELECT },
200 { ACTION_BMS_DELETE, BUTTON_SELECT|BUTTON_ON, BUTTON_ON },
201 { ACTION_BMS_EXIT, BUTTON_OFF, BUTTON_NONE },
202 { ACTION_BMS_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
203
204 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
205
206}; /* button_context_settings_bmark */
207
208static const struct button_mapping button_context_radio[] = {
209 { ACTION_FM_MENU, BUTTON_F1, BUTTON_NONE },
210 { ACTION_FM_PRESET, BUTTON_F2, BUTTON_NONE },
211 { ACTION_FM_RECORD, BUTTON_F3, BUTTON_NONE },
212 { ACTION_FM_FREEZE, BUTTON_SELECT, BUTTON_NONE },
213 { ACTION_FM_STOP, BUTTON_OFF, BUTTON_NONE },
214 { ACTION_FM_MODE, BUTTON_ON | BUTTON_REPEAT, BUTTON_ON },
215 { ACTION_FM_EXIT, BUTTON_ON | BUTTON_REL, BUTTON_ON },
216
217 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
218
219};
220
221const struct button_mapping* get_context_mapping( int context )
222{
223 switch( context )
224 {
225 case CONTEXT_WPS:
226 return button_context_wps;
227 case CONTEXT_SETTINGS_TIME:
228 case CONTEXT_SETTINGS:
229 return button_context_settings;
230
231 case CONTEXT_YESNOSCREEN:
232 return button_context_yesno;
233
234 case CONTEXT_PITCHSCREEN:
235 return button_context_pitchscreen;
236 case CONTEXT_BOOKMARKSCREEN:
237 return button_context_bmark;
238 case CONTEXT_TREE:
239 if (global_settings.hold_lr_for_scroll_in_list)
240 return button_context_tree_scroll_lr;
241 /* else fall through to CUSTOM|1 */
242 case CONTEXT_CUSTOM|1:
243 return button_context_tree;
244
245 case CONTEXT_QUICKSCREEN:
246 return button_context_quickscreen;
247
248 case CONTEXT_RECSCREEN:
249 return button_context_recscreen;
250 case CONTEXT_KEYBOARD:
251 return button_context_keyboard;
252 case CONTEXT_FM:
253 return button_context_radio;
254
255 case CONTEXT_STD:
256 case CONTEXT_LIST:
257 case CONTEXT_MAINMENU:
258 default:
259 return button_context_standard;
260 }
261}
diff --git a/apps/plugins/SUBDIRS b/apps/plugins/SUBDIRS
index c285a9e2d6..686c4674f3 100644
--- a/apps/plugins/SUBDIRS
+++ b/apps/plugins/SUBDIRS
@@ -29,7 +29,8 @@ pacbox
29#endif 29#endif
30 30
31/* For all the color targets apart from the Gigabeat */ 31/* For all the color targets apart from the Gigabeat */
32#if (defined(HAVE_LCD_COLOR) && !defined(TOSHIBA_GIGABEAT_F)) || (LCD_DEPTH == 2) 32#if (defined(HAVE_LCD_COLOR) && !defined(TOSHIBA_GIGABEAT_F)) || \
33 (LCD_DEPTH == 2) && !defined(ARCHOS_AV300)
33doom 34doom
34#endif 35#endif
35 36
diff --git a/apps/plugins/bitmaps/native/SOURCES b/apps/plugins/bitmaps/native/SOURCES
index 53a8b22b21..568597c95a 100644
--- a/apps/plugins/bitmaps/native/SOURCES
+++ b/apps/plugins/bitmaps/native/SOURCES
@@ -243,6 +243,11 @@ sudoku_inverse.160x128x2.bmp
243sudoku_start.220x176x16.bmp 243sudoku_start.220x176x16.bmp
244sudoku_normal.220x176x16.bmp 244sudoku_normal.220x176x16.bmp
245sudoku_inverse.220x176x16.bmp 245sudoku_inverse.220x176x16.bmp
246#elif (LCD_WIDTH >= 320) && (LCD_HEIGHT >= 240) && (LCD_DEPTH == 2)
247/* Temporary bitmaps for Archos AV300 */
248sudoku_start.320x240x16.bmp
249sudoku_normal.320x240x16.bmp
250sudoku_inverse.320x240x16.bmp
246#elif (LCD_WIDTH >= 320) && (LCD_HEIGHT >= 240) && (LCD_DEPTH == 16) 251#elif (LCD_WIDTH >= 320) && (LCD_HEIGHT >= 240) && (LCD_DEPTH == 16)
247sudoku_start.320x240x16.bmp 252sudoku_start.320x240x16.bmp
248sudoku_normal.320x240x16.bmp 253sudoku_normal.320x240x16.bmp
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c
index 2fd2c28ad2..40794241e6 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -35,6 +35,12 @@ PLUGIN_HEADER
35#define BOUNCE_QUIT (BUTTON_OFF | BUTTON_REL) 35#define BOUNCE_QUIT (BUTTON_OFF | BUTTON_REL)
36#define BOUNCE_MODE (BUTTON_ON | BUTTON_REL) 36#define BOUNCE_MODE (BUTTON_ON | BUTTON_REL)
37 37
38#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
39#define BOUNCE_UP BUTTON_UP
40#define BOUNCE_DOWN BUTTON_DOWN
41#define BOUNCE_QUIT (BUTTON_OFF | BUTTON_REL)
42#define BOUNCE_MODE (BUTTON_ON | BUTTON_REL)
43
38#elif CONFIG_KEYPAD == ONDIO_PAD 44#elif CONFIG_KEYPAD == ONDIO_PAD
39#define BOUNCE_UP BUTTON_UP 45#define BOUNCE_UP BUTTON_UP
40#define BOUNCE_DOWN BUTTON_DOWN 46#define BOUNCE_DOWN BUTTON_DOWN
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index 5bcecce33b..12ad2c0030 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -64,6 +64,19 @@ PLUGIN_HEADER
64#define SCROLL_FWD(x) (0) 64#define SCROLL_FWD(x) (0)
65#define SCROLL_BACK(x) (0) 65#define SCROLL_BACK(x) (0)
66 66
67#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
68
69#define QUIT BUTTON_OFF
70#define LEFT BUTTON_LEFT
71#define RIGHT BUTTON_RIGHT
72#define SELECT BUTTON_SELECT
73#define UP BUTTON_UP
74#define DOWN BUTTON_DOWN
75
76/* Only iPod have scroll events */
77#define SCROLL_FWD(x) (0)
78#define SCROLL_BACK(x) (0)
79
67#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || \ 80#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || \
68 (CONFIG_KEYPAD == IPOD_4G_PAD) 81 (CONFIG_KEYPAD == IPOD_4G_PAD)
69 82
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index 608af85938..eb1e613ff1 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -116,6 +116,15 @@ PLUGIN_HEADER
116#define CALCULATOR_OPERATORS BUTTON_F2 116#define CALCULATOR_OPERATORS BUTTON_F2
117#define CALCULATOR_CLEAR BUTTON_F1 117#define CALCULATOR_CLEAR BUTTON_F1
118 118
119#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
120#define CALCULATOR_UP BUTTON_UP
121#define CALCULATOR_DOWN BUTTON_DOWN
122#define CALCULATOR_QUIT BUTTON_OFF
123#define CALCULATOR_INPUT BUTTON_SELECT
124#define CALCULATOR_CALC BUTTON_F3
125#define CALCULATOR_OPERATORS BUTTON_F2
126#define CALCULATOR_CLEAR BUTTON_F1
127
119#elif CONFIG_KEYPAD == ONDIO_PAD 128#elif CONFIG_KEYPAD == ONDIO_PAD
120#define CALCULATOR_UP BUTTON_UP 129#define CALCULATOR_UP BUTTON_UP
121#define CALCULATOR_DOWN BUTTON_DOWN 130#define CALCULATOR_DOWN BUTTON_DOWN
diff --git a/apps/plugins/chessbox/chessbox.c b/apps/plugins/chessbox/chessbox.c
index 3a69fc999a..c6a79e4ec7 100644
--- a/apps/plugins/chessbox/chessbox.c
+++ b/apps/plugins/chessbox/chessbox.c
@@ -96,6 +96,17 @@ PLUGIN_HEADER
96#define CB_RESTART BUTTON_F3 96#define CB_RESTART BUTTON_F3
97#define CB_QUIT BUTTON_OFF 97#define CB_QUIT BUTTON_OFF
98 98
99#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
100#define CB_SELECT BUTTON_SELECT
101#define CB_UP BUTTON_UP
102#define CB_DOWN BUTTON_DOWN
103#define CB_LEFT BUTTON_LEFT
104#define CB_RIGHT BUTTON_RIGHT
105#define CB_PLAY BUTTON_ON
106#define CB_LEVEL BUTTON_F1
107#define CB_RESTART BUTTON_F3
108#define CB_QUIT BUTTON_OFF
109
99#elif CONFIG_KEYPAD == ONDIO_PAD 110#elif CONFIG_KEYPAD == ONDIO_PAD
100#define CB_SELECT_PRE BUTTON_MENU 111#define CB_SELECT_PRE BUTTON_MENU
101#define CB_SELECT (BUTTON_MENU|BUTTON_REL) 112#define CB_SELECT (BUTTON_MENU|BUTTON_REL)
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index c0da728446..5269e454f1 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -32,6 +32,17 @@ PLUGIN_HEADER
32#define CHC_SETTINGS_OK2 BUTTON_LEFT 32#define CHC_SETTINGS_OK2 BUTTON_LEFT
33#define CHC_SETTINGS_CANCEL BUTTON_OFF 33#define CHC_SETTINGS_CANCEL BUTTON_OFF
34 34
35#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
36#define CHC_QUIT BUTTON_OFF
37#define CHC_STARTSTOP BUTTON_SELECT
38#define CHC_RESET BUTTON_LEFT
39#define CHC_MENU BUTTON_F1
40#define CHC_SETTINGS_INC BUTTON_UP
41#define CHC_SETTINGS_DEC BUTTON_DOWN
42#define CHC_SETTINGS_OK BUTTON_SELECT
43#define CHC_SETTINGS_OK2 BUTTON_LEFT
44#define CHC_SETTINGS_CANCEL BUTTON_OFF
45
35#elif CONFIG_KEYPAD == ONDIO_PAD 46#elif CONFIG_KEYPAD == ONDIO_PAD
36#define CHC_QUIT BUTTON_OFF 47#define CHC_QUIT BUTTON_OFF
37#define CHC_STARTSTOP BUTTON_RIGHT 48#define CHC_STARTSTOP BUTTON_RIGHT
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index 6c6c9f44b6..44cc58c9d5 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -959,6 +959,18 @@ STATIC void chip8 (void)
959#define CHIP8_KEY8 BUTTON_DOWN 959#define CHIP8_KEY8 BUTTON_DOWN
960#define CHIP8_KEY9 BUTTON_ON 960#define CHIP8_KEY9 BUTTON_ON
961 961
962#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD /* only 9 out of 16 chip8 buttons */
963#define CHIP8_OFF BUTTON_OFF
964#define CHIP8_KEY1 BUTTON_F1
965#define CHIP8_KEY2 BUTTON_UP
966#define CHIP8_KEY3 BUTTON_F3
967#define CHIP8_KEY4 BUTTON_LEFT
968#define CHIP8_KEY5 BUTTON_SELECT
969#define CHIP8_KEY6 BUTTON_RIGHT
970#define CHIP8_KEY7 BUTTON_F2
971#define CHIP8_KEY8 BUTTON_DOWN
972#define CHIP8_KEY9 BUTTON_ON
973
962#elif CONFIG_KEYPAD == ONDIO_PAD /* even more limited */ 974#elif CONFIG_KEYPAD == ONDIO_PAD /* even more limited */
963#define CHIP8_OFF BUTTON_OFF 975#define CHIP8_OFF BUTTON_OFF
964#define CHIP8_KEY2 BUTTON_UP 976#define CHIP8_KEY2 BUTTON_UP
diff --git a/apps/plugins/clock.c b/apps/plugins/clock.c
index 569b201cab..28cd223795 100644
--- a/apps/plugins/clock.c
+++ b/apps/plugins/clock.c
@@ -134,6 +134,25 @@ PLUGIN_HEADER
134#define MENU_BUTTON_TEXT "PLAY" 134#define MENU_BUTTON_TEXT "PLAY"
135#define COUNTER_BUTTON_TEXT "ON" 135#define COUNTER_BUTTON_TEXT "ON"
136 136
137#elif (CONFIG_KEYPAD == ARCHOS_AV300_PAD)
138
139#define COUNTER_TOGGLE_BUTTON (BUTTON_ON|BUTTON_REL)
140#define COUNTER_RESET_BUTTON (BUTTON_ON|BUTTON_REPEAT)
141#define MENU_BUTTON BUTTON_SELECT
142#define ALT_MENU_BUTTON BUTTON_F1
143#define EXIT_BUTTON BUTTON_OFF
144#define MOVE_UP_BUTTON BUTTON_UP
145#define MOVE_DOWN_BUTTON BUTTON_DOWN
146#define CHANGE_UP_BUTTON BUTTON_RIGHT
147#define CHANGE_DOWN_BUTTON BUTTON_LEFT
148
149#define YESTEXT "Select"
150#define NAVI_BUTTON_TEXT_LEFT "LEFT"
151#define NAVI_BUTTON_TEXT_RIGHT "RIGHT"
152#define EXIT_BUTTON_TEXT "OFF"
153#define MENU_BUTTON_TEXT "SELECT"
154#define COUNTER_BUTTON_TEXT "ON"
155
137#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) 156#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD)
138 157
139#define COUNTER_TOGGLE_BUTTON (BUTTON_PLAY|BUTTON_REL) 158#define COUNTER_TOGGLE_BUTTON (BUTTON_PLAY|BUTTON_REL)
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index 00c9a3b606..57f1015368 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -41,6 +41,18 @@ PLUGIN_HEADER
41#define CUBE_PAUSE BUTTON_PLAY 41#define CUBE_PAUSE BUTTON_PLAY
42#define CUBE_HIGHSPEED BUTTON_ON 42#define CUBE_HIGHSPEED BUTTON_ON
43 43
44#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
45#define CUBE_QUIT BUTTON_OFF
46#define CUBE_X_INC BUTTON_RIGHT
47#define CUBE_X_DEC BUTTON_LEFT
48#define CUBE_Y_INC BUTTON_UP
49#define CUBE_Y_DEC BUTTON_DOWN
50#define CUBE_Z_INC BUTTON_F2
51#define CUBE_Z_DEC BUTTON_F1
52#define CUBE_MODE BUTTON_F3
53#define CUBE_PAUSE BUTTON_SELECT
54#define CUBE_HIGHSPEED BUTTON_ON
55
44#elif CONFIG_KEYPAD == PLAYER_PAD 56#elif CONFIG_KEYPAD == PLAYER_PAD
45#define CUBE_QUIT BUTTON_STOP 57#define CUBE_QUIT BUTTON_STOP
46#define CUBE_X_INC BUTTON_RIGHT 58#define CUBE_X_INC BUTTON_RIGHT
diff --git a/apps/plugins/dice.c b/apps/plugins/dice.c
index 99c88f431d..8638cb8cc3 100644
--- a/apps/plugins/dice.c
+++ b/apps/plugins/dice.c
@@ -69,6 +69,15 @@ use stop to exit
69#define DICE_BUTTON_ON BUTTON_ON 69#define DICE_BUTTON_ON BUTTON_ON
70#define DICE_BUTTON_SELECT BUTTON_PLAY 70#define DICE_BUTTON_SELECT BUTTON_PLAY
71 71
72#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
73#define DICE_BUTTON_UP BUTTON_UP
74#define DICE_BUTTON_DOWN BUTTON_DOWN
75#define DICE_BUTTON_LEFT BUTTON_LEFT
76#define DICE_BUTTON_RIGHT BUTTON_RIGHT
77#define DICE_BUTTON_OFF BUTTON_OFF
78#define DICE_BUTTON_ON BUTTON_ON
79#define DICE_BUTTON_SELECT BUTTON_SELECT
80
72#elif CONFIG_KEYPAD == ONDIO_PAD 81#elif CONFIG_KEYPAD == ONDIO_PAD
73#define DICE_BUTTON_UP BUTTON_UP 82#define DICE_BUTTON_UP BUTTON_UP
74#define DICE_BUTTON_DOWN BUTTON_DOWN 83#define DICE_BUTTON_DOWN BUTTON_DOWN
diff --git a/apps/plugins/disktidy.c b/apps/plugins/disktidy.c
index 7af75f545b..88cc39d6cc 100644
--- a/apps/plugins/disktidy.c
+++ b/apps/plugins/disktidy.c
@@ -45,6 +45,12 @@ enum tidy_system
45#define TIDY_LEFT BUTTON_LEFT 45#define TIDY_LEFT BUTTON_LEFT
46#define TIDY_RIGHT BUTTON_RIGHT 46#define TIDY_RIGHT BUTTON_RIGHT
47 47
48#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
49#define TIDY_DO BUTTON_ON
50#define TIDY_STOP BUTTON_OFF
51#define TIDY_LEFT BUTTON_LEFT
52#define TIDY_RIGHT BUTTON_RIGHT
53
48#elif CONFIG_KEYPAD == ONDIO_PAD 54#elif CONFIG_KEYPAD == ONDIO_PAD
49#define TIDY_DO BUTTON_MENU 55#define TIDY_DO BUTTON_MENU
50#define TIDY_STOP BUTTON_OFF 56#define TIDY_STOP BUTTON_OFF
@@ -369,6 +375,9 @@ void tidy_lcd_menu(enum tidy_system system)
369#if CONFIG_KEYPAD == RECORDER_PAD 375#if CONFIG_KEYPAD == RECORDER_PAD
370 rb->lcd_puts(0, 0, "[On] to clean up"); 376 rb->lcd_puts(0, 0, "[On] to clean up");
371 rb->lcd_puts(0, 1, "[Off] to exit/abort"); 377 rb->lcd_puts(0, 1, "[Off] to exit/abort");
378#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
379 rb->lcd_puts(0, 0, "[On] to clean up");
380 rb->lcd_puts(0, 1, "[Off] to exit/abort");
372#elif CONFIG_KEYPAD == ONDIO_PAD 381#elif CONFIG_KEYPAD == ONDIO_PAD
373 rb->lcd_puts(0, 0, "[Menu] to clean up"); 382 rb->lcd_puts(0, 0, "[Menu] to clean up");
374 rb->lcd_puts(0, 1, "[Off] to exit/abort"); 383 rb->lcd_puts(0, 1, "[Off] to exit/abort");
diff --git a/apps/plugins/fire.c b/apps/plugins/fire.c
index d03afa2aef..2e762cb9e9 100644
--- a/apps/plugins/fire.c
+++ b/apps/plugins/fire.c
@@ -59,6 +59,13 @@ static unsigned char draw_buffer[8*LCD_WIDTH];
59#define FIRE_INCREASE_MULT BUTTON_UP 59#define FIRE_INCREASE_MULT BUTTON_UP
60#define FIRE_DECREASE_MULT BUTTON_DOWN 60#define FIRE_DECREASE_MULT BUTTON_DOWN
61 61
62#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
63#define FIRE_QUIT BUTTON_OFF
64#define FIRE_SWITCH_FLAMES_TYPE BUTTON_ON
65#define FIRE_SWITCH_FLAMES_MOVING BUTTON_SELECT
66#define FIRE_INCREASE_MULT BUTTON_UP
67#define FIRE_DECREASE_MULT BUTTON_DOWN
68
62#elif CONFIG_KEYPAD == ONDIO_PAD 69#elif CONFIG_KEYPAD == ONDIO_PAD
63#define FIRE_QUIT BUTTON_OFF 70#define FIRE_QUIT BUTTON_OFF
64#define FIRE_SWITCH_FLAMES_TYPE BUTTON_MENU 71#define FIRE_SWITCH_FLAMES_TYPE BUTTON_MENU
diff --git a/apps/plugins/fireworks.c b/apps/plugins/fireworks.c
index 5a4632749a..8b8ee3398b 100644
--- a/apps/plugins/fireworks.c
+++ b/apps/plugins/fireworks.c
@@ -39,6 +39,9 @@ static struct plugin_api* rb;
39#elif (CONFIG_KEYPAD == RECORDER_PAD) 39#elif (CONFIG_KEYPAD == RECORDER_PAD)
40#define BTN_MENU BUTTON_OFF 40#define BTN_MENU BUTTON_OFF
41#define BTN_FIRE BUTTON_PLAY 41#define BTN_FIRE BUTTON_PLAY
42#elif (CONFIG_KEYPAD == ARCHOS_AV300_PAD)
43#define BTN_MENU BUTTON_OFF
44#define BTN_FIRE BUTTON_SELECT
42#elif (CONFIG_KEYPAD == ONDIO_PAD) 45#elif (CONFIG_KEYPAD == ONDIO_PAD)
43#define BTN_MENU BUTTON_MENU 46#define BTN_MENU BUTTON_MENU
44#define BTN_FIRE BUTTON_UP 47#define BTN_FIRE BUTTON_UP
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 0dd2fa5143..bdf15b7bff 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -30,6 +30,15 @@ PLUGIN_HEADER
30#define FLIPIT_STEP_BY_STEP BUTTON_F3 30#define FLIPIT_STEP_BY_STEP BUTTON_F3
31#define FLIPIT_TOGGLE BUTTON_PLAY 31#define FLIPIT_TOGGLE BUTTON_PLAY
32 32
33#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
34#define FLIPIT_UP BUTTON_UP
35#define FLIPIT_DOWN BUTTON_DOWN
36#define FLIPIT_QUIT BUTTON_OFF
37#define FLIPIT_SHUFFLE BUTTON_F1
38#define FLIPIT_SOLVE BUTTON_F2
39#define FLIPIT_STEP_BY_STEP BUTTON_F3
40#define FLIPIT_TOGGLE BUTTON_SELECT
41
33#elif CONFIG_KEYPAD == PLAYER_PAD 42#elif CONFIG_KEYPAD == PLAYER_PAD
34#define FLIPIT_UP_PRE BUTTON_ON 43#define FLIPIT_UP_PRE BUTTON_ON
35#define FLIPIT_UP (BUTTON_ON | BUTTON_REL) 44#define FLIPIT_UP (BUTTON_ON | BUTTON_REL)
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index 46a97f8d07..ba74879359 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -35,6 +35,14 @@ PLUGIN_HEADER
35#define JEWELS_SELECT BUTTON_PLAY 35#define JEWELS_SELECT BUTTON_PLAY
36#define JEWELS_CANCEL BUTTON_OFF 36#define JEWELS_CANCEL BUTTON_OFF
37 37
38#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
39#define JEWELS_UP BUTTON_UP
40#define JEWELS_DOWN BUTTON_DOWN
41#define JEWELS_LEFT BUTTON_LEFT
42#define JEWELS_RIGHT BUTTON_RIGHT
43#define JEWELS_SELECT BUTTON_SELECT
44#define JEWELS_CANCEL BUTTON_OFF
45
38#elif CONFIG_KEYPAD == ONDIO_PAD 46#elif CONFIG_KEYPAD == ONDIO_PAD
39#define JEWELS_UP BUTTON_UP 47#define JEWELS_UP BUTTON_UP
40#define JEWELS_DOWN BUTTON_DOWN 48#define JEWELS_DOWN BUTTON_DOWN
diff --git a/apps/plugins/jpeg.c b/apps/plugins/jpeg.c
index f36bdd1bb3..8b90c21d61 100644
--- a/apps/plugins/jpeg.c
+++ b/apps/plugins/jpeg.c
@@ -45,6 +45,16 @@ PLUGIN_HEADER
45#define JPEG_PREVIOUS BUTTON_F2 45#define JPEG_PREVIOUS BUTTON_F2
46#define JPEG_MENU BUTTON_OFF 46#define JPEG_MENU BUTTON_OFF
47 47
48#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
49#define JPEG_ZOOM_IN BUTTON_SELECT
50#define JPEG_ZOOM_OUT BUTTON_ON
51#define JPEG_UP BUTTON_UP
52#define JPEG_DOWN BUTTON_DOWN
53#define JPEG_LEFT BUTTON_LEFT
54#define JPEG_RIGHT BUTTON_RIGHT
55#define JPEG_NEXT BUTTON_F3
56#define JPEG_PREVIOUS BUTTON_F2
57#define JPEG_MENU BUTTON_OFF
48 58
49#elif CONFIG_KEYPAD == ONDIO_PAD 59#elif CONFIG_KEYPAD == ONDIO_PAD
50#define JPEG_ZOOM_PRE BUTTON_MENU 60#define JPEG_ZOOM_PRE BUTTON_MENU
diff --git a/apps/plugins/lib/pluginlib_actions.h b/apps/plugins/lib/pluginlib_actions.h
index b78163f25e..7ce43ce9e4 100644
--- a/apps/plugins/lib/pluginlib_actions.h
+++ b/apps/plugins/lib/pluginlib_actions.h
@@ -52,6 +52,7 @@ static const struct button_mapping generic_directions[] =
52 || (CONFIG_KEYPAD == IAUDIO_X5_PAD) \ 52 || (CONFIG_KEYPAD == IAUDIO_X5_PAD) \
53 || (CONFIG_KEYPAD == GIGABEAT_PAD) \ 53 || (CONFIG_KEYPAD == GIGABEAT_PAD) \
54 || (CONFIG_KEYPAD == RECORDER_PAD) \ 54 || (CONFIG_KEYPAD == RECORDER_PAD) \
55 || (CONFIG_KEYPAD == ARCHOS_AV300_PAD) \
55 || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) 56 || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD)
56 { PLA_UP, BUTTON_UP, BUTTON_NONE}, 57 { PLA_UP, BUTTON_UP, BUTTON_NONE},
57 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, 58 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE},
@@ -145,6 +146,13 @@ static const struct button_mapping generic_left_right_fire[] =
145 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 146 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
146 { PLA_FIRE, BUTTON_PLAY, BUTTON_NONE}, 147 { PLA_FIRE, BUTTON_PLAY, BUTTON_NONE},
147 { PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 148 { PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
149#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
150 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
151 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
152 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
153 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
154 { PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
155 { PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_NONE},
148#elif (CONFIG_KEYPAD == SANSA_E200_PAD) 156#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
149 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, 157 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
150 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, 158 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
@@ -199,6 +207,12 @@ static const struct button_mapping generic_actions[] =
199 {PLA_MENU, BUTTON_F1, BUTTON_NONE}, 207 {PLA_MENU, BUTTON_F1, BUTTON_NONE},
200 {PLA_FIRE, BUTTON_PLAY, BUTTON_NONE}, 208 {PLA_FIRE, BUTTON_PLAY, BUTTON_NONE},
201 {PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 209 {PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
210#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
211 {PLA_QUIT, BUTTON_OFF, BUTTON_NONE},
212 {PLA_START, BUTTON_ON, BUTTON_NONE},
213 {PLA_MENU, BUTTON_F1, BUTTON_NONE},
214 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
215 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
202#elif CONFIG_KEYPAD == ONDIO_PAD 216#elif CONFIG_KEYPAD == ONDIO_PAD
203 {PLA_QUIT, BUTTON_OFF, BUTTON_NONE}, 217 {PLA_QUIT, BUTTON_OFF, BUTTON_NONE},
204 {PLA_START, BUTTON_MENU, BUTTON_NONE}, 218 {PLA_START, BUTTON_MENU, BUTTON_NONE},
diff --git a/apps/plugins/mandelbrot.c b/apps/plugins/mandelbrot.c
index 69c0fca98b..113737ba56 100644
--- a/apps/plugins/mandelbrot.c
+++ b/apps/plugins/mandelbrot.c
@@ -39,6 +39,18 @@ PLUGIN_HEADER
39#define MANDELBROT_MAXITER_DEC BUTTON_F1 39#define MANDELBROT_MAXITER_DEC BUTTON_F1
40#define MANDELBROT_RESET BUTTON_F3 40#define MANDELBROT_RESET BUTTON_F3
41 41
42#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
43#define MANDELBROT_QUIT BUTTON_OFF
44#define MANDELBROT_UP BUTTON_UP
45#define MANDELBROT_DOWN BUTTON_DOWN
46#define MANDELBROT_LEFT BUTTON_LEFT
47#define MANDELBROT_RIGHT BUTTON_RIGHT
48#define MANDELBROT_ZOOM_IN BUTTON_SELECT
49#define MANDELBROT_ZOOM_OUT BUTTON_ON
50#define MANDELBROT_MAXITER_INC BUTTON_F2
51#define MANDELBROT_MAXITER_DEC BUTTON_F1
52#define MANDELBROT_RESET BUTTON_F3
53
42#elif CONFIG_KEYPAD == ONDIO_PAD 54#elif CONFIG_KEYPAD == ONDIO_PAD
43#define MANDELBROT_QUIT BUTTON_OFF 55#define MANDELBROT_QUIT BUTTON_OFF
44#define MANDELBROT_UP BUTTON_UP 56#define MANDELBROT_UP BUTTON_UP
diff --git a/apps/plugins/mazezam.c b/apps/plugins/mazezam.c
index 2a8afc37ab..cd7446eee2 100644
--- a/apps/plugins/mazezam.c
+++ b/apps/plugins/mazezam.c
@@ -38,6 +38,18 @@ static struct plugin_api* rb;
38#define MAZEZAM_QUIT BUTTON_OFF 38#define MAZEZAM_QUIT BUTTON_OFF
39#define MAZEZAM_QUIT_KEYNAME "[OFF]" 39#define MAZEZAM_QUIT_KEYNAME "[OFF]"
40 40
41#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
42#define MAZEZAM_UP BUTTON_UP
43#define MAZEZAM_DOWN BUTTON_DOWN
44#define MAZEZAM_LEFT BUTTON_LEFT
45#define MAZEZAM_RIGHT BUTTON_RIGHT
46#define MAZEZAM_SELECT BUTTON_SELECT
47
48#define MAZEZAM_RETRY BUTTON_F1
49#define MAZEZAM_RETRY_KEYNAME "[F1]"
50#define MAZEZAM_QUIT BUTTON_OFF
51#define MAZEZAM_QUIT_KEYNAME "[OFF]"
52
41#elif CONFIG_KEYPAD == ONDIO_PAD 53#elif CONFIG_KEYPAD == ONDIO_PAD
42#define MAZEZAM_UP BUTTON_UP 54#define MAZEZAM_UP BUTTON_UP
43#define MAZEZAM_DOWN BUTTON_DOWN 55#define MAZEZAM_DOWN BUTTON_DOWN
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 4859e4772f..2500fed8ce 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -45,6 +45,19 @@ enum minesweeper_status {
45# define MINESWP_RIGHT (BUTTON_F1 | BUTTON_RIGHT) 45# define MINESWP_RIGHT (BUTTON_F1 | BUTTON_RIGHT)
46# define MINESWP_LEFT (BUTTON_F1 | BUTTON_LEFT) 46# define MINESWP_LEFT (BUTTON_F1 | BUTTON_LEFT)
47 47
48#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
49# define MINESWP_UP BUTTON_UP
50# define MINESWP_DOWN BUTTON_DOWN
51# define MINESWP_QUIT BUTTON_OFF
52# define MINESWP_START BUTTON_ON
53# define MINESWP_TOGGLE BUTTON_SELECT
54# define MINESWP_TOGGLE2 BUTTON_F1
55# define MINESWP_DISCOVER BUTTON_ON
56# define MINESWP_DISCOVER2 BUTTON_F2
57# define MINESWP_INFO BUTTON_F3
58# define MINESWP_RIGHT (BUTTON_F1 | BUTTON_RIGHT)
59# define MINESWP_LEFT (BUTTON_F1 | BUTTON_LEFT)
60
48#elif CONFIG_KEYPAD == ONDIO_PAD 61#elif CONFIG_KEYPAD == ONDIO_PAD
49# define MINESWP_UP BUTTON_UP 62# define MINESWP_UP BUTTON_UP
50# define MINESWP_DOWN BUTTON_DOWN 63# define MINESWP_DOWN BUTTON_DOWN
@@ -423,6 +436,8 @@ enum minesweeper_status menu( void )
423 rb->lcd_puts( 0, 6, 436 rb->lcd_puts( 0, 6,
424#if CONFIG_KEYPAD == RECORDER_PAD 437#if CONFIG_KEYPAD == RECORDER_PAD
425 "ON to start" 438 "ON to start"
439#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
440 "ON to start"
426#elif CONFIG_KEYPAD == ONDIO_PAD 441#elif CONFIG_KEYPAD == ONDIO_PAD
427 "MODE to start" 442 "MODE to start"
428#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) \ 443#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) \
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c
index b5f8594c4f..dca2c304b0 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -46,6 +46,11 @@ PLUGIN_HEADER
46#define MOSAIQUE_SPEED BUTTON_F1 46#define MOSAIQUE_SPEED BUTTON_F1
47#define MOSAIQUE_RESTART BUTTON_PLAY 47#define MOSAIQUE_RESTART BUTTON_PLAY
48 48
49#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
50#define MOSAIQUE_QUIT BUTTON_OFF
51#define MOSAIQUE_SPEED BUTTON_F1
52#define MOSAIQUE_RESTART BUTTON_SELECT
53
49#elif CONFIG_KEYPAD == PLAYER_PAD 54#elif CONFIG_KEYPAD == PLAYER_PAD
50#define MOSAIQUE_QUIT BUTTON_STOP 55#define MOSAIQUE_QUIT BUTTON_STOP
51#define MOSAIQUE_SPEED BUTTON_MENU 56#define MOSAIQUE_SPEED BUTTON_MENU
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index f8564b211a..c9120e4fe5 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -39,6 +39,17 @@ PLUGIN_HEADER
39#define OSCILLOSCOPE_VOL_UP BUTTON_UP 39#define OSCILLOSCOPE_VOL_UP BUTTON_UP
40#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN 40#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
41 41
42#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
43#define OSCILLOSCOPE_QUIT BUTTON_OFF
44#define OSCILLOSCOPE_DRAWMODE BUTTON_F1
45#define OSCILLOSCOPE_ADVMODE BUTTON_F2
46#define OSCILLOSCOPE_ORIENTATION BUTTON_F3
47#define OSCILLOSCOPE_PAUSE BUTTON_SELECT
48#define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT
49#define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT
50#define OSCILLOSCOPE_VOL_UP BUTTON_UP
51#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
52
42#elif CONFIG_KEYPAD == ONDIO_PAD 53#elif CONFIG_KEYPAD == ONDIO_PAD
43#define OSCILLOSCOPE_QUIT BUTTON_OFF 54#define OSCILLOSCOPE_QUIT BUTTON_OFF
44#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_MENU 55#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_MENU
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index 5da61f5947..b257a3a539 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -44,6 +44,14 @@ PLUGIN_HEADER
44#define PONG_RIGHT_UP BUTTON_F3 44#define PONG_RIGHT_UP BUTTON_F3
45#define PONG_RIGHT_DOWN BUTTON_RIGHT 45#define PONG_RIGHT_DOWN BUTTON_RIGHT
46 46
47#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
48#define PONG_QUIT BUTTON_OFF
49#define PONG_PAUSE BUTTON_ON
50#define PONG_LEFT_UP BUTTON_F1
51#define PONG_LEFT_DOWN BUTTON_LEFT
52#define PONG_RIGHT_UP BUTTON_F3
53#define PONG_RIGHT_DOWN BUTTON_RIGHT
54
47#elif CONFIG_KEYPAD == ONDIO_PAD 55#elif CONFIG_KEYPAD == ONDIO_PAD
48#define PONG_QUIT BUTTON_OFF 56#define PONG_QUIT BUTTON_OFF
49#define PONG_PAUSE BUTTON_RIGHT 57#define PONG_PAUSE BUTTON_RIGHT
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index ef6fcafcd8..b77c9b1143 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -63,6 +63,17 @@ PLUGIN_HEADER
63#define ROCKBLOX_DROP BUTTON_ON 63#define ROCKBLOX_DROP BUTTON_ON
64#define ROCKBLOX_RESTART BUTTON_F1 64#define ROCKBLOX_RESTART BUTTON_F1
65 65
66#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
67
68#define ROCKBLOX_OFF BUTTON_OFF
69#define ROCKBLOX_ROTATE_RIGHT BUTTON_UP
70#define ROCKBLOX_ROTATE_LEFT BUTTON_SELECT
71#define ROCKBLOX_DOWN BUTTON_DOWN
72#define ROCKBLOX_LEFT BUTTON_LEFT
73#define ROCKBLOX_RIGHT BUTTON_RIGHT
74#define ROCKBLOX_DROP BUTTON_ON
75#define ROCKBLOX_RESTART BUTTON_F1
76
66#elif CONFIG_KEYPAD == PLAYER_PAD 77#elif CONFIG_KEYPAD == PLAYER_PAD
67 78
68#define ROCKBLOX_OFF BUTTON_STOP 79#define ROCKBLOX_OFF BUTTON_STOP
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index 2fe226c9db..1fccdade12 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -29,6 +29,13 @@ PLUGIN_HEADER
29#define PUZZLE_SHUFFLE BUTTON_F1 29#define PUZZLE_SHUFFLE BUTTON_F1
30#define PUZZLE_PICTURE BUTTON_F2 30#define PUZZLE_PICTURE BUTTON_F2
31 31
32#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
33#define PUZZLE_QUIT BUTTON_OFF
34#define PUZZLE_UP BUTTON_UP
35#define PUZZLE_DOWN BUTTON_DOWN
36#define PUZZLE_SHUFFLE BUTTON_F1
37#define PUZZLE_PICTURE BUTTON_F2
38
32#elif CONFIG_KEYPAD == ONDIO_PAD 39#elif CONFIG_KEYPAD == ONDIO_PAD
33#define PUZZLE_QUIT BUTTON_OFF 40#define PUZZLE_QUIT BUTTON_OFF
34#define PUZZLE_UP BUTTON_UP 41#define PUZZLE_UP BUTTON_UP
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index 6b27c04d6e..6cf197b4b0 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -42,6 +42,12 @@ PLUGIN_HEADER
42#define SNAKE_DOWN BUTTON_DOWN 42#define SNAKE_DOWN BUTTON_DOWN
43#define SNAKE_PLAYPAUSE BUTTON_PLAY 43#define SNAKE_PLAYPAUSE BUTTON_PLAY
44 44
45#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
46#define SNAKE_QUIT BUTTON_OFF
47#define SNAKE_UP BUTTON_UP
48#define SNAKE_DOWN BUTTON_DOWN
49#define SNAKE_PLAYPAUSE BUTTON_SELECT
50
45#elif CONFIG_KEYPAD == ONDIO_PAD 51#elif CONFIG_KEYPAD == ONDIO_PAD
46#define SNAKE_QUIT BUTTON_OFF 52#define SNAKE_QUIT BUTTON_OFF
47#define SNAKE_UP BUTTON_UP 53#define SNAKE_UP BUTTON_UP
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index adcf3ea17a..7a017e4742 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -157,6 +157,18 @@ PLUGIN_HEADER
157#define SNAKE2_PLAYPAUSE BUTTON_PLAY 157#define SNAKE2_PLAYPAUSE BUTTON_PLAY
158#define SNAKE2_PLAYPAUSE_TEXT "Play" 158#define SNAKE2_PLAYPAUSE_TEXT "Play"
159 159
160#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
161#define SNAKE2_UP BUTTON_UP
162#define SNAKE2_DOWN BUTTON_DOWN
163#define SNAKE2_QUIT BUTTON_OFF
164#define SNAKE2_LEVEL_UP BUTTON_UP
165#define SNAKE2_LEVEL_DOWN BUTTON_DOWN
166#define SNAKE2_MAZE_NEXT BUTTON_RIGHT
167#define SNAKE2_MAZE_LAST BUTTON_LEFT
168#define SNAKE2_SELECT_TYPE BUTTON_F3
169#define SNAKE2_PLAYPAUSE BUTTON_SELECT
170#define SNAKE2_PLAYPAUSE_TEXT "Select"
171
160#elif CONFIG_KEYPAD == ONDIO_PAD 172#elif CONFIG_KEYPAD == ONDIO_PAD
161#define SNAKE2_UP BUTTON_UP 173#define SNAKE2_UP BUTTON_UP
162#define SNAKE2_DOWN BUTTON_DOWN 174#define SNAKE2_DOWN BUTTON_DOWN
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index fbbbf3ea06..b88df504d3 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -50,6 +50,15 @@ extern const fb_data sokoban_tiles[];
50#define SOKOBAN_LEVEL_DOWN BUTTON_F1 50#define SOKOBAN_LEVEL_DOWN BUTTON_F1
51#define SOKOBAN_LEVEL_REPEAT BUTTON_F2 51#define SOKOBAN_LEVEL_REPEAT BUTTON_F2
52 52
53#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
54#define SOKOBAN_UP BUTTON_UP
55#define SOKOBAN_DOWN BUTTON_DOWN
56#define SOKOBAN_QUIT BUTTON_OFF
57#define SOKOBAN_UNDO BUTTON_ON
58#define SOKOBAN_LEVEL_UP BUTTON_F3
59#define SOKOBAN_LEVEL_DOWN BUTTON_F1
60#define SOKOBAN_LEVEL_REPEAT BUTTON_F2
61
53#elif CONFIG_KEYPAD == ONDIO_PAD 62#elif CONFIG_KEYPAD == ONDIO_PAD
54#define SOKOBAN_UP BUTTON_UP 63#define SOKOBAN_UP BUTTON_UP
55#define SOKOBAN_DOWN BUTTON_DOWN 64#define SOKOBAN_DOWN BUTTON_DOWN
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 45e18834f3..835c3ab906 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -64,6 +64,23 @@ static struct plugin_api* rb;
64# define HK_CUR2STACK "F2" 64# define HK_CUR2STACK "F2"
65# define HK_REM2STACK "F3" 65# define HK_REM2STACK "F3"
66 66
67#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
68# define SOL_QUIT BUTTON_OFF
69# define SOL_UP BUTTON_UP
70# define SOL_DOWN BUTTON_DOWN
71# define SOL_LEFT BUTTON_LEFT
72# define SOL_RIGHT BUTTON_RIGHT
73# define SOL_MOVE BUTTON_ON
74# define SOL_DRAW BUTTON_F1
75# define SOL_REM2CUR BUTTON_SELECT
76# define SOL_CUR2STACK BUTTON_F2
77# define SOL_REM2STACK BUTTON_F3
78# define HK_MOVE "ON"
79# define HK_DRAW "F1"
80# define HK_REM2CUR "SELECT"
81# define HK_CUR2STACK "F2"
82# define HK_REM2STACK "F3"
83
67#elif CONFIG_KEYPAD == ONDIO_PAD 84#elif CONFIG_KEYPAD == ONDIO_PAD
68# define SOL_QUIT BUTTON_OFF 85# define SOL_QUIT BUTTON_OFF
69# define SOL_UP_PRE BUTTON_UP 86# define SOL_UP_PRE BUTTON_UP
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 673c931810..0143af97b7 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -38,6 +38,19 @@ static struct plugin_api* rb; /* global api struct pointer */
38#define AST_FIRE BUTTON_PLAY 38#define AST_FIRE BUTTON_PLAY
39#define AST_FIRE_REP BUTTON_PLAY | BUTTON_REPEAT 39#define AST_FIRE_REP BUTTON_PLAY | BUTTON_REPEAT
40 40
41#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
42#define AST_PAUSE BUTTON_ON
43#define AST_QUIT BUTTON_OFF
44#define AST_THRUST_REP BUTTON_UP | BUTTON_REPEAT
45#define AST_THRUST BUTTON_UP
46#define AST_HYPERSPACE BUTTON_DOWN
47#define AST_LEFT BUTTON_LEFT
48#define AST_LEFT_REP BUTTON_LEFT | BUTTON_REPEAT
49#define AST_RIGHT BUTTON_RIGHT
50#define AST_RIGHT_REP (BUTTON_RIGHT | BUTTON_REPEAT)
51#define AST_FIRE BUTTON_SELECT
52#define AST_FIRE_REP BUTTON_SELECT | BUTTON_REPEAT
53
41#elif CONFIG_KEYPAD == ONDIO_PAD 54#elif CONFIG_KEYPAD == ONDIO_PAD
42#define AST_PAUSE (BUTTON_MENU | BUTTON_OFF) 55#define AST_PAUSE (BUTTON_MENU | BUTTON_OFF)
43#define AST_QUIT BUTTON_OFF 56#define AST_QUIT BUTTON_OFF
@@ -147,6 +160,7 @@ static struct plugin_api* rb; /* global api struct pointer */
147 (CONFIG_KEYPAD == IPOD_3G_PAD) || \ 160 (CONFIG_KEYPAD == IPOD_3G_PAD) || \
148 (CONFIG_KEYPAD == IPOD_4G_PAD) || \ 161 (CONFIG_KEYPAD == IPOD_4G_PAD) || \
149 (CONFIG_KEYPAD == GIGABEAT_PAD)|| \ 162 (CONFIG_KEYPAD == GIGABEAT_PAD)|| \
163 (CONFIG_KEYPAD == ARCHOS_AV300_PAD)|| \
150 (CONFIG_KEYPAD == IRIVER_H10_PAD) 164 (CONFIG_KEYPAD == IRIVER_H10_PAD)
151 #define ENEMY_MISSILE_SURVIVAL_LENGTH 140 165 #define ENEMY_MISSILE_SURVIVAL_LENGTH 140
152 #define MISSILE_SURVIVAL_LENGTH 40 166 #define MISSILE_SURVIVAL_LENGTH 40
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 60debc5000..0287794031 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -71,6 +71,19 @@ PLUGIN_HEADER
71#define STAR_MENU_RUN2 BUTTON_RIGHT 71#define STAR_MENU_RUN2 BUTTON_RIGHT
72#define STAR_MENU_RUN3 BUTTON_ON 72#define STAR_MENU_RUN3 BUTTON_ON
73 73
74#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
75#define STAR_QUIT BUTTON_OFF
76#define STAR_UP BUTTON_UP
77#define STAR_DOWN BUTTON_DOWN
78#define STAR_TOGGLE_CONTROL BUTTON_ON
79#define STAR_TOGGLE_CONTROL2 BUTTON_SELECT
80#define STAR_LEVEL_UP BUTTON_F3
81#define STAR_LEVEL_DOWN BUTTON_F1
82#define STAR_LEVEL_REPEAT BUTTON_F2
83#define STAR_MENU_RUN BUTTON_SELECT
84#define STAR_MENU_RUN2 BUTTON_RIGHT
85#define STAR_MENU_RUN3 BUTTON_ON
86
74#elif CONFIG_KEYPAD == ONDIO_PAD 87#elif CONFIG_KEYPAD == ONDIO_PAD
75#define STAR_QUIT BUTTON_OFF 88#define STAR_QUIT BUTTON_OFF
76#define STAR_UP BUTTON_UP 89#define STAR_UP BUTTON_UP
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c
index 8b02152a1b..b6a824e208 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -32,7 +32,8 @@ static int fontwidth, fontheight;
32#define STATS_STOP BUTTON_STOP 32#define STATS_STOP BUTTON_STOP
33 33
34#elif (CONFIG_KEYPAD == RECORDER_PAD) \ 34#elif (CONFIG_KEYPAD == RECORDER_PAD) \
35 || (CONFIG_KEYPAD == ONDIO_PAD) 35 || (CONFIG_KEYPAD == ONDIO_PAD) \
36 || (CONFIG_KEYPAD == ARCHOS_AV300_PAD)
36#define STATS_STOP BUTTON_OFF 37#define STATS_STOP BUTTON_OFF
37 38
38#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) \ 39#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) \
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index f1e7355e65..d113af7f25 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -41,6 +41,13 @@ PLUGIN_HEADER
41#define STOPWATCH_LAP_TIMER BUTTON_ON 41#define STOPWATCH_LAP_TIMER BUTTON_ON
42#define STOPWATCH_SCROLL_UP BUTTON_UP 42#define STOPWATCH_SCROLL_UP BUTTON_UP
43#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN 43#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
44#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
45#define STOPWATCH_QUIT BUTTON_OFF
46#define STOPWATCH_START_STOP BUTTON_SELECT
47#define STOPWATCH_RESET_TIMER BUTTON_LEFT
48#define STOPWATCH_LAP_TIMER BUTTON_ON
49#define STOPWATCH_SCROLL_UP BUTTON_UP
50#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
44#elif CONFIG_KEYPAD == ONDIO_PAD 51#elif CONFIG_KEYPAD == ONDIO_PAD
45#define STOPWATCH_QUIT BUTTON_OFF 52#define STOPWATCH_QUIT BUTTON_OFF
46#define STOPWATCH_START_STOP BUTTON_RIGHT 53#define STOPWATCH_START_STOP BUTTON_RIGHT
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index fefaf9f57d..2628e3254f 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -35,6 +35,16 @@
35#define SUDOKU_BUTTON_MENU BUTTON_F1 35#define SUDOKU_BUTTON_MENU BUTTON_F1
36#define SUDOKU_BUTTON_POSSIBLE BUTTON_F2 36#define SUDOKU_BUTTON_POSSIBLE BUTTON_F2
37 37
38#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
39#define SUDOKU_BUTTON_QUIT BUTTON_OFF
40#define SUDOKU_BUTTON_UP BUTTON_UP
41#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
42#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
43#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
44#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT
45#define SUDOKU_BUTTON_MENU BUTTON_F1
46#define SUDOKU_BUTTON_POSSIBLE BUTTON_F2
47
38#elif CONFIG_KEYPAD == ONDIO_PAD 48#elif CONFIG_KEYPAD == ONDIO_PAD
39#define SUDOKU_BUTTON_QUIT BUTTON_OFF 49#define SUDOKU_BUTTON_QUIT BUTTON_OFF
40#define SUDOKU_BUTTON_UP BUTTON_UP 50#define SUDOKU_BUTTON_UP BUTTON_UP
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index af795e736b..a8ef5eb1e8 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -77,6 +77,19 @@ PLUGIN_HEADER
77#define VIEWER_COLUMN_LEFT (BUTTON_ON | BUTTON_LEFT) 77#define VIEWER_COLUMN_LEFT (BUTTON_ON | BUTTON_LEFT)
78#define VIEWER_COLUMN_RIGHT (BUTTON_ON | BUTTON_RIGHT) 78#define VIEWER_COLUMN_RIGHT (BUTTON_ON | BUTTON_RIGHT)
79 79
80#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
81#define VIEWER_QUIT BUTTON_OFF
82#define VIEWER_PAGE_UP BUTTON_UP
83#define VIEWER_PAGE_DOWN BUTTON_DOWN
84#define VIEWER_SCREEN_LEFT BUTTON_LEFT
85#define VIEWER_SCREEN_RIGHT BUTTON_RIGHT
86#define VIEWER_MENU BUTTON_F1
87#define VIEWER_AUTOSCROLL BUTTON_SELECT
88#define VIEWER_LINE_UP (BUTTON_ON | BUTTON_UP)
89#define VIEWER_LINE_DOWN (BUTTON_ON | BUTTON_DOWN)
90#define VIEWER_COLUMN_LEFT (BUTTON_ON | BUTTON_LEFT)
91#define VIEWER_COLUMN_RIGHT (BUTTON_ON | BUTTON_RIGHT)
92
80/* Ondio keys */ 93/* Ondio keys */
81#elif CONFIG_KEYPAD == ONDIO_PAD 94#elif CONFIG_KEYPAD == ONDIO_PAD
82#define VIEWER_QUIT BUTTON_OFF 95#define VIEWER_QUIT BUTTON_OFF
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 2ee708efed..cbfc0ee5b8 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -33,6 +33,17 @@ PLUGIN_HEADER
33#define VUMETER_UP BUTTON_UP 33#define VUMETER_UP BUTTON_UP
34#define VUMETER_DOWN BUTTON_DOWN 34#define VUMETER_DOWN BUTTON_DOWN
35 35
36#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
37#define VUMETER_QUIT BUTTON_OFF
38#define VUMETER_HELP BUTTON_ON
39#define VUMETER_MENU BUTTON_F1
40#define VUMETER_MENU_EXIT BUTTON_F1
41#define VUMETER_MENU_EXIT2 BUTTON_OFF
42#define VUMETER_LEFT BUTTON_LEFT
43#define VUMETER_RIGHT BUTTON_RIGHT
44#define VUMETER_UP BUTTON_UP
45#define VUMETER_DOWN BUTTON_DOWN
46
36#elif CONFIG_KEYPAD == ONDIO_PAD 47#elif CONFIG_KEYPAD == ONDIO_PAD
37#define VUMETER_QUIT BUTTON_OFF 48#define VUMETER_QUIT BUTTON_OFF
38#define VUMETER_HELP_PRE BUTTON_MENU 49#define VUMETER_HELP_PRE BUTTON_MENU
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 6a10fac984..5afefb77a8 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -63,6 +63,22 @@ PLUGIN_HEADER
63#define WORMS_TEXT "L/R" 63#define WORMS_TEXT "L/R"
64#define KEY_CONTROL_TEXT "F1" 64#define KEY_CONTROL_TEXT "F1"
65 65
66#elif (CONFIG_KEYPAD == ARCHOS_AV300_PAD)
67#define BTN_DIR_UP BUTTON_UP
68#define BTN_DIR_DOWN BUTTON_DOWN
69#define BTN_DIR_LEFT BUTTON_LEFT
70#define BTN_DIR_RIGHT BUTTON_RIGHT
71#define BTN_PLAYER2_DIR1 BUTTON_F2
72#define BTN_PLAYER2_DIR2 BUTTON_F3
73#define BTN_STARTPAUSE BUTTON_SELECT
74#define BTN_QUIT BUTTON_OFF
75#define BTN_STOPRESET BUTTON_ON
76#define BTN_TOGGLE_KEYS BUTTON_F1
77
78#define PLAYERS_TEXT "UP/DN"
79#define WORMS_TEXT "L/R"
80#define KEY_CONTROL_TEXT "F1"
81
66#elif (CONFIG_KEYPAD == ONDIO_PAD) 82#elif (CONFIG_KEYPAD == ONDIO_PAD)
67#define BTN_DIR_UP BUTTON_UP 83#define BTN_DIR_UP BUTTON_UP
68#define BTN_DIR_DOWN BUTTON_DOWN 84#define BTN_DIR_DOWN BUTTON_DOWN
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index e6b66b3ab5..5669894c5e 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -33,6 +33,16 @@ PLUGIN_HEADER
33 33
34#define RC_QUIT BUTTON_RC_STOP 34#define RC_QUIT BUTTON_RC_STOP
35 35
36#elif (CONFIG_KEYPAD == ARCHOS_AV300_PAD)
37
38#define QUIT BUTTON_OFF
39#define LEFT BUTTON_LEFT
40#define RIGHT BUTTON_RIGHT
41#define PAUSE BUTTON_ON
42#define UP BUTTON_UP
43#define DOWN BUTTON_DOWN
44#define SELECT BUTTON_SELECT
45
36#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || \ 46#elif (CONFIG_KEYPAD == IPOD_3G_PAD) || \
37 (CONFIG_KEYPAD == IPOD_4G_PAD) 47 (CONFIG_KEYPAD == IPOD_4G_PAD)
38 48
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index b7de0cb6a7..a967b3ab73 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -45,6 +45,14 @@
45#define ZX_UP BUTTON_UP 45#define ZX_UP BUTTON_UP
46#define ZX_DOWN BUTTON_DOWN 46#define ZX_DOWN BUTTON_DOWN
47 47
48#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
49#define ZX_SELECT BUTTON_SELECT
50#define ZX_MENU BUTTON_OFF
51#define ZX_LEFT BUTTON_LEFT
52#define ZX_RIGHT BUTTON_RIGHT
53#define ZX_UP BUTTON_UP
54#define ZX_DOWN BUTTON_DOWN
55
48#elif CONFIG_KEYPAD == ONDIO_PAD 56#elif CONFIG_KEYPAD == ONDIO_PAD
49#define ZX_SELECT BUTTON_MENU 57#define ZX_SELECT BUTTON_MENU
50#define ZX_MENU BUTTON_OFF 58#define ZX_MENU BUTTON_OFF
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c
index 4dcdc80110..693e48ba73 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -32,6 +32,14 @@
32#define KBD_UP BUTTON_UP 32#define KBD_UP BUTTON_UP
33#define KBD_DOWN BUTTON_DOWN 33#define KBD_DOWN BUTTON_DOWN
34 34
35#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
36#define KBD_SELECT BUTTON_SELECT
37#define KBD_ABORT BUTTON_OFF
38#define KBD_LEFT BUTTON_LEFT
39#define KBD_RIGHT BUTTON_RIGHT
40#define KBD_UP BUTTON_UP
41#define KBD_DOWN BUTTON_DOWN
42
35#elif CONFIG_KEYPAD == ONDIO_PAD /* restricted Ondio keypad */ 43#elif CONFIG_KEYPAD == ONDIO_PAD /* restricted Ondio keypad */
36#define KBD_SELECT BUTTON_MENU 44#define KBD_SELECT BUTTON_MENU
37#define KBD_ABORT BUTTON_OFF 45#define KBD_ABORT BUTTON_OFF
diff --git a/apps/plugins/zxbox/zxvid_com.h b/apps/plugins/zxbox/zxvid_com.h
index 0483251b96..730971d6a5 100644
--- a/apps/plugins/zxbox/zxvid_com.h
+++ b/apps/plugins/zxbox/zxvid_com.h
@@ -13,6 +13,10 @@
13#if LCD_HEIGHT >= ZX_HEIGHT && LCD_WIDTH >= ZX_WIDTH 13#if LCD_HEIGHT >= ZX_HEIGHT && LCD_WIDTH >= ZX_WIDTH
14#define WIDTH LCD_WIDTH 14#define WIDTH LCD_WIDTH
15#define HEIGHT LCD_HEIGHT 15#define HEIGHT LCD_HEIGHT
16#define X_OFF 0
17#define Y_OFF 0
18#define X_STEP 1
19#define Y_STEP 1
16#else 20#else
17#define WIDTH 320 /* 256 */ 21#define WIDTH 320 /* 256 */
18#define HEIGHT 200 /* 192 */ 22#define HEIGHT 200 /* 192 */
diff --git a/apps/screens.h b/apps/screens.h
index 2bf2b32819..0a13a9ac8b 100644
--- a/apps/screens.h
+++ b/apps/screens.h
@@ -37,7 +37,7 @@ int mmc_remove_request(void);
37bool pitch_screen(void); 37bool pitch_screen(void);
38#endif 38#endif
39 39
40#if CONFIG_KEYPAD == RECORDER_PAD 40#ifdef BUTTON_F3
41extern bool quick_screen_f3(int button_enter); 41extern bool quick_screen_f3(int button_enter);
42#endif 42#endif
43extern bool quick_screen_quick(int button_enter); 43extern bool quick_screen_quick(int button_enter);
diff --git a/firmware/export/config.h b/firmware/export/config.h
index e37cc3f782..20fdc1d770 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -37,14 +37,15 @@
37#define SWCODEC 1 /* if codec is done by SW */ 37#define SWCODEC 1 /* if codec is done by SW */
38 38
39/* CONFIG_CPU */ 39/* CONFIG_CPU */
40#define SH7034 7034 40#define SH7034 7034
41#define MCF5249 5249 41#define MCF5249 5249
42#define MCF5250 5250 42#define MCF5250 5250
43#define PP5002 5002 43#define PP5002 5002
44#define PP5020 5020 44#define PP5020 5020
45#define PNX0101 101 45#define PNX0101 101
46#define S3C2440 2440 46#define S3C2440 2440
47#define PP5024 5024 47#define PP5024 5024
48#define TMS320DSC25 25
48 49
49/* CONFIG_KEYPAD */ 50/* CONFIG_KEYPAD */
50#define PLAYER_PAD 1 51#define PLAYER_PAD 1
@@ -60,6 +61,7 @@
60#define IRIVER_H10_PAD 11 61#define IRIVER_H10_PAD 11
61#define SANSA_E200_PAD 12 62#define SANSA_E200_PAD 12
62#define ELIO_TPJ1022_PAD 13 63#define ELIO_TPJ1022_PAD 13
64#define ARCHOS_AV300_PAD 14
63 65
64/* CONFIG_REMOTE_KEYPAD */ 66/* CONFIG_REMOTE_KEYPAD */
65#define H100_REMOTE 1 67#define H100_REMOTE 1
@@ -99,6 +101,7 @@
99#define LCD_H10 13 /* as used by iriver H10 20Gb */ 101#define LCD_H10 13 /* as used by iriver H10 20Gb */
100#define LCD_H10_5GB 14 /* as used by iriver H10 5Gb */ 102#define LCD_H10_5GB 14 /* as used by iriver H10 5Gb */
101#define LCD_TPJ1022 15 /* as used by Tatung Elio TPJ-1022 */ 103#define LCD_TPJ1022 15 /* as used by Tatung Elio TPJ-1022 */
104#define LCD_DSC25 16 /* as used by Archos AV300 */
102 105
103/* LCD_PIXELFORMAT */ 106/* LCD_PIXELFORMAT */
104#define HORIZONTAL_PACKING 1 107#define HORIZONTAL_PACKING 1
@@ -170,6 +173,8 @@
170#include "config-ondiosp.h" 173#include "config-ondiosp.h"
171#elif defined(ARCHOS_ONDIOFM) 174#elif defined(ARCHOS_ONDIOFM)
172#include "config-ondiofm.h" 175#include "config-ondiofm.h"
176#elif defined(ARCHOS_AV300)
177#include "config-av300.h"
173#elif defined(IRIVER_H100) 178#elif defined(IRIVER_H100)
174#include "config-h100.h" 179#include "config-h100.h"
175#elif defined(IRIVER_H120) 180#elif defined(IRIVER_H120)
@@ -255,7 +260,8 @@
255#endif 260#endif
256 261
257/* define for all cpus from ARM family */ 262/* define for all cpus from ARM family */
258#if defined(CPU_PP) || (CONFIG_CPU == PNX0101) || (CONFIG_CPU == S3C2440) 263#if defined(CPU_PP) || (CONFIG_CPU == PNX0101) || (CONFIG_CPU == S3C2440) \
264 || (CONFIG_CPU == TMS320DSC25)
259#define CPU_ARM 265#define CPU_ARM
260#endif 266#endif
261 267
diff --git a/firmware/target/arm/archos/av300/ata-av300.c b/firmware/target/arm/archos/av300/ata-av300.c
new file mode 100644
index 0000000000..ae7b955632
--- /dev/null
+++ b/firmware/target/arm/archos/av300/ata-av300.c
@@ -0,0 +1,56 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: ata-pp5020.c 10521 2006-08-11 08:35:27Z bger $
9 *
10 * Target-specific ATA functions for AV3xx (TMS320DSC25)
11 *
12 * Based on code from the ArchOpen project - http://www.archopen.org
13 * Adapted for Rockbox in January 2007
14 *
15 * Original file:
16 * lib/target/arch_AV3XX/ata.c
17 *
18 * AvLo - linav project
19 * Copyright (c) 2005 by Christophe THOMAS (oxygen77 at free.fr)
20 *
21 * All files in this archive are subject to the GNU General Public License.
22 * See the file COPYING in the source tree root for full license agreement.
23 *
24 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
25 * KIND, either express or implied.
26 *
27 ****************************************************************************/
28
29#include <stdbool.h>
30#include "system.h"
31#include "ata-target.h"
32
33void ata_reset()
34{
35 /* arch_ata_reset_HD(void) */
36 cpld_set_port_2(CPLD_HD_RESET);
37 cpld_clear_port_2(CPLD_HD_RESET);
38}
39
40void ata_enable(bool on)
41{
42 /* TODO: Implement ata_enable() */
43 (void)on;
44}
45
46bool ata_is_coldstart()
47{
48 /* TODO: Implement coldstart variable */
49 return true;
50}
51
52void ata_device_init()
53{
54 /* Set CF/HD selection to HD */
55 cpld_select(CPLD_HD_CF,CPLD_SEL_HD);
56}
diff --git a/firmware/target/arm/archos/av300/ata-target.h b/firmware/target/arm/archos/av300/ata-target.h
new file mode 100644
index 0000000000..f570ddd4b3
--- /dev/null
+++ b/firmware/target/arm/archos/av300/ata-target.h
@@ -0,0 +1,62 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: ata-target.h 11655 2006-12-03 22:13:44Z amiconn $
9 *
10 * Copyright (C) 2007 by Dave Chapman
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20/* Plain C read & write loops */
21
22#define ATA_IOBASE 0x02400000
23
24#define ATA_DATA (*((volatile unsigned short*)(ATA_IOBASE)))
25#define ATA_ERROR (*((volatile unsigned char*)(ATA_IOBASE + 0x080)))
26#define ATA_NSECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x100)))
27#define ATA_SECTOR (*((volatile unsigned char*)(ATA_IOBASE + 0x180)))
28#define ATA_LCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x200)))
29#define ATA_HCYL (*((volatile unsigned char*)(ATA_IOBASE + 0x280)))
30#define ATA_SELECT (*((volatile unsigned char*)(ATA_IOBASE + 0x300)))
31#define ATA_CONTROL (*((volatile unsigned char*)(ATA_IOBASE + 0x340)))
32#define ATA_COMMAND (*((volatile unsigned char*)(ATA_IOBASE + 0x380)))
33
34#define STATUS_BSY 0x80
35#define STATUS_RDY 0x40
36#define STATUS_DF 0x20
37#define STATUS_DRQ 0x08
38#define STATUS_ERR 0x01
39#define ERROR_ABRT 0x04
40
41#define WRITE_PATTERN1 0xa5
42#define WRITE_PATTERN2 0x5a
43#define WRITE_PATTERN3 0xaa
44#define WRITE_PATTERN4 0x55
45
46#define READ_PATTERN1 0xa5
47#define READ_PATTERN2 0x5a
48#define READ_PATTERN3 0xaa
49#define READ_PATTERN4 0x55
50
51#define READ_PATTERN1_MASK 0xff
52#define READ_PATTERN2_MASK 0xff
53#define READ_PATTERN3_MASK 0xff
54#define READ_PATTERN4_MASK 0xff
55
56#define SET_REG(reg,val) reg = (val)
57#define SET_16BITREG(reg,val) reg = (val)
58
59void ata_reset(void);
60void ata_enable(bool on);
61bool ata_is_coldstart(void);
62void ata_device_init(void);
diff --git a/firmware/target/arm/archos/av300/button-target.h b/firmware/target/arm/archos/av300/button-target.h
new file mode 100644
index 0000000000..b08562627b
--- /dev/null
+++ b/firmware/target/arm/archos/av300/button-target.h
@@ -0,0 +1,49 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: button-target.h 11967 2007-01-09 23:29:07Z linus $
9 *
10 * Copyright (C) 2007 by Dave Chapman
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20#ifndef _BUTTON_TARGET_H_
21#define _BUTTON_TARGET_H_
22
23#include <stdbool.h>
24#include "config.h"
25
26void button_init_device(void);
27int button_read_device(void);
28
29/* Main unit's buttons */
30
31#define BUTTON_ON 0x00000001
32#define BUTTON_OFF 0x00000002
33
34#define BUTTON_LEFT 0x00000004
35#define BUTTON_RIGHT 0x00000008
36#define BUTTON_UP 0x00000010
37#define BUTTON_DOWN 0x00000020
38
39#define BUTTON_SELECT 0x00000040
40
41#define BUTTON_F1 0x00000080
42#define BUTTON_F2 0x00000100
43#define BUTTON_F3 0x00000200
44
45#define BUTTON_MAIN (BUTTON_ON|BUTTON_OFF|BUTTON_LEFT|BUTTON_RIGHT\
46 |BUTTON_UP|BUTTON_DOWN|BUTTON_SELECT\
47 |BUTTON_F1|BUTTON_F2|BUTTON_F3)
48
49#endif /* _BUTTON_TARGET_H_ */
diff --git a/firmware/target/arm/archos/av300/power-av300.c b/firmware/target/arm/archos/av300/power-av300.c
new file mode 100644
index 0000000000..cfdce69b13
--- /dev/null
+++ b/firmware/target/arm/archos/av300/power-av300.c
@@ -0,0 +1,97 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: power-x5.c 10967 2006-09-17 09:19:50Z jethead71 $
9 *
10 * Based on code from the ArchOpen project - http://www.archopen.org
11 * Adapted for Rockbox in January 2007
12 *
13 * Original files:
14 * lib/target/arch_AV3XX/ata.c
15 *
16 * AvLo - linav project
17 * Copyright (c) 2005 by Christophe THOMAS (oxygen77 at free.fr)
18 *
19 * All files in this archive are subject to the GNU General Public License.
20 * See the file COPYING in the source tree root for full license agreement.
21 *
22 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
23 * KIND, either express or implied.
24 *
25 ****************************************************************************/
26#include "config.h"
27#include "cpu.h"
28#include <stdbool.h>
29#include "kernel.h"
30#include "system.h"
31#include "power.h"
32
33#ifndef SIMULATOR
34
35void power_init(void)
36{
37 /* Charger detect */
38}
39
40bool charger_inserted(void)
41{
42 return false;
43}
44
45void ide_power_enable(bool on)
46{
47 if(on)
48 cpld_set_port_3(CPLD_HD_POWER); /* powering up HD */
49 else
50 cpld_clear_port_3(CPLD_HD_POWER);
51}
52
53bool ide_powered(void)
54{
55 return false;
56}
57
58void power_off(void)
59{
60}
61
62#else
63
64bool charger_inserted(void)
65{
66 return false;
67}
68
69void charger_enable(bool on)
70{
71 (void)on;
72}
73
74void power_off(void)
75{
76}
77
78void ide_power_enable(bool on)
79{
80 (void)on;
81}
82
83#endif /* SIMULATOR */
84
85static bool powered = false;
86
87bool radio_powered()
88{
89 return powered;
90}
91
92bool radio_power(bool status)
93{
94 bool old_status = powered;
95 powered = status;
96 return old_status;
97}
diff --git a/tools/configure b/tools/configure
index e2e0befae5..0d119f6caf 100755
--- a/tools/configure
+++ b/tools/configure
@@ -560,7 +560,7 @@ cat <<EOF
560 3) Recorder v2 13) iFP-790 23) 3G 560 3) Recorder v2 13) iFP-790 23) 3G
561 4) Ondio SP 14) H10 20Gb 24) 4G Grayscale 561 4) Ondio SP 14) H10 20Gb 24) 4G Grayscale
562 5) Ondio FM 15) H10 5/6Gb 25) Mini 1G 562 5) Ondio FM 15) H10 5/6Gb 25) Mini 1G
563 26) Mini 2G 563 6) AV300 26) Mini 2G
564 564
565 ==iAudio== ==Toshiba== ==SanDisk== 565 ==iAudio== ==Toshiba== ==SanDisk==
566 30) X5/X5V/X5L 40) Gigabeat F 50) Sansa e200 566 30) X5/X5V/X5L 40) Gigabeat F 50) Sansa e200
@@ -753,6 +753,30 @@ EOF
753 t_model="ondio" 753 t_model="ondio"
754 ;; 754 ;;
755 755
756 6|av300)
757 target_id=26
758 archos="av300"
759 target="-DARCHOS_AV300"
760 memory=16 # always
761 arm7tdmicc
762 tool="$rootdir/tools/scramble -mm=C"
763 bmp2rb_mono="$rootdir/tools/bmp2rb -f 0"
764 bmp2rb_native="$rootdir/tools/bmp2rb -f 6"
765 output="cjbm.ajz"
766 appextra="recorder:gui"
767 archosrom=""
768 flash=""
769 plugins="yes"
770 codecs=""
771 # toolset is the tools within the tools directory that we build for
772 # this particular target.
773 toolset="$toolset scramble descramble bmp2rb codepages"
774 # architecture, manufacturer and model for the target-tree build
775 t_cpu="arm"
776 t_manufacturer="archos"
777 t_model="av300"
778 ;;
779
756 10|h120) 780 10|h120)
757 target_id=9 781 target_id=9
758 archos="h120" 782 archos="h120"
diff --git a/uisimulator/sdl/UI-av300.bmp b/uisimulator/sdl/UI-av300.bmp
new file mode 100644
index 0000000000..e86221ca7e
--- /dev/null
+++ b/uisimulator/sdl/UI-av300.bmp
Binary files differ
diff --git a/uisimulator/sdl/button.c b/uisimulator/sdl/button.c
index 6931d13fe5..f5da828914 100644
--- a/uisimulator/sdl/button.c
+++ b/uisimulator/sdl/button.c
@@ -421,6 +421,49 @@ void button_event(int key, bool pressed)
421 new_btn = BUTTON_PLAY; 421 new_btn = BUTTON_PLAY;
422 break; 422 break;
423 423
424#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD
425 case SDLK_KP4:
426 case SDLK_LEFT:
427 new_btn = BUTTON_LEFT;
428 break;
429 case SDLK_KP6:
430 case SDLK_RIGHT:
431 new_btn = BUTTON_RIGHT;
432 break;
433 case SDLK_KP8:
434 case SDLK_UP:
435 new_btn = BUTTON_UP;
436 break;
437 case SDLK_KP2:
438 case SDLK_DOWN:
439 new_btn = BUTTON_DOWN;
440 break;
441 case SDLK_KP_PLUS:
442 case SDLK_F8:
443 new_btn = BUTTON_ON;
444 break;
445 case SDLK_KP_ENTER:
446 case SDLK_RETURN:
447 case SDLK_a:
448 new_btn = BUTTON_OFF;
449 break;
450 case SDLK_KP_DIVIDE:
451 case SDLK_F1:
452 new_btn = BUTTON_F1;
453 break;
454 case SDLK_KP_MULTIPLY:
455 case SDLK_F2:
456 new_btn = BUTTON_F2;
457 break;
458 case SDLK_KP_MINUS:
459 case SDLK_F3:
460 new_btn = BUTTON_F3;
461 break;
462 case SDLK_KP5:
463 case SDLK_SPACE:
464 new_btn = BUTTON_SELECT;
465 break;
466
424#elif CONFIG_KEYPAD == SANSA_E200_PAD 467#elif CONFIG_KEYPAD == SANSA_E200_PAD
425 case SDLK_KP4: 468 case SDLK_KP4:
426 case SDLK_LEFT: 469 case SDLK_LEFT:
diff --git a/uisimulator/sdl/uisdl.h b/uisimulator/sdl/uisdl.h
index e742155f6a..7f0a567e79 100644
--- a/uisimulator/sdl/uisdl.h
+++ b/uisimulator/sdl/uisdl.h
@@ -241,6 +241,19 @@
241#define UI_LCD_WIDTH LCD_WIDTH /* * 1.5 */ 241#define UI_LCD_WIDTH LCD_WIDTH /* * 1.5 */
242#define UI_LCD_HEIGHT LCD_HEIGHT /* * 1.5 */ 242#define UI_LCD_HEIGHT LCD_HEIGHT /* * 1.5 */
243 243
244#elif defined(ARCHOS_AV300)
245#define UI_TITLE "Archos AV300"
246/* We are temporarily using a 2bpp LCD driver and dummy bitmap */
247#define UI_WIDTH 420 /* width of GUI window */
248#define UI_HEIGHT 340 /* height of GUI window */
249#define UI_LCD_POSX 50 /* x position of lcd */
250#define UI_LCD_POSY 50 /* y position of lcd */
251#define UI_LCD_WIDTH 320
252#define UI_LCD_HEIGHT 240
253#define UI_LCD_BGCOLOR 90, 145, 90 /* bkgnd color of LCD (no backlight) */
254#define UI_LCD_BGCOLORLIGHT 173, 216, 230 /* bkgnd color of LCD (backlight) */
255#define UI_LCD_BLACK 0, 0, 0 /* black */
256
244#endif 257#endif
245extern SDL_Surface *gui_surface; 258extern SDL_Surface *gui_surface;
246extern bool background; /* True if the background image is enabled */ 259extern bool background; /* True if the background image is enabled */