From f48ec1f7fca7b0e12cbcbe4de3dbe21ed5a2edfa Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Fri, 11 Feb 2005 13:13:36 +0000 Subject: iRiver: Support for remote control buttons git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5909 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/adc.c | 6 +++--- firmware/drivers/button.c | 34 +++++++++++++++++++++++++++++++++- firmware/export/button.h | 10 +++++++++- 3 files changed, 45 insertions(+), 5 deletions(-) (limited to 'firmware') diff --git a/firmware/drivers/adc.c b/firmware/drivers/adc.c index bb8242e37f..fd7916622c 100644 --- a/firmware/drivers/adc.c +++ b/firmware/drivers/adc.c @@ -171,6 +171,8 @@ unsigned char adc_scan(int channel) CS_HI; + adcdata[channel] = data; + return data; } @@ -186,7 +188,7 @@ static void adc_tick(void) if(++adc_counter == HZ) { adc_counter = 0; - adcdata[ADC_BATTERY] = adc_scan(ADC_BATTERY); + adc_scan(ADC_BATTERY); } } @@ -201,8 +203,6 @@ void adc_init(void) GPIO_OUT &= ~0x00400000; /* CLK low */ tick_add_task(adc_tick); - - adcdata[3] = adc_scan(3); } #elif CONFIG_CPU == TCC730 diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index 1a0aeceb06..cd4492315d 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c @@ -351,7 +351,7 @@ static int button_read(void) #if CONFIG_KEYPAD == IRIVER_H100_PAD - data = adc_scan(0); + data = adc_scan(ADC_BUTTONS); if (data < 0x80) if (data < 0x30) @@ -377,6 +377,38 @@ static int button_read(void) if (data < 0xf0) btn = BUTTON_REC; + data = adc_scan(ADC_REMOTE); + + if (data < 0x74) + if (data < 0x40) + if (data < 0x20) + if(data < 0x10) + btn = BUTTON_RC_STOP; + else + btn = BUTTON_RC_VOL_DOWN; + else + btn = BUTTON_RC_VOL; + else + if (data < 0x58) + btn = BUTTON_RC_VOL_UP; + else + btn = BUTTON_RC_BITRATE; + else + if (data < 0xb0) + if (data < 0x88) + btn = BUTTON_RC_REC; + else + btn = BUTTON_RC_SOURCE; + else + if (data < 0xd8) + if(data < 0xc0) + btn = BUTTON_RC_FF; + else + btn = BUTTON_RC_MENU; + else + if (data < 0xf0) + btn = BUTTON_RC_REW; + data = GPIO1_READ; if ((data & 0x20) == 0) btn |= BUTTON_ON; diff --git a/firmware/export/button.h b/firmware/export/button.h index e978f9d426..5b76e50b56 100644 --- a/firmware/export/button.h +++ b/firmware/export/button.h @@ -66,7 +66,15 @@ bool button_hold(void); #define BUTTON_UP 0x0010 #define BUTTON_DOWN 0x0020 -#define BUTTON_RC_ON (BUTTON_REMOTE | BUTTON_ON) +#define BUTTON_RC_ON (BUTTON_REMOTE | 0x00010000) +#define BUTTON_RC_STOP (BUTTON_REMOTE | 0x00020000) +#define BUTTON_RC_VOL (BUTTON_REMOTE | 0x00040000) +#define BUTTON_RC_BITRATE (BUTTON_REMOTE | 0x00200000) +#define BUTTON_RC_REC (BUTTON_REMOTE | 0x00400000) +#define BUTTON_RC_SOURCE (BUTTON_REMOTE | 0x00800000) +#define BUTTON_RC_MENU (BUTTON_REMOTE | 0x01000000) +#define BUTTON_RC_FF (BUTTON_REMOTE | 0x02000000) +#define BUTTON_RC_REW (BUTTON_REMOTE | 0x04000000) #elif CONFIG_KEYPAD == RECORDER_PAD -- cgit v1.2.3