Rockbox for the HiBy R3 Pro II/R1

Original author Melissa Autumn (https://codeberg.org/oopsallnaps/rockbox-hibyos) with contributions from Marc Aarts.

Adaptation to Rockbox standards by Marc Aarts

Change-Id: I09e5af7ba0a75c648e4b9fd424badc2d3665c943
This commit is contained in:
Marc Aarts 2025-12-22 08:11:25 +01:00 committed by Solomon Peachy
parent eee6c31b4a
commit 1183b1ab1b
118 changed files with 2858 additions and 107 deletions

View file

@ -310,4 +310,6 @@ keymaps/keymap-surfansf28.c
keymaps/keymap-rgnano.c
#elif CONFIG_KEYPAD == CTRU_PAD
keymaps/keymap-ctru.c
#elif CONFIG_KEYPAD == HIBY_R3PROII_PAD
keymaps/keymap-hibyr3proii.c
#endif

View file

@ -46,7 +46,7 @@ toolsicon.130x130x16.bmp
hibyicon.70x70x16.bmp
rockboxicon.70x70x16.bmp
toolsicon.70x70x16.bmp
#elif (defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(EROS_Q) || defined(SURFANS_F28))
#elif (defined(XDUOO_X3II) || defined(XDUOO_X20) || defined(EROS_Q) || defined(SURFANS_F28) || defined(HIBY_R3PROII) || defined(HIBY_R1))
hibyicon.130x130x16.bmp
rockboxicon.130x130x16.bmp
toolsicon.130x130x16.bmp

View file

@ -2842,7 +2842,7 @@ static const struct {
{ "Screendump", dbg_screendump },
#endif
{ "Skin Engine RAM usage", dbg_skin_engine },
#if ((CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SONY_NWZ_LINUX) || defined(HIBY_LINUX) || defined(FIIO_M3K_LINUX)) && !defined(SIMULATOR)
#if ((CONFIG_PLATFORM & PLATFORM_NATIVE) || defined(SONY_NWZ_LINUX) || (defined(HIBY_LINUX) && !defined(HIBY_R3PROII) && !defined(HIBY_R1)) || defined(FIIO_M3K_LINUX)) && !defined(SIMULATOR)
{ "View HW info", dbg_hw_info },
#endif
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)

View file

@ -20,6 +20,10 @@ alarm
backlight_brightness
#endif
#if defined(HAVE_GENERAL_PURPOSE_LED)
general_purpose_led
#endif
#if defined(HAVE_BUTTON_LIGHT)
button_light
#endif
@ -182,7 +186,7 @@ depth_3d
#endif
/* This should be AUDIOHW_HAVE_FILTER_ROLL_OFF but that is only defined later */
#if defined(DX50) || defined(HAVE_DF1704_CODEC) || defined(HAVE_PCM1792_CODEC) || defined(HAVE_CS4398) || defined(HAVE_WM8740) || defined(HAVE_ES9018)|| defined(HAVE_EROS_QN_CODEC) || defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_AK4376) || defined(HAVE_ES9218) || defined(HAVE_SURFANS_LINUX_CODEC)
#if defined(DX50) || defined(HAVE_DF1704_CODEC) || defined(HAVE_PCM1792_CODEC) || defined(HAVE_CS4398) || defined(HAVE_WM8740) || defined(HAVE_ES9018)|| defined(HAVE_EROS_QN_CODEC) || defined(HAVE_XDUOO_LINUX_CODEC) || defined(HAVE_FIIO_LINUX_CODEC) || defined(HAVE_AK4376) || defined(HAVE_ES9218) || defined(HAVE_SURFANS_LINUX_CODEC) || defined(HAVE_HIBY_LINUX_CODEC)
filter_roll_off
#endif

View file

@ -0,0 +1,233 @@
/***************************************************************************
* __________ __ ___
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2025 Solomon Peachy
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
static const struct button_mapping button_context_standard[] =
{
{ ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
{ ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
{ ACTION_STD_KEYLOCK, BUTTON_POWER|BUTTON_VOL_UP, BUTTON_POWER },
LAST_ITEM_IN_LIST
};
static const struct button_mapping button_context_wps[] =
{
{ ACTION_WPS_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
{ ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REL, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
{ ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
{ ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT },
{ ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT },
{ ACTION_STD_KEYLOCK, BUTTON_POWER|BUTTON_VOL_UP, BUTTON_POWER },
LAST_ITEM_IN_LIST
};
static const struct button_mapping button_context_list[] =
{
{ ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REL, BUTTON_NONE },
{ ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
};
static const struct button_mapping button_context_tree[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
};
static const struct button_mapping button_context_listtree_scroll_with_combo[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM | CONTEXT_TREE),
};
static const struct button_mapping button_context_listtree_scroll_without_combo[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM | CONTEXT_TREE),
};
static const struct button_mapping button_context_settings[] =
{
{ ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
};
static const struct button_mapping button_context_settings_right_is_inc[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
};
static const struct button_mapping button_context_mainmenu[] =
{
{ ACTION_TREE_WPS, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_TREE),
};
static const struct button_mapping button_context_yesno[] =
{
{ ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
};
static const struct button_mapping button_context_colorchooser[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
};
static const struct button_mapping button_context_eq[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
};
static const struct button_mapping button_context_keyboard[] =
{
{ ACTION_KBD_LEFT, BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_PLAY | BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY | BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_KBD_DONE, BUTTON_PLAY | BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_PLAY | BUTTON_REL, BUTTON_NONE },
{ ACTION_KBD_ABORT, BUTTON_POWER, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_NEXT, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_NEXT | BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_PREV, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_PREV | BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST
};
static const struct button_mapping button_context_bmark[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
};
static const struct button_mapping button_context_time[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
};
static const struct button_mapping button_context_quickscreen[] =
{
{ ACTION_QS_TOP, BUTTON_VOL_UP|BUTTON_REL, BUTTON_NONE },
{ ACTION_QS_TOP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
};
static const struct button_mapping button_context_pitchscreen[] =
{
{ ACTION_PS_INC_SMALL, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_PS_DEC_SMALL, BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
};
static const struct button_mapping button_context_radio[] =
{
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
};
const struct button_mapping* target_get_context_mapping(int context)
{
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD: { return button_context_standard; }
case CONTEXT_WPS: { return button_context_wps; }
case CONTEXT_LIST: { return button_context_list; }
case CONTEXT_MAINMENU: { return button_context_mainmenu; }
case CONTEXT_CUSTOM | CONTEXT_TREE: { return button_context_tree; }
case CONTEXT_SETTINGS: { return button_context_settings; }
case CONTEXT_SETTINGS_COLOURCHOOSER: { return button_context_colorchooser; }
case CONTEXT_SETTINGS_EQ: { return button_context_eq; }
case CONTEXT_SETTINGS_TIME: { return button_context_time; }
case CONTEXT_YESNOSCREEN: { return button_context_yesno; }
case CONTEXT_KEYBOARD: { return button_context_keyboard; }
case CONTEXT_FM: { return button_context_radio; }
case CONTEXT_BOOKMARKSCREEN: { return button_context_bmark; }
case CONTEXT_QUICKSCREEN: { return button_context_quickscreen; }
case CONTEXT_PITCHSCREEN: { return button_context_pitchscreen; }
case CONTEXT_CUSTOM | CONTEXT_SETTINGS:
case CONTEXT_SETTINGS_RECTRIGGER: { return button_context_settings_right_is_inc; }
case CONTEXT_TREE:
{
if(global_settings.hold_lr_for_scroll_in_list)
{
return button_context_listtree_scroll_without_combo;
}
return button_context_listtree_scroll_with_combo;
}
}
return button_context_standard;
}

View file

@ -16998,3 +16998,20 @@
*: "sort playlists"
</voice>
</phrase>
<phrase>
id: LANG_USE_LED_INDICATORS
desc: LED indicators setting
user: core
<source>
*: none
general_purpose_led: "Use LED indicators"
</source>
<dest>
*: none
general_purpose_led: "Use LED indicators"
</dest>
<voice>
*: none
general_purpose_led: "Use LED indicators"
</voice>
</phrase>

View file

@ -272,6 +272,9 @@ MAKE_MENU(battery_menu, ID2P(LANG_BATTERY_MENU), 0, Icon_NOICON,
#if defined(DX50) || defined(DX90) || (defined(HAVE_USB_POWER) && !defined(USB_NONE) && !defined(SIMULATOR))
MENUITEM_SETTING(usb_mode, &global_settings.usb_mode, NULL);
#endif
#if defined(HAVE_GENERAL_PURPOSE_LED)
MENUITEM_SETTING(use_led_indicators, &global_settings.use_led_indicators, NULL);
#endif
/* Disk */
#ifdef HAVE_DISK_STORAGE
MENUITEM_SETTING(disk_spindown, &global_settings.disk_spindown, NULL);
@ -395,8 +398,8 @@ MENUITEM_SETTING(bt_selective_actions,
&global_settings.bt_selective_softlock_actions,
selectivesoftlock_callback);
MENUITEM_FUNCTION(sel_softlock_mask, 0, ID2P(LANG_SETTINGS),
selectivesoftlock_set_mask, selectivesoftlock_callback,
Icon_Menu_setting);
selectivesoftlock_set_mask, selectivesoftlock_callback,
Icon_Menu_setting);
MAKE_MENU(sel_softlock, ID2P(LANG_SOFTLOCK_SELECTIVE),
NULL, Icon_Menu_setting, &bt_selective_actions, &sel_softlock_mask);
@ -469,6 +472,9 @@ MAKE_MENU(system_menu, ID2P(LANG_SYSTEM),
#endif
#if defined(DX50) || defined(DX90) || (defined(HAVE_USB_POWER) && !defined(USB_NONE) && !defined(SIMULATOR))
&usb_mode,
#endif
#if defined(HAVE_GENERAL_PURPOSE_LED)
&use_led_indicators,
#endif
);

View file

@ -1,4 +1,4 @@
#if !defined(HAVE_TOUCHSCREEN) || defined(DX50) || defined(DX90)
#if !defined(HAVE_TOUCHSCREEN) || defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1)
/* In devices running RockBox as an application, but having a keypad */
#include "SOURCES"
#else

View file

@ -1,4 +1,4 @@
#if !defined(HAVE_TOUCHSCREEN) || defined(DX50) || defined(DX90)
#if !defined(HAVE_TOUCHSCREEN) || defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1)
/* This is for devices having a keypad, running RockBox as an application */
#include "SUBDIRS"

View file

@ -250,7 +250,7 @@ struct battery_tables_t {
#define BATTERY_ON_TXT "Play"
#define BATTERY_OFF_TXT "Power"
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -24,7 +24,7 @@ bubbles_bubble.220x176x1.bmp
((LCD_WIDTH == 360) && (LCD_HEIGHT == 400))
bubbles_bubble.320x240x1.bmp
#elif ((LCD_WIDTH == 640) && (LCD_HEIGHT == 480)) || \
((LCD_WIDTH == 480) && (LCD_HEIGHT == 640))
((LCD_WIDTH == 480) && (LCD_HEIGHT >= 640))
bubbles_bubble.640x480x1.bmp
#endif

View file

@ -436,7 +436,9 @@ invadrox_shield.22x16x16.bmp
invadrox_ufo.16x7x16.bmp
invadrox_ufo_explode.21x8x16.bmp
invadrox_numbers.50x7x16.bmp
#if LCD_WIDTH == 360 && LCD_HEIGHT == 400
#if LCD_WIDTH == 480
invadrox_background.480x640x16.bmp
#elif LCD_WIDTH == 360 && LCD_HEIGHT == 400
invadrox_background.360x400x16.bmp
#elif LCD_WIDTH == 320
invadrox_background.320x240x16.bmp
@ -513,8 +515,8 @@ jewels.320x240x16.bmp
jewels.320x240x16.bmp
#elif (LCD_WIDTH == 360) && (LCD_HEIGHT == 400)
jewels.360x400x16.bmp
#elif ((LCD_WIDTH == 640) && (LCD_HEIGHT == 480)) || \
((LCD_WIDTH == 480) && (LCD_HEIGHT == 640))
#elif ((LCD_WIDTH >= 480) && (LCD_HEIGHT >= 640)) || \
((LCD_WIDTH >= 640) && (LCD_HEIGHT >= 480))
jewels.640x480x16.bmp
#endif
@ -947,9 +949,9 @@ superdom_boarditems.320x240x16.bmp
((LCD_WIDTH == 240) && (LCD_HEIGHT == 400)) || \
((LCD_WIDTH == 360) && (LCD_HEIGHT == 400))
superdom_boarditems.240x320x16.bmp
#elif (LCD_WIDTH == 480 && LCD_HEIGHT == 640)
#elif (LCD_WIDTH >= 480 && LCD_HEIGHT >= 640)
superdom_boarditems.480x640x16.bmp
#elif (LCD_WIDTH == 640 && LCD_HEIGHT == 480)
#elif (LCD_WIDTH >= 640 && LCD_HEIGHT >= 480)
superdom_boarditems.640x480x16.bmp
#endif
#endif
@ -984,7 +986,7 @@ sliding_puzzle.176x176x16.bmp
sliding_puzzle.240x240x16.bmp
#elif SMALLER_DIMENSION <= 360
sliding_puzzle.360x360x16.bmp
#elif SMALLER_DIMENSION <= 480
#else
sliding_puzzle.480x480x16.bmp
#endif
#elif (LCD_DEPTH > 1)

View file

@ -608,7 +608,7 @@ enum {
#define BJACK_LEFT BUTTON_LEFT
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define BJACK_QUIT BUTTON_POWER
#define BJACK_QUIT_NAME "QUIT"

View file

@ -362,7 +362,7 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define UP BUTTON_UP
#define DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -135,7 +135,7 @@ enum {
#define NEXT_BB_WIDTH 32
#define NEXT_BB_Y 402
#elif (LCD_WIDTH == 480) && (LCD_HEIGHT == 640)
#elif (LCD_WIDTH == 480) && (LCD_HEIGHT >= 640)
#define XOFS 128
#define MAX_FPS 40

View file

@ -533,7 +533,7 @@ F3: equal to "="
#define CALCULATOR_CALC BUTTON_MENU
#define CALCULATOR_CLEAR BUTTON_BACK
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define CALCULATOR_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -419,7 +419,7 @@
#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -581,7 +581,7 @@
#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -395,7 +395,7 @@
#define CHC_SETTINGS_OK BUTTON_SELECT
#define CHC_SETTINGS_CANCEL BUTTON_POWER
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define CHC_QUIT BUTTON_POWER
#elif (CONFIG_KEYPAD == MA_PAD)

View file

@ -1312,7 +1312,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define CHIP8_KEY9 BUTTON_R
#define CHIP8_KEY0 BUTTON_L
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#else

View file

@ -314,7 +314,7 @@
#define CLIX_BUTTON_RIGHT BUTTON_RIGHT
#define CLIX_BUTTON_CLICK BUTTON_SELECT
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define CLIX_BUTTON_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -402,7 +402,7 @@
#define CUBE_PAUSE BUTTON_PLAY
#define CUBE_HIGHSPEED BUTTON_BACK
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -629,7 +629,7 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_WEAPON BUTTON_BACK
#define DOOMBUTTON_MAP (BUTTON_BACK|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define DOOMBUTTON_ESC BUTTON_POWER
#define DOOMBUTTON_MAP BUTTON_PREV

View file

@ -494,7 +494,7 @@
#define FLIPIT_STEP_BY_STEP BUTTON_VOL_UP
#define FLIPIT_TOGGLE BUTTON_SELECT
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -504,7 +504,7 @@
#define FRACTAL_PRECISION_DEC BUTTON_BACK
#define FRACTAL_RESET BUTTON_PLAY
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define FRACTAL_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -557,7 +557,7 @@
#define IMGVIEW_MENU (BUTTON_PLAY|BUTTON_REPEAT)
#define IMGVIEW_SLIDE_SHOW BUTTON_PLAY
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == RG_NANO_PAD

View file

@ -288,7 +288,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define RIGHT BUTTON_RIGHT
#define FIRE BUTTON_SELECT
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD
@ -369,7 +369,7 @@ CONFIG_KEYPAD == MROBE500_PAD
/* m:robe 500 defines */
#if ((LCD_WIDTH == 640) && (LCD_HEIGHT == 480)) || \
((LCD_WIDTH == 480) && (LCD_HEIGHT == 640))
((LCD_WIDTH == 480) && (LCD_HEIGHT >= 640))
/* Original arcade game size 224x240, 1bpp with
* red overlay at top and green overlay at bottom.

View file

@ -377,7 +377,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define HK_SELECT "SELECT"
#define HK_CANCEL "BACK"
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -255,7 +255,7 @@
#define BTN_FIRE BUTTON_SELECT
#define BTN_PAUSE BUTTON_POWER
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define BTN_FIRE BUTTON_CENTER
#define BTN_PAUSE BUTTON_POWER
#define BTN_HAVE_DIAGONAL
@ -298,7 +298,8 @@
(CONFIG_KEYPAD != DX50_PAD) && \
(CONFIG_KEYPAD != ONDAVX777_PAD) && \
(CONFIG_KEYPAD != CREATIVE_ZENXFI2_PAD) && \
(CONFIG_KEYPAD != SHANLING_Q1_PAD)
(CONFIG_KEYPAD != SHANLING_Q1_PAD) && \
(CONFIG_KEYPAD != HIBY_R3PROII_PAD)
#define BTN_FIRE BUTTON_BOTTOMLEFT
#define BTN_PAUSE BUTTON_TOPLEFT
#endif

View file

@ -517,7 +517,7 @@ const struct button_mapping pla_main_ctx[] =
{PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
{PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == SHANLING_Q1_PAD)
#elif (CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD)
{PLA_EXIT, BUTTON_POWER, BUTTON_NONE},
#elif (CONFIG_KEYPAD == MA_PAD)
{PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK},

View file

@ -325,7 +325,7 @@
#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
#define MIDI_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -452,7 +452,7 @@ CONFIG_KEYPAD == MROBE500_PAD
# define MINESWP_DISCOVER (BUTTON_MENU|BUTTON_REPEAT)
# define MINESWP_INFO BUTTON_MENU
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == RG_NANO_PAD

View file

@ -2583,7 +2583,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_SELECT
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -362,7 +362,7 @@ struct mpeg_settings settings;
#define MPEG_START_TIME_DOWN BUTTON_DOWN
#define MPEG_START_TIME_EXIT BUTTON_BACK
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define MPEG_START_TIME_EXIT BUTTON_POWER
#elif CONFIG_KEYPAD == RG_NANO_PAD

View file

@ -495,7 +495,7 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define MPEG_RW BUTTON_LEFT
#define MPEG_FF BUTTON_RIGHT
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == RG_NANO_PAD

View file

@ -564,7 +564,7 @@
#define OSCILLOSCOPE_VOL_UP BUTTON_UP
#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == RG_NANO_PAD

View file

@ -398,7 +398,7 @@
#define PACMAN_1UP BUTTON_VOL_UP
#define PACMAN_COIN BUTTON_PLAY
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define PACMAN_UP BUTTON_TOPMIDDLE
#define PACMAN_DOWN BUTTON_BOTTOMMIDDLE
#define PACMAN_LEFT BUTTON_MIDLEFT

View file

@ -728,7 +728,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define LVL_UP_TEXT "UP+MENU"
#define LVL_DOWN_TEXT "DOWN+MENU"
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == RG_NANO_PAD

View file

@ -325,7 +325,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PONG_RIGHT_UP BUTTON_BACK
#define PONG_RIGHT_DOWN BUTTON_RIGHT
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -361,7 +361,7 @@
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT
#define REVERSI_BUTTON_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif (CONFIG_KEYPAD == MA_PAD)

View file

@ -468,7 +468,7 @@
#define ROCKBLOX_RESTART BUTTON_BACK
#define ROCKBLOX_SCROLL_ENABLED 1
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD
@ -549,7 +549,7 @@
#define LEVEL_Y 140
#define LINES_Y 210
#elif (LCD_WIDTH == 480) && (LCD_HEIGHT == 640)
#elif (LCD_WIDTH == 480) && (LCD_HEIGHT >= 640)
#define BLOCK_WIDTH 30
#define BLOCK_HEIGHT 30

View file

@ -468,7 +468,7 @@ static void setoptions (void)
options.SELECT = BUTTON_VOL_UP;
options.MENU = BUTTON_POWER;
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -404,7 +404,7 @@
#define ROCKPAINT_LEFT BUTTON_LEFT
#define ROCKPAINT_RIGHT BUTTON_RIGHT
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == EROSQ_PAD

View file

@ -357,7 +357,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PUZZLE_SHUFFLE BUTTON_BACK
#define PUZZLE_PICTURE BUTTON_PLAY
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -313,7 +313,7 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
#define SNAKE_DOWN BUTTON_DOWN
#define SNAKE_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -458,7 +458,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define SNAKE2_PLAYPAUSE BUTTON_PLAY
#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -696,7 +696,7 @@
#define BUTTON_SAVE BUTTON_BACK
#define BUTTON_SAVE_NAME "BACK"
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -741,7 +741,7 @@ CONFIG_KEYPAD == MROBE500_PAD
# define HK_CUR2STACK "HOLD SELECT"
# define HK_REM2STACK "VOL+"
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
# define SOL_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == RG_NANO_PAD

View file

@ -372,7 +372,7 @@
#define AST_RIGHT BUTTON_RIGHT
#define AST_FIRE BUTTON_PLAY
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -668,7 +668,7 @@
#define STAR_LEVEL_DOWN_NAME "VOL-"
#define STAR_LEVEL_REPEAT_NAME "BACK"
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define STAR_QUIT BUTTON_POWER
#define STAR_QUIT_NAME "POWER"

View file

@ -469,7 +469,7 @@
#define SUDOKU_BUTTON_TOGGLE BUTTON_PLAY
#define SUDOKU_BUTTON_POSSIBLE BUTTON_BACK
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == RG_NANO_PAD

View file

@ -37,7 +37,7 @@
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI2_PAD
#define TOUCHSCREEN_QUIT BUTTON_POWER
#define TOUCHSCREEN_TOGGLE BUTTON_MENU
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define TOUCHSCREEN_QUIT BUTTON_POWER
#define TOUCHSCREEN_TOGGLE BUTTON_PLAY
#elif (CONFIG_KEYPAD == ANDROID_PAD)

View file

@ -572,7 +572,7 @@
#define TV_LINE_DOWN BUTTON_SCROLL_FWD
#define TV_BOOKMARK BUTTON_PLAY
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
#define TV_BOOKMARK BUTTON_PLAY
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -454,7 +454,7 @@
#define LABEL_MENU "MENU"
#define LABEL_VOLUME "VOL+/VOL-"
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -407,7 +407,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define BTN_QUIT BUTTON_POWER
#define BTN_STOPRESET BUTTON_BACK
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD
@ -522,7 +522,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define SPEED 4
#define MAX_WORM_SEGMENTS 512
#elif ((LCD_WIDTH == 640) && (LCD_HEIGHT == 480)) || \
((LCD_WIDTH == 480) && (LCD_HEIGHT == 640))
((LCD_WIDTH == 480) && (LCD_HEIGHT >= 640))
#define FOOD_SIZE 14
#define ARGH_SIZE 16
#define SPEED 4

View file

@ -360,7 +360,7 @@ CONFIG_KEYPAD == MROBE500_PAD
#define DOWN BUTTON_DOWN
#define PAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == RG_NANO_PAD

View file

@ -290,7 +290,7 @@
#define ZX_UP BUTTON_UP
#define ZX_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD
#elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
/* use touchscreen */
#elif CONFIG_KEYPAD == MA_PAD

View file

@ -75,6 +75,9 @@
#include "statusbar-skinned.h"
#include "bootchart.h"
#include "scroll_engine.h"
#ifdef HAVE_GENERAL_PURPOSE_LED
#include "led-general-purpose.h"
#endif
#ifndef __PCTOOL__
struct user_settings global_settings;
@ -1093,10 +1096,14 @@ void settings_apply(bool read_disk)
#if defined(DX50) || defined(DX90)
ibasso_set_usb_mode(global_settings.usb_mode);
#elif (defined(HIBY_R3PROII) || defined(HIBY_R1)) && !defined(SIMULATOR)
hiby_set_usb_mode(global_settings.usb_mode);
#elif defined(HAVE_USB_POWER) && !defined(USB_NONE) && !defined(SIMULATOR)
usb_set_mode(global_settings.usb_mode);
#endif
#if defined(HAVE_GENERAL_PURPOSE_LED)
led_hw_on();
#endif
#if defined(DX50) || defined(DX90)
ibasso_set_governor(global_settings.governor);
#endif

View file

@ -935,6 +935,9 @@ struct user_settings
int hp_lo_select; /* indicates automatic, headphone-only, or lineout-only operation */
#endif
bool playback_log; /* ROCKBOX_DIR/playback.log for tracks played */
#if defined(HAVE_GENERAL_PURPOSE_LED)
bool use_led_indicators;
#endif
};
/* global settings */

View file

@ -2399,7 +2399,7 @@ const struct settings_list settings[] = {
USBMODE_DEFAULT,
"usb mode",
"mass storage,charge"
#if defined(DX50) || defined(DX90)
#if defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1)
",adb"
#endif
,
@ -2408,14 +2408,18 @@ const struct settings_list settings[] = {
3,
#else
usb_set_mode,
#if defined(HIBY_R3PROII) || defined(HIBY_R1)
3,
#else
2,
#endif
#endif
ID2P(LANG_USB_MODE_MASS_STORAGE),
ID2P(LANG_USB_MODE_CHARGE)
#if defined(DX50) || defined(DX90)
#if defined(DX50) || defined(DX90) || defined(HIBY_R3PROII) || defined(HIBY_R1)
,ID2P(LANG_USB_MODE_ADB)
#endif
),
),
#endif
#if defined(BUTTON_REC) || \
(CONFIG_KEYPAD == GIGABEAT_PAD) || \
@ -2430,6 +2434,9 @@ const struct settings_list settings[] = {
ID2P(LANG_AUTO), ID2P(LANG_HEADPHONE), ID2P(LANG_LINEOUT)),
#endif
OFFON_SETTING(0, playback_log, LANG_LOGGING, false, "play log", NULL),
#if defined(HAVE_GENERAL_PURPOSE_LED)
OFFON_SETTING(0, use_led_indicators, LANG_USE_LED_INDICATORS, false, "LED indicators", NULL),
#endif
};
const int nb_settings = sizeof(settings)/sizeof(*settings);