From 9d4c0e398e2aa77adb0d45e150824f04cdf5e24c Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Wed, 24 Jul 2002 16:30:34 +0000 Subject: Added multi-button read for recorder git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1434 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/button.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'firmware') diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index b1bfdd8957..636376b4e5 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c @@ -163,36 +163,38 @@ int button_set_repeat(int newmask) */ static int button_read(void) { + int btn = BUTTON_NONE; + /* Check port B pins for ON and OFF */ int data = PBDR; if ((data & PBDR_BTN_ON) == 0) - return BUTTON_ON; + btn |= BUTTON_ON; else if ((data & PBDR_BTN_OFF) == 0) - return BUTTON_OFF; + btn |= BUTTON_OFF; /* Check F1-3 and UP */ data = adc_read(ADC_BUTTON_ROW1); if (data >= LEVEL4) - return BUTTON_F3; + btn |= BUTTON_F3; else if (data >= LEVEL3) - return BUTTON_UP; + btn |= BUTTON_UP; else if (data >= LEVEL2) - return BUTTON_F2; + btn |= BUTTON_F2; else if (data >= LEVEL1) - return BUTTON_F1; + btn |= BUTTON_F1; /* Check DOWN, PLAY, LEFT, RIGHT */ data = adc_read(ADC_BUTTON_ROW2); if (data >= LEVEL4) - return BUTTON_DOWN; + btn |= BUTTON_DOWN; else if (data >= LEVEL3) - return BUTTON_PLAY; + btn |= BUTTON_PLAY; else if (data >= LEVEL2) - return BUTTON_LEFT; + btn |= BUTTON_LEFT; else if (data >= LEVEL1) - return BUTTON_RIGHT; + btn |= BUTTON_RIGHT; - return BUTTON_NONE; + return btn; } #elif HAVE_PLAYER_KEYPAD @@ -221,7 +223,7 @@ void button_init(void) static int button_read(void) { int porta = PADR; - int btn = 0; + int btn = BUTTON_NONE; /* buttons are active low */ if(adc_read(0) < 0x180) -- cgit v1.2.3