summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2004-09-23 22:36:15 +0000
committerJens Arnold <amiconn@rockbox.org>2004-09-23 22:36:15 +0000
commit23f2a59865ef4752d943decd4c48aede12c737cc (patch)
tree3ce03ccf6fcf322feae53e7a42fae4cfba46d38c /firmware
parent7f7afe434bfdd46aba66a3bccb4ff1497f26fb0c (diff)
downloadrockbox-23f2a59865ef4752d943decd4c48aede12c737cc.zip
rockbox-23f2a59865ef4752d943decd4c48aede12c737cc.tar.gz
rockbox-23f2a59865ef4752d943decd4c48aede12c737cc.tar.bz2
rockbox-23f2a59865ef4752d943decd4c48aede12c737cc.tar.xz
Added debouncing to the Ondio button driver.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5115 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/button.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c
index 6e4106f..ebe3389 100644
--- a/firmware/drivers/button.c
+++ b/firmware/drivers/button.c
@@ -458,6 +458,8 @@ void button_init(void)
static int button_read(void)
{
int btn = BUTTON_NONE;
+ int retval;
+
int data = adc_read(ADC_BUTTON_ROW1);
if(adc_read(ADC_BUTTON_OPTION) > 0x200) /* active high */
@@ -475,7 +477,15 @@ static int button_read(void)
else if (data >= 0x0A1)
btn |= BUTTON_DOWN;
- return btn;
+ /* Filter the button status. It is only accepted if we get the same
+ status twice in a row. */
+ if(btn != last_read)
+ retval = lastbtn;
+ else
+ retval = btn;
+ last_read = btn;
+
+ return retval;
}
#endif