forked from len0rd/rockbox
Moved archos button reading to target tree. * Cleanup of button.[ch]. * Deactivated serial remote code for recorder FM/V2 as there is no remote pin, saving ~500 bytes of code.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11612 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
e43f56b58d
commit
0e6dd7efcd
18 changed files with 625 additions and 368 deletions
|
@ -215,6 +215,7 @@ const struct button_mapping button_context_radio[] = {
|
|||
|
||||
};
|
||||
|
||||
#if BUTTON_REMOTE != 0
|
||||
/*****************************************************************************
|
||||
* Remote control mappings
|
||||
*****************************************************************************/
|
||||
|
@ -254,11 +255,14 @@ static const struct button_mapping* get_context_mapping_remote( int context )
|
|||
return remote_button_context_standard;
|
||||
}
|
||||
}
|
||||
#endif /* BUTTON_REMOTE != 0 */
|
||||
|
||||
const struct button_mapping* get_context_mapping( int context )
|
||||
{
|
||||
#if BUTTON_REMOTE != 0
|
||||
if (context&CONTEXT_REMOTE)
|
||||
return get_context_mapping_remote(context);
|
||||
#endif
|
||||
|
||||
switch( context )
|
||||
{
|
||||
|
|
|
@ -309,8 +309,7 @@ void init(void)
|
|||
#ifdef DEBUG
|
||||
debug_init();
|
||||
#else
|
||||
#ifndef HAVE_MMC /* FIXME: This is also necessary for debug builds
|
||||
* (do debug builds on the Ondio make sense?) */
|
||||
#if !defined(HAVE_FMADC) && !defined(HAVE_MMC)
|
||||
serial_setup();
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -34,10 +34,12 @@ PLUGIN_HEADER
|
|||
#if CONFIG_KEYPAD == RECORDER_PAD
|
||||
|
||||
#define BATTERY_ON BUTTON_PLAY
|
||||
#define BATTERY_RC_ON BUTTON_RC_PLAY
|
||||
|
||||
#define BATTERY_OFF BUTTON_OFF
|
||||
|
||||
#if BUTTON_REMOTE != 0
|
||||
#define BATTERY_RC_ON BUTTON_RC_PLAY
|
||||
#define BATTERY_RC_OFF BUTTON_RC_STOP
|
||||
#endif
|
||||
|
||||
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||
|
||||
|
|
|
@ -47,15 +47,17 @@ PLUGIN_HEADER
|
|||
#define BTN_DIR_RIGHT BUTTON_RIGHT
|
||||
#define BTN_PLAYER2_DIR1 BUTTON_F2
|
||||
#define BTN_PLAYER2_DIR2 BUTTON_F3
|
||||
#define BTN_RC_UP BUTTON_RC_VOL_UP
|
||||
#define BTN_RC_DOWN BUTTON_RC_VOL_DOWN
|
||||
#define BTN_STARTPAUSE BUTTON_PLAY
|
||||
#define BTN_QUIT BUTTON_OFF
|
||||
#define BTN_STOPRESET BUTTON_ON
|
||||
#define BTN_TOGGLE_KEYS BUTTON_F1
|
||||
|
||||
#if BUTTON_REMOTE != 0
|
||||
#define BTN_RC_UP BUTTON_RC_VOL_UP
|
||||
#define BTN_RC_DOWN BUTTON_RC_VOL_DOWN
|
||||
#define REMOTE
|
||||
#define MULTIPLAYER
|
||||
#endif
|
||||
|
||||
#define PLAYERS_TEXT "UP/DN"
|
||||
#define WORMS_TEXT "L/R"
|
||||
|
|
|
@ -281,6 +281,7 @@ drivers/i2c.c
|
|||
|
||||
#ifdef ARCHOS_PLAYER
|
||||
#ifndef SIMULATOR
|
||||
target/sh/archos/player/button-player.c
|
||||
target/sh/archos/player/lcd-as-player.S
|
||||
#endif /* SIMULATOR */
|
||||
#endif /* ARCHOS_PLAYER */
|
||||
|
@ -289,6 +290,7 @@ target/sh/archos/player/lcd-as-player.S
|
|||
#ifndef SIMULATOR
|
||||
target/sh/archos/lcd-archos-bitmap.c
|
||||
target/sh/archos/lcd-as-archos-bitmap.S
|
||||
target/sh/archos/recorder/button-recorder.c
|
||||
#endif /* SIMULATOR */
|
||||
#endif /* ARCHOS_RECORDER */
|
||||
|
||||
|
@ -296,6 +298,7 @@ target/sh/archos/lcd-as-archos-bitmap.S
|
|||
#ifndef SIMULATOR
|
||||
target/sh/archos/lcd-archos-bitmap.c
|
||||
target/sh/archos/lcd-as-archos-bitmap.S
|
||||
target/sh/archos/fm_v2/button-fm_v2.c
|
||||
#endif /* SIMULATOR */
|
||||
#endif /* ARCHOS_FMRECORDER || ARCHOS_RECORDERV2 */
|
||||
|
||||
|
@ -303,6 +306,7 @@ target/sh/archos/lcd-as-archos-bitmap.S
|
|||
#ifndef SIMULATOR
|
||||
target/sh/archos/lcd-archos-bitmap.c
|
||||
target/sh/archos/lcd-as-archos-bitmap.S
|
||||
target/sh/archos/ondio/button-ondio.c
|
||||
#endif /* SIMULATOR */
|
||||
#endif /* ARCHOS_ONDIOFM || ARCHOS_ONDIOFM */
|
||||
|
||||
|
|
|
@ -9,12 +9,6 @@
|
|||
*
|
||||
* Copyright (C) 2002 by Daniel Stenberg
|
||||
*
|
||||
* iPod driver based on code from the ipodlinux project - http://ipodlinux.org
|
||||
* Adapted for Rockbox in December 2005
|
||||
* Original file: linux/arch/armnommu/mach-ipod/keyboard.c
|
||||
* Copyright (c) 2003-2005 Bernard Leach (leachbj@bouncycastle.org)
|
||||
*
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
|
@ -29,25 +23,19 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
#include "config.h"
|
||||
#include "cpu.h"
|
||||
#include "system.h"
|
||||
#include "button.h"
|
||||
#include "kernel.h"
|
||||
#include "backlight.h"
|
||||
#include "adc.h"
|
||||
#include "serial.h"
|
||||
#include "power.h"
|
||||
#include "system.h"
|
||||
#include "powermgmt.h"
|
||||
#include "button-target.h"
|
||||
|
||||
#ifdef HAVE_REMOTE_LCD
|
||||
#include "lcd-remote.h"
|
||||
#endif
|
||||
|
||||
#ifdef TARGET_TREE
|
||||
#include "button-target.h"
|
||||
#endif
|
||||
|
||||
struct event_queue button_queue;
|
||||
|
||||
static long lastbtn; /* Last valid button status */
|
||||
|
@ -60,6 +48,9 @@ static bool filter_first_keypress;
|
|||
#ifdef HAVE_REMOTE_LCD
|
||||
static bool remote_filter_first_keypress;
|
||||
#endif
|
||||
#endif /* CONFIG_BACKLIGHT */
|
||||
#ifdef HAVE_HEADPHONE_DETECTION
|
||||
bool phones_present = false;
|
||||
#endif
|
||||
|
||||
/* how long until repeat kicks in, in ticks */
|
||||
|
@ -71,18 +62,8 @@ static bool remote_filter_first_keypress;
|
|||
/* speed repeat finishes at, in ticks */
|
||||
#define REPEAT_INTERVAL_FINISH 5
|
||||
|
||||
/* the power-off button and number of repeated keys before shutting off */
|
||||
#if !defined(TARGET_TREE)
|
||||
#define POWEROFF_BUTTON BUTTON_OFF
|
||||
#define POWEROFF_COUNT 10
|
||||
#endif
|
||||
|
||||
static int button_read(void);
|
||||
|
||||
#ifdef HAVE_HEADPHONE_DETECTION
|
||||
bool phones_present = false;
|
||||
#endif
|
||||
|
||||
static void button_tick(void)
|
||||
{
|
||||
static int count = 0;
|
||||
|
@ -99,8 +80,7 @@ static void button_tick(void)
|
|||
int diff;
|
||||
int btn;
|
||||
|
||||
#if (CONFIG_KEYPAD == PLAYER_PAD) || (CONFIG_KEYPAD == RECORDER_PAD)
|
||||
|
||||
#ifdef HAS_SERIAL_REMOTE
|
||||
/* Post events for the remote control */
|
||||
btn = remote_control_rx();
|
||||
if(btn)
|
||||
|
@ -180,9 +160,7 @@ static void button_tick(void)
|
|||
key */
|
||||
#ifdef HAVE_SW_POWEROFF
|
||||
if ((btn == POWEROFF_BUTTON
|
||||
#ifdef BUTTON_RC_STOP
|
||||
|| btn == BUTTON_RC_STOP
|
||||
#elif defined(RC_POWEROFF_BUTTON)
|
||||
#ifdef RC_POWEROFF_BUTTON
|
||||
|| btn == RC_POWEROFF_BUTTON
|
||||
#endif
|
||||
) &&
|
||||
|
@ -299,22 +277,8 @@ long button_get_w_tmo(int ticks)
|
|||
void button_init(void)
|
||||
{
|
||||
/* hardware inits */
|
||||
#ifdef TARGET_TREE
|
||||
button_init_device();
|
||||
|
||||
#elif CONFIG_KEYPAD == RECORDER_PAD
|
||||
/* Set PB4 and PB8 as input pins */
|
||||
PBCR1 &= 0xfffc; /* PB8MD = 00 */
|
||||
PBCR2 &= 0xfcff; /* PB4MD = 00 */
|
||||
PBIOR &= ~0x0110; /* Inputs */
|
||||
#elif CONFIG_KEYPAD == PLAYER_PAD
|
||||
/* set PA5 and PA11 as input pins */
|
||||
PACR1 &= 0xff3f; /* PA11MD = 00 */
|
||||
PACR2 &= 0xfbff; /* PA5MD = 0 */
|
||||
PAIOR &= ~0x0820; /* Inputs */
|
||||
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||
/* nothing to initialize here */
|
||||
#endif /* CONFIG_KEYPAD */
|
||||
queue_init(&button_queue, true);
|
||||
button_read();
|
||||
lastbtn = button_read();
|
||||
|
@ -409,195 +373,13 @@ void set_remote_backlight_filter_keypress(bool value)
|
|||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
Archos hardware button hookup
|
||||
=============================
|
||||
|
||||
Recorder / Recorder FM/V2
|
||||
-------------------------
|
||||
F1, F2, F3, UP: connected to AN4 through a resistor network
|
||||
DOWN, PLAY, LEFT, RIGHT: likewise connected to AN5
|
||||
|
||||
The voltage on AN4/ AN5 depends on which keys (or key combo) is pressed
|
||||
FM/V2 has PLAY and RIGHT switched compared to plain recorder
|
||||
|
||||
ON: PB8, low active (plain recorder) / AN3, low active (fm/v2)
|
||||
OFF: PB4, low active (plain recorder) / AN2, high active (fm/v2)
|
||||
|
||||
Player
|
||||
------
|
||||
LEFT: AN0
|
||||
MENU: AN1
|
||||
RIGHT: AN2
|
||||
PLAY: AN3
|
||||
|
||||
STOP: PA11
|
||||
ON: PA5
|
||||
|
||||
All buttons are low active
|
||||
|
||||
Ondio
|
||||
-----
|
||||
LEFT, RIGHT, UP, DOWN: connected to AN4 through a resistor network
|
||||
|
||||
The voltage on AN4 depends on which keys (or key combo) is pressed
|
||||
|
||||
OPTION: AN2, high active (assigned as MENU)
|
||||
ON/OFF: AN3, low active (assigned as OFF)
|
||||
|
||||
*/
|
||||
|
||||
#if CONFIG_KEYPAD == RECORDER_PAD
|
||||
|
||||
#ifdef HAVE_FMADC
|
||||
/* FM Recorder super-special levels */
|
||||
#define LEVEL1 150
|
||||
#define LEVEL2 385
|
||||
#define LEVEL3 545
|
||||
#define LEVEL4 700
|
||||
#define ROW2_BUTTON1 BUTTON_PLAY
|
||||
#define ROW2_BUTTON3 BUTTON_RIGHT
|
||||
|
||||
#else
|
||||
/* plain bog standard Recorder levels */
|
||||
#define LEVEL1 250
|
||||
#define LEVEL2 500
|
||||
#define LEVEL3 700
|
||||
#define LEVEL4 900
|
||||
#define ROW2_BUTTON1 BUTTON_RIGHT
|
||||
#define ROW2_BUTTON3 BUTTON_PLAY
|
||||
#endif /* HAVE_FMADC */
|
||||
|
||||
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||
/* Ondio levels */
|
||||
#define LEVEL1 165
|
||||
#define LEVEL2 415
|
||||
#define LEVEL3 585
|
||||
#define LEVEL4 755
|
||||
|
||||
#endif /* CONFIG_KEYPAD */
|
||||
|
||||
/*
|
||||
* Get button pressed from hardware
|
||||
*/
|
||||
static int button_read(void)
|
||||
{
|
||||
int btn = BUTTON_NONE;
|
||||
int btn = button_read_device();
|
||||
int retval;
|
||||
#ifndef TARGET_TREE
|
||||
int data;
|
||||
#endif
|
||||
|
||||
#ifdef TARGET_TREE
|
||||
btn = button_read_device();
|
||||
|
||||
#elif CONFIG_KEYPAD == RECORDER_PAD
|
||||
#ifndef HAVE_FMADC
|
||||
static int off_button_count = 0;
|
||||
#endif
|
||||
|
||||
/* check F1..F3 and UP */
|
||||
data = adc_read(ADC_BUTTON_ROW1);
|
||||
if (data >= LEVEL1)
|
||||
{
|
||||
if (data >= LEVEL3)
|
||||
if (data >= LEVEL4)
|
||||
btn = BUTTON_F3;
|
||||
else
|
||||
btn = BUTTON_UP;
|
||||
else
|
||||
if (data >= LEVEL2)
|
||||
btn = BUTTON_F2;
|
||||
else
|
||||
btn = BUTTON_F1;
|
||||
}
|
||||
|
||||
/* Some units have mushy keypads, so pressing UP also activates
|
||||
the Left/Right buttons. Let's combat that by skipping the AN5
|
||||
checks when UP is pressed. */
|
||||
if(!(btn & BUTTON_UP))
|
||||
{
|
||||
/* check DOWN, PLAY, LEFT, RIGHT */
|
||||
data = adc_read(ADC_BUTTON_ROW2);
|
||||
if (data >= LEVEL1)
|
||||
{
|
||||
if (data >= LEVEL3)
|
||||
if (data >= LEVEL4)
|
||||
btn |= BUTTON_DOWN;
|
||||
else
|
||||
btn |= ROW2_BUTTON3;
|
||||
else
|
||||
if (data >= LEVEL2)
|
||||
btn |= BUTTON_LEFT;
|
||||
else
|
||||
btn |= ROW2_BUTTON1;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_FMADC
|
||||
if ( adc_read(ADC_BUTTON_ON) < 512 )
|
||||
btn |= BUTTON_ON;
|
||||
if ( adc_read(ADC_BUTTON_OFF) > 512 )
|
||||
btn |= BUTTON_OFF;
|
||||
#else
|
||||
/* check port B pins for ON and OFF */
|
||||
data = PBDR;
|
||||
if ((data & 0x0100) == 0)
|
||||
btn |= BUTTON_ON;
|
||||
|
||||
if ((data & 0x0010) == 0)
|
||||
{
|
||||
/* When the batteries are low, the low-battery shutdown logic causes
|
||||
* spurious OFF events due to voltage fluctuation on some units.
|
||||
* Only accept OFF when read several times in sequence. */
|
||||
if (++off_button_count > 3)
|
||||
btn |= BUTTON_OFF;
|
||||
}
|
||||
else
|
||||
off_button_count = 0;
|
||||
#endif
|
||||
|
||||
#elif CONFIG_KEYPAD == PLAYER_PAD
|
||||
/* buttons are active low */
|
||||
if (adc_read(0) < 0x180)
|
||||
btn = BUTTON_LEFT;
|
||||
if (adc_read(1) < 0x180)
|
||||
btn |= BUTTON_MENU;
|
||||
if(adc_read(2) < 0x180)
|
||||
btn |= BUTTON_RIGHT;
|
||||
if(adc_read(3) < 0x180)
|
||||
btn |= BUTTON_PLAY;
|
||||
|
||||
/* check port A pins for ON and STOP */
|
||||
data = PADR;
|
||||
if ( !(data & 0x0020) )
|
||||
btn |= BUTTON_ON;
|
||||
if ( !(data & 0x0800) )
|
||||
btn |= BUTTON_STOP;
|
||||
|
||||
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||
/* Check the 4 direction keys */
|
||||
data = adc_read(ADC_BUTTON_ROW1);
|
||||
if (data >= LEVEL1)
|
||||
{
|
||||
if (data >= LEVEL3)
|
||||
if (data >= LEVEL4)
|
||||
btn = BUTTON_LEFT;
|
||||
else
|
||||
btn = BUTTON_RIGHT;
|
||||
else
|
||||
if (data >= LEVEL2)
|
||||
btn = BUTTON_UP;
|
||||
else
|
||||
btn = BUTTON_DOWN;
|
||||
}
|
||||
|
||||
if(adc_read(ADC_BUTTON_OPTION) > 0x200) /* active high */
|
||||
btn |= BUTTON_MENU;
|
||||
if(adc_read(ADC_BUTTON_ONOFF) < 0x120) /* active low */
|
||||
btn |= BUTTON_OFF;
|
||||
|
||||
#endif /* CONFIG_KEYPAD */
|
||||
|
||||
#ifdef HAVE_LCD_BITMAP
|
||||
if (btn && flipped)
|
||||
|
|
|
@ -33,7 +33,8 @@
|
|||
/* FIX: this doesn't work on iRiver or iPod yet */
|
||||
/* iFP7xx has no remote */
|
||||
|
||||
#ifndef HAVE_MMC /* MMC takes serial port 1, so don't mess with it */
|
||||
#if !defined(HAVE_FMADC) /* Recorder FM/V2 has no remote control pin */ \
|
||||
&& !defined(HAVE_MMC) /* MMC takes serial port 1, so don't mess with it */
|
||||
|
||||
/* Received byte identifiers */
|
||||
#define PLAY 0xC1
|
||||
|
@ -51,7 +52,7 @@ void serial_setup (void)
|
|||
SMR1 = 0x00;
|
||||
SCR1 = 0;
|
||||
BRR1 = (FREQ/(32*9600))-1;
|
||||
SSR1 &= 0; /* The status bits must be read before they are cleared,
|
||||
and_b(0, &SSR1); /* The status bits must be read before they are cleared,
|
||||
so we do an AND operation */
|
||||
|
||||
/* Let the hardware settle. The serial port needs to wait "at least
|
||||
|
@ -75,7 +76,7 @@ int remote_control_rx(void)
|
|||
|
||||
/* Errors? Just clear'em. The receiver stops if we don't */
|
||||
if(SSR1 & (SCI_ORER | SCI_FER | SCI_PER)) {
|
||||
SSR1 &= ~(SCI_ORER | SCI_FER | SCI_PER);
|
||||
and_b(~(SCI_ORER | SCI_FER | SCI_PER), &SSR1);
|
||||
last_valid_button = BUTTON_NONE;
|
||||
last_was_error = true;
|
||||
return BUTTON_NONE;
|
||||
|
@ -84,7 +85,7 @@ int remote_control_rx(void)
|
|||
if(SSR1 & SCI_RDRF) {
|
||||
/* Read byte and clear the Rx Full bit */
|
||||
btn = RDR1;
|
||||
SSR1 &= ~SCI_RDRF;
|
||||
and_b(~SCI_RDRF, &SSR1);
|
||||
|
||||
if(last_was_error)
|
||||
{
|
||||
|
@ -93,7 +94,6 @@ int remote_control_rx(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
#if CONFIG_KEYPAD != ONDIO_PAD
|
||||
switch (btn)
|
||||
{
|
||||
case STOP:
|
||||
|
@ -124,7 +124,6 @@ int remote_control_rx(void)
|
|||
last_valid_button = BUTTON_NONE;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -142,7 +141,7 @@ int remote_control_rx(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
#endif /* HAVE_MMC */
|
||||
#endif /* !HAVE_FMADC && !HAVE_MMC */
|
||||
#elif defined(CPU_COLDFIRE) && defined(HAVE_SERIAL)
|
||||
|
||||
void serial_tx(const unsigned char *buf)
|
||||
|
|
|
@ -22,11 +22,8 @@
|
|||
|
||||
#include <stdbool.h>
|
||||
#include "config.h"
|
||||
#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
|
||||
(CONFIG_KEYPAD == IRIVER_H300_PAD)
|
||||
#define HAS_BUTTON_HOLD
|
||||
#define HAS_REMOTE_BUTTON_HOLD
|
||||
#endif
|
||||
#include "button-target.h"
|
||||
|
||||
extern struct event_queue button_queue;
|
||||
|
||||
void button_init (void);
|
||||
|
@ -44,12 +41,6 @@ void set_remote_backlight_filter_keypress(bool value);
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAS_BUTTON_HOLD
|
||||
bool button_hold(void);
|
||||
#endif
|
||||
#ifdef HAS_REMOTE_BUTTON_HOLD
|
||||
bool remote_button_hold(void);
|
||||
#endif
|
||||
#ifdef HAVE_HEADPHONE_DETECTION
|
||||
bool headphones_inserted(void);
|
||||
#endif
|
||||
|
@ -64,110 +55,4 @@ void wheel_send_events(bool send);
|
|||
#define BUTTON_REL 0x02000000
|
||||
#define BUTTON_REPEAT 0x04000000
|
||||
|
||||
|
||||
#ifdef TARGET_TREE
|
||||
#include "button-target.h"
|
||||
#else
|
||||
|
||||
/* Target specific button codes */
|
||||
#if CONFIG_KEYPAD == RECORDER_PAD
|
||||
|
||||
/* Recorder specific button codes */
|
||||
|
||||
/* Main unit's buttons */
|
||||
#define BUTTON_ON 0x00000001
|
||||
#define BUTTON_OFF 0x00000002
|
||||
|
||||
#define BUTTON_LEFT 0x00000004
|
||||
#define BUTTON_RIGHT 0x00000008
|
||||
#define BUTTON_UP 0x00000010
|
||||
#define BUTTON_DOWN 0x00000020
|
||||
|
||||
#define BUTTON_PLAY 0x00000040
|
||||
|
||||
#define BUTTON_F1 0x00000080
|
||||
#define BUTTON_F2 0x00000100
|
||||
#define BUTTON_F3 0x00000200
|
||||
|
||||
#define BUTTON_MAIN (BUTTON_ON|BUTTON_OFF|BUTTON_LEFT|BUTTON_RIGHT\
|
||||
|BUTTON_UP|BUTTON_DOWN|BUTTON_PLAY\
|
||||
|BUTTON_F1|BUTTON_F2|BUTTON_F3)
|
||||
|
||||
/* Remote control's buttons */
|
||||
#define BUTTON_RC_PLAY 0x00100000
|
||||
#define BUTTON_RC_STOP 0x00080000
|
||||
|
||||
#define BUTTON_RC_LEFT 0x00040000
|
||||
#define BUTTON_RC_RIGHT 0x00020000
|
||||
#define BUTTON_RC_VOL_UP 0x00010000
|
||||
#define BUTTON_RC_VOL_DOWN 0x00008000
|
||||
|
||||
#define BUTTON_REMOTE (BUTTON_RC_PLAY|BUTTON_RC_STOP\
|
||||
|BUTTON_RC_LEFT|BUTTON_RC_RIGHT\
|
||||
|BUTTON_RC_VOL_UP|BUTTON_RC_VOL_DOWN)
|
||||
|
||||
#elif CONFIG_KEYPAD == PLAYER_PAD
|
||||
|
||||
/* Main unit's buttons */
|
||||
#define BUTTON_ON 0x00000001
|
||||
#define BUTTON_STOP 0x00000002
|
||||
|
||||
#define BUTTON_LEFT 0x00000004
|
||||
#define BUTTON_RIGHT 0x00000008
|
||||
#define BUTTON_PLAY 0x00000010
|
||||
#define BUTTON_MENU 0x00000020
|
||||
|
||||
#define BUTTON_MAIN (BUTTON_ON|BUTTON_STOP|BUTTON_LEFT|BUTTON_RIGHT\
|
||||
|BUTTON_PLAY|BUTTON_MENU)
|
||||
|
||||
/* Remote control's buttons */
|
||||
#define BUTTON_RC_PLAY 0x00100000
|
||||
#define BUTTON_RC_STOP 0x00080000
|
||||
|
||||
#define BUTTON_RC_LEFT 0x00040000
|
||||
#define BUTTON_RC_RIGHT 0x00020000
|
||||
#define BUTTON_RC_VOL_UP 0x00010000
|
||||
#define BUTTON_RC_VOL_DOWN 0x00008000
|
||||
|
||||
#define BUTTON_REMOTE (BUTTON_RC_PLAY|BUTTON_RC_STOP\
|
||||
|BUTTON_RC_LEFT|BUTTON_RC_RIGHT\
|
||||
|BUTTON_RC_VOL_UP|BUTTON_RC_VOL_DOWN)
|
||||
|
||||
|
||||
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||
|
||||
/* Ondio specific button codes */
|
||||
|
||||
#define BUTTON_OFF 0x00000001
|
||||
#define BUTTON_MENU 0x00000002
|
||||
|
||||
#define BUTTON_LEFT 0x00000004
|
||||
#define BUTTON_RIGHT 0x00000008
|
||||
#define BUTTON_UP 0x00000010
|
||||
#define BUTTON_DOWN 0x00000020
|
||||
|
||||
#define BUTTON_MAIN (BUTTON_OFF|BUTTON_MENU|BUTTON_LEFT|BUTTON_RIGHT\
|
||||
|BUTTON_UP|BUTTON_DOWN)
|
||||
|
||||
#define BUTTON_REMOTE 0
|
||||
|
||||
#elif 0
|
||||
|
||||
/*
|
||||
* Please, add the next Rockbox target's button defines here,
|
||||
* using:
|
||||
* - bits 0 and up: for main unit's buttons
|
||||
* - bits 20 (0x00100000) and downwards for the remote buttons (if applicable)
|
||||
* Don't forget to add BUTTON_MAIN and BUTTON_REMOTE masks
|
||||
* Currently, main buttons on all targets are up to bit 9 (0x00000200),
|
||||
* and remote buttons are down to bit 10 (0x00000400)
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#endif /* RECORDER/PLAYER/ONDIO KEYPAD */
|
||||
|
||||
#endif /* TARGET_TREE */
|
||||
|
||||
#endif /* _BUTTON_H_ */
|
||||
|
||||
|
|
|
@ -80,6 +80,7 @@ bool button_scan_enabled(void);
|
|||
|BUTTON_RC_SOURCE)
|
||||
|
||||
#define POWEROFF_BUTTON BUTTON_OFF
|
||||
#define RC_POWEROFF_BUTTON BUTTON_RC_STOP
|
||||
#define POWEROFF_COUNT 10
|
||||
|
||||
#endif /* _BUTTON_TARGET_H_ */
|
||||
|
|
97
firmware/target/sh/archos/fm_v2/button-fm_v2.c
Executable file
97
firmware/target/sh/archos/fm_v2/button-fm_v2.c
Executable file
|
@ -0,0 +1,97 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2006 by Jens Arnold
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "button.h"
|
||||
#include "backlight.h"
|
||||
#include "adc.h"
|
||||
|
||||
/*
|
||||
Recorder FM/V2 hardware button hookup
|
||||
=====================================
|
||||
|
||||
F1, F2, F3, UP: connected to AN4 through a resistor network
|
||||
DOWN, PLAY, LEFT, RIGHT: likewise connected to AN5
|
||||
|
||||
The voltage on AN4/ AN5 depends on which keys (or key combo) is pressed
|
||||
FM/V2 has PLAY and RIGHT switched compared to plain recorder
|
||||
|
||||
ON: AN3, low active
|
||||
OFF: AN2, high active
|
||||
*/
|
||||
|
||||
void button_init_device(void)
|
||||
{
|
||||
/* Set PB4 and PB8 as input pins */
|
||||
PBCR1 &= 0xfffc; /* PB8MD = 00 */
|
||||
PBCR2 &= 0xfcff; /* PB4MD = 00 */
|
||||
PBIOR &= ~0x0110; /* Inputs */
|
||||
}
|
||||
|
||||
int button_read_device(void)
|
||||
{
|
||||
int btn = BUTTON_NONE;
|
||||
int data;
|
||||
|
||||
/* check F1..F3 and UP */
|
||||
data = adc_read(ADC_BUTTON_ROW1);
|
||||
if (data >= 150)
|
||||
{
|
||||
if (data >= 545)
|
||||
if (data >= 700)
|
||||
btn = BUTTON_F3;
|
||||
else
|
||||
btn = BUTTON_UP;
|
||||
else
|
||||
if (data >= 385)
|
||||
btn = BUTTON_F2;
|
||||
else
|
||||
btn = BUTTON_F1;
|
||||
}
|
||||
|
||||
/* Some units have mushy keypads, so pressing UP also activates
|
||||
the Left/Right buttons. Let's combat that by skipping the AN5
|
||||
checks when UP is pressed. */
|
||||
if(!(btn & BUTTON_UP))
|
||||
{
|
||||
/* check DOWN, PLAY, LEFT, RIGHT */
|
||||
data = adc_read(ADC_BUTTON_ROW2);
|
||||
if (data >= 150)
|
||||
{
|
||||
if (data >= 545)
|
||||
if (data >= 700)
|
||||
btn |= BUTTON_DOWN;
|
||||
else
|
||||
btn |= BUTTON_RIGHT;
|
||||
else
|
||||
if (data >= 385)
|
||||
btn |= BUTTON_LEFT;
|
||||
else
|
||||
btn |= BUTTON_PLAY;
|
||||
}
|
||||
}
|
||||
|
||||
if ( adc_read(ADC_BUTTON_ON) < 512 )
|
||||
btn |= BUTTON_ON;
|
||||
if ( adc_read(ADC_BUTTON_OFF) > 512 )
|
||||
btn |= BUTTON_OFF;
|
||||
|
||||
return btn;
|
||||
}
|
53
firmware/target/sh/archos/fm_v2/button-target.h
Executable file
53
firmware/target/sh/archos/fm_v2/button-target.h
Executable file
|
@ -0,0 +1,53 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2006 by Jens Arnold
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef _BUTTON_TARGET_H_
|
||||
#define _BUTTON_TARGET_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "config.h"
|
||||
|
||||
void button_init_device(void);
|
||||
int button_read_device(void);
|
||||
|
||||
/* Main unit's buttons */
|
||||
#define BUTTON_ON 0x00000001
|
||||
#define BUTTON_OFF 0x00000002
|
||||
|
||||
#define BUTTON_LEFT 0x00000004
|
||||
#define BUTTON_RIGHT 0x00000008
|
||||
#define BUTTON_UP 0x00000010
|
||||
#define BUTTON_DOWN 0x00000020
|
||||
|
||||
#define BUTTON_PLAY 0x00000040
|
||||
|
||||
#define BUTTON_F1 0x00000080
|
||||
#define BUTTON_F2 0x00000100
|
||||
#define BUTTON_F3 0x00000200
|
||||
|
||||
#define BUTTON_MAIN (BUTTON_ON|BUTTON_OFF|BUTTON_LEFT|BUTTON_RIGHT\
|
||||
|BUTTON_UP|BUTTON_DOWN|BUTTON_PLAY\
|
||||
|BUTTON_F1|BUTTON_F2|BUTTON_F3)
|
||||
|
||||
#define BUTTON_REMOTE 0
|
||||
|
||||
#define POWEROFF_BUTTON BUTTON_OFF
|
||||
#define POWEROFF_COUNT 10
|
||||
|
||||
#endif /* _BUTTON_TARGET_H_ */
|
65
firmware/target/sh/archos/ondio/button-ondio.c
Executable file
65
firmware/target/sh/archos/ondio/button-ondio.c
Executable file
|
@ -0,0 +1,65 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2006 by Jens Arnold
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "button.h"
|
||||
#include "backlight.h"
|
||||
#include "adc.h"
|
||||
|
||||
/*
|
||||
Ondio hardware button hookup
|
||||
============================
|
||||
|
||||
LEFT, RIGHT, UP, DOWN: connected to AN4 through a resistor network
|
||||
|
||||
The voltage on AN4 depends on which keys (or key combo) is pressed
|
||||
|
||||
OPTION: AN2, high active (assigned as MENU)
|
||||
ON/OFF: AN3, low active (assigned as OFF)
|
||||
*/
|
||||
|
||||
int button_read_device(void)
|
||||
{
|
||||
int btn = BUTTON_NONE;
|
||||
int data;
|
||||
|
||||
/* Check the 4 direction keys */
|
||||
data = adc_read(ADC_BUTTON_ROW1);
|
||||
if (data >= 165)
|
||||
{
|
||||
if (data >= 585)
|
||||
if (data >= 755)
|
||||
btn = BUTTON_LEFT;
|
||||
else
|
||||
btn = BUTTON_RIGHT;
|
||||
else
|
||||
if (data >= 415)
|
||||
btn = BUTTON_UP;
|
||||
else
|
||||
btn = BUTTON_DOWN;
|
||||
}
|
||||
|
||||
if(adc_read(ADC_BUTTON_OPTION) > 0x200) /* active high */
|
||||
btn |= BUTTON_MENU;
|
||||
if(adc_read(ADC_BUTTON_ONOFF) < 0x120) /* active low */
|
||||
btn |= BUTTON_OFF;
|
||||
|
||||
return btn;
|
||||
}
|
45
firmware/target/sh/archos/ondio/button-target.h
Executable file
45
firmware/target/sh/archos/ondio/button-target.h
Executable file
|
@ -0,0 +1,45 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2006 by Jens Arnold
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef _BUTTON_TARGET_H_
|
||||
#define _BUTTON_TARGET_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "config.h"
|
||||
|
||||
#define button_init_device()
|
||||
int button_read_device(void);
|
||||
|
||||
#define BUTTON_OFF 0x00000001
|
||||
#define BUTTON_MENU 0x00000002
|
||||
|
||||
#define BUTTON_LEFT 0x00000004
|
||||
#define BUTTON_RIGHT 0x00000008
|
||||
#define BUTTON_UP 0x00000010
|
||||
#define BUTTON_DOWN 0x00000020
|
||||
|
||||
#define BUTTON_MAIN (BUTTON_OFF|BUTTON_MENU|BUTTON_LEFT|BUTTON_RIGHT\
|
||||
|BUTTON_UP|BUTTON_DOWN)
|
||||
|
||||
#define BUTTON_REMOTE 0
|
||||
|
||||
#define POWEROFF_BUTTON BUTTON_OFF
|
||||
#define POWEROFF_COUNT 10
|
||||
|
||||
#endif /* _BUTTON_TARGET_H_ */
|
74
firmware/target/sh/archos/player/button-player.c
Executable file
74
firmware/target/sh/archos/player/button-player.c
Executable file
|
@ -0,0 +1,74 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2006 by Jens Arnold
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "button.h"
|
||||
#include "backlight.h"
|
||||
#include "adc.h"
|
||||
|
||||
/*
|
||||
Player hardware button hookup
|
||||
=============================
|
||||
|
||||
Player
|
||||
------
|
||||
LEFT: AN0
|
||||
MENU: AN1
|
||||
RIGHT: AN2
|
||||
PLAY: AN3
|
||||
|
||||
STOP: PA11
|
||||
ON: PA5
|
||||
|
||||
All buttons are low active
|
||||
*/
|
||||
|
||||
void button_init_device(void)
|
||||
{
|
||||
/* set PA5 and PA11 as input pins */
|
||||
PACR1 &= 0xff3f; /* PA11MD = 00 */
|
||||
PACR2 &= 0xfbff; /* PA5MD = 0 */
|
||||
PAIOR &= ~0x0820; /* Inputs */
|
||||
}
|
||||
|
||||
int button_read_device(void)
|
||||
{
|
||||
int btn = BUTTON_NONE;
|
||||
int data;
|
||||
|
||||
/* buttons are active low */
|
||||
if (adc_read(0) < 0x180)
|
||||
btn = BUTTON_LEFT;
|
||||
if (adc_read(1) < 0x180)
|
||||
btn |= BUTTON_MENU;
|
||||
if (adc_read(2) < 0x180)
|
||||
btn |= BUTTON_RIGHT;
|
||||
if (adc_read(3) < 0x180)
|
||||
btn |= BUTTON_PLAY;
|
||||
|
||||
/* check port A pins for ON and STOP */
|
||||
data = PADR;
|
||||
if ( !(data & 0x0020) )
|
||||
btn |= BUTTON_ON;
|
||||
if ( !(data & 0x0800) )
|
||||
btn |= BUTTON_STOP;
|
||||
|
||||
return btn;
|
||||
}
|
56
firmware/target/sh/archos/player/button-target.h
Executable file
56
firmware/target/sh/archos/player/button-target.h
Executable file
|
@ -0,0 +1,56 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2006 by Jens Arnold
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef _BUTTON_TARGET_H_
|
||||
#define _BUTTON_TARGET_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "config.h"
|
||||
|
||||
#define HAS_SERIAL_REMOTE
|
||||
|
||||
void button_init_device(void);
|
||||
int button_read_device(void);
|
||||
|
||||
/* Main unit's buttons */
|
||||
#define BUTTON_ON 0x00000001
|
||||
#define BUTTON_STOP 0x00000002
|
||||
|
||||
#define BUTTON_LEFT 0x00000004
|
||||
#define BUTTON_RIGHT 0x00000008
|
||||
#define BUTTON_PLAY 0x00000010
|
||||
#define BUTTON_MENU 0x00000020
|
||||
|
||||
#define BUTTON_MAIN (BUTTON_ON|BUTTON_STOP|BUTTON_LEFT|BUTTON_RIGHT\
|
||||
|BUTTON_PLAY|BUTTON_MENU)
|
||||
|
||||
/* Remote control's buttons */
|
||||
#define BUTTON_RC_PLAY 0x00100000
|
||||
#define BUTTON_RC_STOP 0x00080000
|
||||
|
||||
#define BUTTON_RC_LEFT 0x00040000
|
||||
#define BUTTON_RC_RIGHT 0x00020000
|
||||
#define BUTTON_RC_VOL_UP 0x00010000
|
||||
#define BUTTON_RC_VOL_DOWN 0x00008000
|
||||
|
||||
#define BUTTON_REMOTE (BUTTON_RC_PLAY|BUTTON_RC_STOP\
|
||||
|BUTTON_RC_LEFT|BUTTON_RC_RIGHT\
|
||||
|BUTTON_RC_VOL_UP|BUTTON_RC_VOL_DOWN)
|
||||
|
||||
#endif /* _BUTTON_TARGET_H_ */
|
108
firmware/target/sh/archos/recorder/button-recorder.c
Executable file
108
firmware/target/sh/archos/recorder/button-recorder.c
Executable file
|
@ -0,0 +1,108 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2006 by Jens Arnold
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "button.h"
|
||||
#include "backlight.h"
|
||||
#include "adc.h"
|
||||
|
||||
/*
|
||||
Recorder hardware button hookup
|
||||
===============================
|
||||
|
||||
F1, F2, F3, UP: connected to AN4 through a resistor network
|
||||
DOWN, PLAY, LEFT, RIGHT: likewise connected to AN5
|
||||
|
||||
The voltage on AN4/ AN5 depends on which keys (or key combo) is pressed
|
||||
|
||||
ON: PB8, low active
|
||||
OFF: PB4, low active
|
||||
*/
|
||||
|
||||
void button_init_device(void)
|
||||
{
|
||||
/* Set PB4 and PB8 as input pins */
|
||||
PBCR1 &= 0xfffc; /* PB8MD = 00 */
|
||||
PBCR2 &= 0xfcff; /* PB4MD = 00 */
|
||||
PBIOR &= ~0x0110; /* Inputs */
|
||||
}
|
||||
|
||||
int button_read_device(void)
|
||||
{
|
||||
int btn = BUTTON_NONE;
|
||||
int data;
|
||||
static int off_button_count = 0;
|
||||
|
||||
/* check F1..F3 and UP */
|
||||
data = adc_read(ADC_BUTTON_ROW1);
|
||||
if (data >= 250)
|
||||
{
|
||||
if (data >= 700)
|
||||
if (data >= 900)
|
||||
btn = BUTTON_F3;
|
||||
else
|
||||
btn = BUTTON_UP;
|
||||
else
|
||||
if (data >= 500)
|
||||
btn = BUTTON_F2;
|
||||
else
|
||||
btn = BUTTON_F1;
|
||||
}
|
||||
|
||||
/* Some units have mushy keypads, so pressing UP also activates
|
||||
the Left/Right buttons. Let's combat that by skipping the AN5
|
||||
checks when UP is pressed. */
|
||||
if(!(btn & BUTTON_UP))
|
||||
{
|
||||
/* check DOWN, PLAY, LEFT, RIGHT */
|
||||
data = adc_read(ADC_BUTTON_ROW2);
|
||||
if (data >= 250)
|
||||
{
|
||||
if (data >= 700)
|
||||
if (data >= 900)
|
||||
btn |= BUTTON_DOWN;
|
||||
else
|
||||
btn |= BUTTON_PLAY;
|
||||
else
|
||||
if (data >= 500)
|
||||
btn |= BUTTON_LEFT;
|
||||
else
|
||||
btn |= BUTTON_RIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
/* check port B pins for ON and OFF */
|
||||
data = PBDR;
|
||||
if ((data & 0x0100) == 0)
|
||||
btn |= BUTTON_ON;
|
||||
|
||||
if ((data & 0x0010) == 0)
|
||||
{
|
||||
/* When the batteries are low, the low-battery shutdown logic causes
|
||||
* spurious OFF events due to voltage fluctuation on some units.
|
||||
* Only accept OFF when read several times in sequence. */
|
||||
if (++off_button_count > 3)
|
||||
btn |= BUTTON_OFF;
|
||||
}
|
||||
else
|
||||
off_button_count = 0;
|
||||
|
||||
return btn;
|
||||
}
|
63
firmware/target/sh/archos/recorder/button-target.h
Executable file
63
firmware/target/sh/archos/recorder/button-target.h
Executable file
|
@ -0,0 +1,63 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2006 by Jens Arnold
|
||||
*
|
||||
* All files in this archive are subject to the GNU General Public License.
|
||||
* See the file COPYING in the source tree root for full license agreement.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef _BUTTON_TARGET_H_
|
||||
#define _BUTTON_TARGET_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "config.h"
|
||||
|
||||
#define HAS_SERIAL_REMOTE
|
||||
|
||||
void button_init_device(void);
|
||||
int button_read_device(void);
|
||||
|
||||
/* Main unit's buttons */
|
||||
#define BUTTON_ON 0x00000001
|
||||
#define BUTTON_OFF 0x00000002
|
||||
|
||||
#define BUTTON_LEFT 0x00000004
|
||||
#define BUTTON_RIGHT 0x00000008
|
||||
#define BUTTON_UP 0x00000010
|
||||
#define BUTTON_DOWN 0x00000020
|
||||
|
||||
#define BUTTON_PLAY 0x00000040
|
||||
|
||||
#define BUTTON_F1 0x00000080
|
||||
#define BUTTON_F2 0x00000100
|
||||
#define BUTTON_F3 0x00000200
|
||||
|
||||
#define BUTTON_MAIN (BUTTON_ON|BUTTON_OFF|BUTTON_LEFT|BUTTON_RIGHT\
|
||||
|BUTTON_UP|BUTTON_DOWN|BUTTON_PLAY\
|
||||
|BUTTON_F1|BUTTON_F2|BUTTON_F3)
|
||||
|
||||
/* Remote control's buttons */
|
||||
#define BUTTON_RC_PLAY 0x00100000
|
||||
#define BUTTON_RC_STOP 0x00080000
|
||||
|
||||
#define BUTTON_RC_LEFT 0x00040000
|
||||
#define BUTTON_RC_RIGHT 0x00020000
|
||||
#define BUTTON_RC_VOL_UP 0x00010000
|
||||
#define BUTTON_RC_VOL_DOWN 0x00008000
|
||||
|
||||
#define BUTTON_REMOTE (BUTTON_RC_PLAY|BUTTON_RC_STOP\
|
||||
|BUTTON_RC_LEFT|BUTTON_RC_RIGHT\
|
||||
|BUTTON_RC_VOL_UP|BUTTON_RC_VOL_DOWN)
|
||||
|
||||
#endif /* _BUTTON_TARGET_H_ */
|
18
tools/configure
vendored
18
tools/configure
vendored
|
@ -640,6 +640,9 @@ EOF
|
|||
# firmware/Makefile assumes it is present always, and 2) we will need it when we
|
||||
# build the player simulator
|
||||
|
||||
t_cpu="sh"
|
||||
t_manufacturer="archos"
|
||||
t_model="player"
|
||||
;;
|
||||
|
||||
1|recorder)
|
||||
|
@ -659,6 +662,9 @@ EOF
|
|||
# toolset is the tools within the tools directory that we build for
|
||||
# this particular target.
|
||||
toolset=$archosbitmaptools
|
||||
t_cpu="sh"
|
||||
t_manufacturer="archos"
|
||||
t_model="recorder"
|
||||
;;
|
||||
|
||||
2|fmrecorder)
|
||||
|
@ -678,6 +684,9 @@ EOF
|
|||
# toolset is the tools within the tools directory that we build for
|
||||
# this particular target.
|
||||
toolset=$archosbitmaptools
|
||||
t_cpu="sh"
|
||||
t_manufacturer="archos"
|
||||
t_model="fm_v2"
|
||||
;;
|
||||
|
||||
3|recorderv2)
|
||||
|
@ -697,6 +706,9 @@ EOF
|
|||
# toolset is the tools within the tools directory that we build for
|
||||
# this particular target.
|
||||
toolset=$archosbitmaptools
|
||||
t_cpu="sh"
|
||||
t_manufacturer="archos"
|
||||
t_model="fm_v2"
|
||||
;;
|
||||
|
||||
4|ondiosp)
|
||||
|
@ -716,6 +728,9 @@ EOF
|
|||
# toolset is the tools within the tools directory that we build for
|
||||
# this particular target.
|
||||
toolset=$archosbitmaptools
|
||||
t_cpu="sh"
|
||||
t_manufacturer="archos"
|
||||
t_model="ondio"
|
||||
;;
|
||||
|
||||
5|ondiofm)
|
||||
|
@ -733,6 +748,9 @@ EOF
|
|||
plugins="yes"
|
||||
codecs=""
|
||||
toolset=$archosbitmaptools
|
||||
t_cpu="sh"
|
||||
t_manufacturer="archos"
|
||||
t_model="ondio"
|
||||
;;
|
||||
|
||||
10|h120)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue