Index: rockbox-devel/apps/menu.c =================================================================== RCS file: /cvsroot/rockbox/apps/menu.c,v retrieving revision 1.101 diff -u -b -B -w -r1.101 menu.c --- rockbox-devel/apps/menu.c 5 Dec 2005 22:44:41 -0000 1.101 +++ rockbox-devel/apps/menu.c 27 Dec 2005 11:58:19 -0000 @@ -166,6 +166,9 @@ #ifdef MENU_RC_EXIT case MENU_RC_EXIT: #endif +#ifdef MENU_RC_EXIT2 + case MENU_RC_EXIT2: +#endif #ifdef MENU_RC_EXIT_MENU case MENU_RC_EXIT_MENU: #endif Index: rockbox-devel/apps/menu.h =================================================================== RCS file: /cvsroot/rockbox/apps/menu.h,v retrieving revision 1.36 diff -u -b -B -w -r1.36 menu.h --- rockbox-devel/apps/menu.h 19 Dec 2005 00:11:26 -0000 1.36 +++ rockbox-devel/apps/menu.h 27 Dec 2005 11:58:19 -0000 @@ -31,10 +31,18 @@ #define MENU_ENTER BUTTON_RIGHT #define MENU_ENTER2 BUTTON_SELECT +/* #if CONFIG_KEYPAD == IRIVER_H100_PAD #define MENU_RC_EXIT BUTTON_RC_STOP #define MENU_RC_EXIT_MENU BUTTON_RC_MODE #define MENU_RC_ENTER BUTTON_RC_ON #define MENU_RC_ENTER2 BUTTON_RC_MENU +#else */ +#define MENU_RC_EXIT BUTTON_RC_REW +#define MENU_RC_EXIT2 BUTTON_RC_STOP +#define MENU_RC_EXIT_MENU BUTTON_RC_MODE +#define MENU_RC_ENTER BUTTON_RC_FF +#define MENU_RC_ENTER2 BUTTON_RC_MENU +/* #endif */ #elif CONFIG_KEYPAD == RECORDER_PAD Index: rockbox-devel/apps/playlist_viewer.c =================================================================== RCS file: /cvsroot/rockbox/apps/playlist_viewer.c,v retrieving revision 1.40 diff -u -b -B -w -r1.40 playlist_viewer.c --- rockbox-devel/apps/playlist_viewer.c 5 Dec 2005 22:44:41 -0000 1.40 +++ rockbox-devel/apps/playlist_viewer.c 27 Dec 2005 11:58:19 -0000 @@ -686,6 +686,9 @@ #ifdef TREE_OFF case TREE_OFF: #endif +#ifdef TREE_RC_OFF + case TREE_RC_OFF: +#endif exit = true; break; @@ -693,6 +696,10 @@ case TREE_ENTER: case TREE_ENTER | BUTTON_REPEAT: #endif +#ifdef TREE_RC_ENTER + case TREE_RC_ENTER: + case TREE_RC_ENTER | BUTTON_REPEAT: +#endif #ifdef TREE_RC_RUN case TREE_RC_RUN: #endif @@ -751,6 +758,9 @@ #ifdef TREE_RC_CONTEXT case TREE_RC_CONTEXT: #endif +#ifdef TREE_RC_CONTEXT2 + case TREE_RC_CONTEXT2: +#endif { /* ON+PLAY menu */ int ret; Index: rockbox-devel/apps/settings.c =================================================================== RCS file: /cvsroot/rockbox/apps/settings.c,v retrieving revision 1.348 diff -u -b -B -w -r1.348 settings.c --- rockbox-devel/apps/settings.c 22 Dec 2005 13:31:14 -0000 1.348 +++ rockbox-devel/apps/settings.c 27 Dec 2005 11:58:21 -0000 @@ -491,6 +491,17 @@ #ifdef HAVE_BACKLIGHT_BRIGHTNESS {4, S_O(brightness), 9, "brightness", NULL }, #endif +#if defined(CONFIG_REMOTE_KEYPAD) \ + && ( (CONFIG_REMOTE_KEYPAD == H100_REMOTE) \ + || (CONFIG_REMOTE_KEYPAD == H300_REMOTE)) + {2, S_O(remote_type), +#if (CONFIG_REMOTE_KEYPAD == H100_REMOTE) + H100_LCD_REMOTE, +#else + H300_LCD_REMOTE, +#endif + "remote type", NULL}, +#endif /* If values are just added to the end, no need to bump the version. */ /* new stuff to be added at the end */ @@ -983,6 +994,11 @@ #ifdef HAVE_SPDIF_POWER spdif_power_enable(global_settings.spdif_enable); #endif +#if defined(CONFIG_REMOTE_KEYPAD) \ + && ( (CONFIG_REMOTE_KEYPAD == H100_REMOTE) \ + || (CONFIG_REMOTE_KEYPAD == H300_REMOTE)) + set_remote_type(global_settings.remote_type); +#endif } Index: rockbox-devel/apps/settings.h =================================================================== RCS file: /cvsroot/rockbox/apps/settings.h,v retrieving revision 1.187 diff -u -b -B -w -r1.187 settings.h --- rockbox-devel/apps/settings.h 22 Dec 2005 23:48:31 -0000 1.187 +++ rockbox-devel/apps/settings.h 27 Dec 2005 11:58:21 -0000 @@ -389,6 +389,11 @@ int brightness; /* iriver h300: backlight PWM value: 2..15 (0 and 1 are black) */ #endif +#if defined(CONFIG_REMOTE_KEYPAD) \ + && ( (CONFIG_REMOTE_KEYPAD == H100_REMOTE) \ + || (CONFIG_REMOTE_KEYPAD == H300_REMOTE)) + int remote_type; +#endif }; enum optiontype { INT, BOOL }; Index: rockbox-devel/apps/settings_menu.c =================================================================== RCS file: /cvsroot/rockbox/apps/settings_menu.c,v retrieving revision 1.230 diff -u -b -B -w -r1.230 settings_menu.c --- rockbox-devel/apps/settings_menu.c 22 Dec 2005 10:43:35 -0000 1.230 +++ rockbox-devel/apps/settings_menu.c 27 Dec 2005 11:58:24 -0000 @@ -251,6 +251,21 @@ } #endif /* HAVE_REMOTE_LCD */ +#if defined(CONFIG_REMOTE_KEYPAD) \ + && ( (CONFIG_REMOTE_KEYPAD == H100_REMOTE) \ + || (CONFIG_REMOTE_KEYPAD == H300_REMOTE)) +static bool remote_type(void) +{ + static const struct opt_items names[] = { + { STR(LANG_REMOTE_H100) }, + { STR(LANG_REMOTE_H300) } + }; + return set_option( str(LANG_REMOTE_TYPE), + &global_settings.remote_type, INT, names, 2, + set_remote_type); +} +#endif + static bool contrast(void) { return set_int( str(LANG_CONTRAST), "", UNIT_INT, @@ -1573,6 +1588,11 @@ #ifdef HAVE_REMOTE_LCD_TICKING { ID2P(LANG_REDUCE_TICKING), remote_reduce_ticking }, #endif +#if defined(CONFIG_REMOTE_KEYPAD) \ + && ( (CONFIG_REMOTE_KEYPAD == H100_REMOTE) \ + || (CONFIG_REMOTE_KEYPAD == H300_REMOTE)) + { ID2P(LANG_REMOTE_TYPE), remote_type }, +#endif }; m=menu_init( items, sizeof(items) / sizeof(*items), NULL, Index: rockbox-devel/apps/tree.c =================================================================== RCS file: /cvsroot/rockbox/apps/tree.c,v retrieving revision 1.381 diff -u -b -B -w -r1.381 tree.c --- rockbox-devel/apps/tree.c 5 Dec 2005 22:44:41 -0000 1.381 +++ rockbox-devel/apps/tree.c 27 Dec 2005 11:58:24 -0000 @@ -578,6 +578,10 @@ case TREE_ENTER: case TREE_ENTER | BUTTON_REPEAT: #endif +#ifdef TREE_RC_ENTER + case TREE_RC_ENTER: + case TREE_RC_ENTER | BUTTON_REPEAT: +#endif #ifdef TREE_RC_RUN case TREE_RC_RUN: #endif @@ -609,6 +613,7 @@ case TREE_EXIT | BUTTON_REPEAT: #ifdef TREE_RC_EXIT case TREE_RC_EXIT: + case TREE_RC_EXIT | BUTTON_REPEAT: #endif if (*tc.dirfilter > NUM_FILTER_MODES && tc.dirlevel < 1) { exit_func = true; @@ -628,6 +633,10 @@ break; #ifdef TREE_OFF + +#ifdef TREE_RC_OFF + case TREE_RC_OFF: +#endif case TREE_OFF: if (*tc.dirfilter < NUM_FILTER_MODES) { @@ -648,6 +657,9 @@ } break; #if defined(HAVE_CHARGING) && !defined(HAVE_POWEROFF_WHILE_CHARGING) +#ifdef TREE_RC_OFF: + case TREE_RC_OFF: +#endif case TREE_OFF | BUTTON_REPEAT: if (charger_inserted()) { charging_splash(); @@ -745,6 +757,9 @@ #ifdef TREE_RC_CONTEXT case TREE_RC_CONTEXT: #endif +#ifdef TREE_RC_CONTEXT2 + case TREE_RC_CONTEXT2: +#endif #ifdef TREE_CONTEXT2 case TREE_CONTEXT2: #endif @@ -998,9 +1013,15 @@ DIRCACHED* dir; /* check for user abort */ +#ifndef TREE_RC_ABORT if (button_get(false) == TREE_ABORT) return true; - +#else + switch (button_get(false)){ + case TREE_ABORT: + case TREE_RC_ABORT:return true; + } +#endif dir = opendir_cached(dirname); if(!dir) return true; Index: rockbox-devel/apps/tree.h =================================================================== RCS file: /cvsroot/rockbox/apps/tree.h,v retrieving revision 1.56 diff -u -b -B -w -r1.56 tree.h --- rockbox-devel/apps/tree.h 19 Dec 2005 00:11:26 -0000 1.56 +++ rockbox-devel/apps/tree.h 27 Dec 2005 11:58:27 -0000 @@ -43,10 +43,10 @@ #define TREE_PGDN (BUTTON_ON | BUTTON_DOWN) #define TREE_CONTEXT (BUTTON_SELECT | BUTTON_REPEAT) #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_SELECT) -#define TREE_POWER_BTN BUTTON_ON #define TREE_QUICK (BUTTON_MODE | BUTTON_REPEAT) /* Remote keys */ +/*#if CONFIG_KEYPAD == IRIVER_H100_PAD #define TREE_RC_NEXT BUTTON_RC_FF #define TREE_RC_PREV BUTTON_RC_REW #define TREE_RC_PGUP BUTTON_RC_SOURCE @@ -60,6 +60,26 @@ #define TREE_RC_WPS_PRE BUTTON_RC_ON #define TREE_RC_CONTEXT (BUTTON_RC_ON | BUTTON_REPEAT) #define TREE_RC_QUICK (BUTTON_RC_MODE | BUTTON_REPEAT) +#else */ +#define TREE_RC_NEXT BUTTON_RC_VOL_DOWN +#define TREE_RC_PREV BUTTON_RC_VOL_UP +#define TREE_RC_EXIT BUTTON_RC_REW +#define TREE_RC_ABORT BUTTON_RC_STOP +#define TREE_RC_ENTER BUTTON_RC_FF +#define TREE_RC_RUN (BUTTON_RC_MENU | BUTTON_REL) +#define TREE_RC_RUN_PRE BUTTON_RC_MENU +#define TREE_RC_MENU (BUTTON_RC_MODE | BUTTON_REL) +#define TREE_RC_MENU_PRE BUTTON_RC_MODE +#define TREE_RC_OFF BUTTON_RC_STOP +#define TREE_RC_WPS (BUTTON_RC_ON | BUTTON_REL) +#define TREE_RC_WPS_PRE BUTTON_RC_ON +#define TREE_RC_PGUP BUTTON_RC_SOURCE +#define TREE_RC_PGDN BUTTON_RC_BITRATE +#define TREE_RC_CONTEXT (BUTTON_RC_ON | BUTTON_REPEAT) +#define TREE_RC_CONTEXT2 (BUTTON_RC_MENU | BUTTON_REPEAT) +#define TREE_RC_QUICK (BUTTON_RC_MODE | BUTTON_REPEAT) + +/* #endif */ #elif CONFIG_KEYPAD == RECORDER_PAD #define TREE_NEXT BUTTON_DOWN @@ -77,7 +97,6 @@ #define TREE_PGDN (BUTTON_ON | BUTTON_DOWN) #define TREE_CONTEXT (BUTTON_PLAY | BUTTON_REPEAT) #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_PLAY) -#define TREE_POWER_BTN BUTTON_ON #define TREE_QUICK BUTTON_F2 #define TREE_RC_NEXT BUTTON_RC_RIGHT @@ -97,7 +116,6 @@ #define TREE_WPS_PRE BUTTON_ON #define TREE_CONTEXT (BUTTON_PLAY | BUTTON_REPEAT) #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_PLAY) -#define TREE_POWER_BTN BUTTON_ON #define TREE_RC_NEXT BUTTON_RC_RIGHT #define TREE_RC_PREV BUTTON_RC_LEFT @@ -117,7 +135,6 @@ #define TREE_WPS (BUTTON_MENU | BUTTON_REL) #define TREE_WPS_PRE BUTTON_MENU #define TREE_CONTEXT (BUTTON_RIGHT | BUTTON_REPEAT) -#define TREE_POWER_BTN BUTTON_OFF #elif CONFIG_KEYPAD == GMINI100_PAD #define TREE_NEXT BUTTON_DOWN @@ -133,7 +150,6 @@ #define TREE_PGDN (BUTTON_ON | BUTTON_DOWN) #define TREE_CONTEXT (BUTTON_PLAY | BUTTON_REPEAT) #define TREE_CONTEXT2 (BUTTON_ON | BUTTON_PLAY) -#define TREE_POWER_BTN BUTTON_ON #elif (CONFIG_KEYPAD == IPOD_4G_PAD) Index: rockbox-devel/apps/gui/list.h =================================================================== RCS file: /cvsroot/rockbox/apps/gui/list.h,v retrieving revision 1.11 diff -u -b -B -w -r1.11 list.h --- rockbox-devel/apps/gui/list.h 19 Dec 2005 00:11:27 -0000 1.11 +++ rockbox-devel/apps/gui/list.h 27 Dec 2005 11:58:28 -0000 @@ -35,10 +35,18 @@ #define LIST_PGDN (BUTTON_ON | BUTTON_DOWN) #ifdef CONFIG_REMOTE_KEYPAD +/* #if CONFIG_KEYPAD == IRIVER_H100_PAD #define LIST_RC_NEXT BUTTON_RC_FF #define LIST_RC_PREV BUTTON_RC_REW #define LIST_RC_PGUP BUTTON_RC_SOURCE #define LIST_RC_PGDN BUTTON_RC_BITRATE +#else */ +#define LIST_RC_NEXT BUTTON_RC_VOL_DOWN +#define LIST_RC_PREV BUTTON_RC_VOL_UP +#define LIST_RC_PGUP BUTTON_RC_SOURCE +#define LIST_RC_PGDN BUTTON_RC_BITRATE +/*#endif*/ + #endif /* CONFIG_REMOTE_KEYPAD */ #elif CONFIG_KEYPAD == RECORDER_PAD Index: rockbox-devel/apps/gui/select.h =================================================================== RCS file: /cvsroot/rockbox/apps/gui/select.h,v retrieving revision 1.10 diff -u -b -B -w -r1.10 select.h --- rockbox-devel/apps/gui/select.h 19 Dec 2005 00:11:27 -0000 1.10 +++ rockbox-devel/apps/gui/select.h 27 Dec 2005 11:58:28 -0000 @@ -32,12 +32,22 @@ #define SELECT_CANCEL BUTTON_OFF #define SELECT_CANCEL2 BUTTON_MODE +/*#if CONFIG_KEYPAD == IRIVER_H100_PAD #define SELECT_RC_INC BUTTON_RC_FF #define SELECT_RC_DEC BUTTON_RC_REW #define SELECT_RC_OK BUTTON_RC_ON #define SELECT_RC_OK2 BUTTON_RC_MENU #define SELECT_RC_CANCEL BUTTON_RC_STOP #define SELECT_RC_CANCEL2 BUTTON_RC_MODE +#else */ +#define SELECT_RC_INC BUTTON_RC_VOL_UP +#define SELECT_RC_DEC BUTTON_RC_VOL_DOWN +#define SELECT_RC_OK BUTTON_RC_MENU +#define SELECT_RC_OK2 BUTTON_RC_REW +#define SELECT_RC_CANCEL BUTTON_RC_STOP +#define SELECT_RC_CANCEL2 BUTTON_RC_MODE +/*#endif */ + #elif CONFIG_KEYPAD == RECORDER_PAD #define SELECT_INC BUTTON_UP Index: rockbox-devel/apps/lang/english.lang =================================================================== RCS file: /cvsroot/rockbox/apps/lang/english.lang,v retrieving revision 1.209 diff -u -b -B -w -r1.209 english.lang --- rockbox-devel/apps/lang/english.lang 22 Dec 2005 10:43:35 -0000 1.209 +++ rockbox-devel/apps/lang/english.lang 27 Dec 2005 11:58:30 -0000 @@ -3557,3 +3557,21 @@ voice: "Brightness" new: +id: LANG_REMOTE_TYPE +desc: H100/H300 remote type +eng: "Remote Type" +voice: "Remote Type" +new: + +id: LANG_REMOTE_H100 +desc: H100's lcd remote +eng: "H100 LCD" +voice: "H100" +new: + +id: LANG_REMOTE_H300 +desc: H300's LCD remote +eng: "H300 LCD" +voice: "H300 LCD" +new: + Index: rockbox-devel/apps/plugins/SOURCES =================================================================== RCS file: /cvsroot/rockbox/apps/plugins/SOURCES,v retrieving revision 1.73 diff -u -b -B -w -r1.73 SOURCES --- rockbox-devel/apps/plugins/SOURCES 21 Dec 2005 00:17:43 -0000 1.73 +++ rockbox-devel/apps/plugins/SOURCES 27 Dec 2005 11:58:32 -0000 @@ -56,6 +56,10 @@ #endif vu_meter.c +#if CONFIG_KEYPAD == IRIVER_H300_PAD +tetrox.c +#endif + #ifdef CONFIG_RTC #if CONFIG_KEYPAD == RECORDER_PAD /* Recorder models only for now */ Index: rockbox-devel/firmware/drivers/button.c =================================================================== RCS file: /cvsroot/rockbox/firmware/drivers/button.c,v retrieving revision 1.106 diff -u -b -B -w -r1.106 button.c --- rockbox-devel/firmware/drivers/button.c 22 Dec 2005 09:27:23 -0000 1.106 +++ rockbox-devel/firmware/drivers/button.c 27 Dec 2005 11:58:34 -0000 @@ -536,6 +536,32 @@ #endif /* CONFIG_KEYPAD */ + +#if ((CONFIG_KEYPAD==IRIVER_H100_PAD) || (CONFIG_KEYPAD==IRIVER_H300_PAD)) + +#define REMOTE_TYPES 2 +#define MAX_BUTTON_COUNT 11 + +static int remote_lookup_table[REMOTE_TYPES][MAX_BUTTON_COUNT] = +{ /* H100 remote */ + { BUTTON_RC_STOP, BUTTON_RC_VOL_DOWN, BUTTON_RC_MODE, BUTTON_RC_VOL_UP, + BUTTON_RC_BITRATE, BUTTON_RC_REC, BUTTON_RC_SOURCE, BUTTON_RC_FF, + BUTTON_RC_MENU, BUTTON_RC_REW, BUTTON_RC_ON }, + /* H300 LCD remote */ + { BUTTON_RC_VOL_DOWN, BUTTON_RC_FF, BUTTON_RC_STOP, BUTTON_RC_MODE, + BUTTON_RC_REC, BUTTON_RC_ON, BUTTON_RC_BITRATE, BUTTON_RC_SOURCE, + BUTTON_RC_VOL_UP, BUTTON_RC_REW, BUTTON_RC_MENU } +}; + +static int remote_type=H100_LCD_REMOTE; + +void set_remote_type(int type) +{ + if(type>=0&&type