1
0
Fork 0
forked from len0rd/rockbox

iRiver: added support for hold-button on main unit and remote control

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6320 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Christian Gmeiner 2005-04-19 11:34:22 +00:00
parent e5e08c7ee5
commit ed0c8764c4
4 changed files with 92 additions and 56 deletions

View file

@ -37,6 +37,9 @@
#include "powermgmt.h"
#include "led.h"
#include "sound.h"
#if CONFIG_KEYPAD == IRIVER_H100_PAD
#include "button.h"
#endif
static enum playmode ff_mode;
@ -157,7 +160,11 @@ void status_draw(bool force_redraw)
info.hour = tm->tm_hour;
info.minute = tm->tm_min;
info.shuffle = global_settings.playlist_shuffle;
#if CONFIG_KEYPAD == IRIVER_H100_PAD
info.keylock = button_hold();
#else
info.keylock = keys_locked;
#endif
info.repeat = global_settings.repeat_mode;
info.playmode = current_playmode();
#ifndef HAVE_LED

View file

@ -105,3 +105,4 @@ Tony Motakis
Andy Young
Alexandre Bourget
Richard S. La Charité III
Christian Gmeiner

View file

@ -356,6 +356,24 @@ static int button_read(void)
#if CONFIG_KEYPAD == IRIVER_H100_PAD
static bool hold_button = false;
static bool remote_hold_button = false;
/* light handling */
if (hold_button && !button_hold())
{
backlight_on();
}
if (remote_hold_button && !remote_button_hold())
{
remote_backlight_on();
}
hold_button = button_hold();
remote_hold_button = remote_button_hold();
/* normal buttons */
if (!button_hold())
{
data = adc_scan(ADC_BUTTONS);
if (data < 0x80)
@ -381,7 +399,11 @@ static int button_read(void)
else
if (data < 0xf0)
btn = BUTTON_REC;
}
/* remote buttons */
if (!remote_button_hold())
{
data = adc_scan(ADC_REMOTE);
if (data < 0x74)
@ -413,13 +435,18 @@ static int button_read(void)
else
if (data < 0xf0)
btn = BUTTON_RC_REW;
}
/* special buttons */
if (!button_hold())
{
data = GPIO1_READ;
if ((data & 0x20) == 0)
btn |= BUTTON_ON;
if ((data & 0x40) == 0)
btn |= BUTTON_RC_ON;
}
#elif CONFIG_KEYPAD == RECORDER_PAD

View file

@ -36,6 +36,7 @@ void button_set_flip(bool flip); /* turn 180 degrees */
#if CONFIG_KEYPAD == IRIVER_H100_PAD
bool button_hold(void);
bool remote_button_hold(void);
#endif
#define BUTTON_NONE 0x0000