diff options
Diffstat (limited to 'firmware/drivers')
| -rw-r--r-- | firmware/drivers/adc.c | 6 | ||||
| -rw-r--r-- | firmware/drivers/button.c | 34 |
2 files changed, 36 insertions, 4 deletions
diff --git a/firmware/drivers/adc.c b/firmware/drivers/adc.c index bb8242e..fd79166 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 1a0aece..cd44923 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; |