diff options
| author | Jens Arnold <amiconn@rockbox.org> | 2004-09-23 22:36:15 +0000 |
|---|---|---|
| committer | Jens Arnold <amiconn@rockbox.org> | 2004-09-23 22:36:15 +0000 |
| commit | 23f2a59865ef4752d943decd4c48aede12c737cc (patch) | |
| tree | 3ce03ccf6fcf322feae53e7a42fae4cfba46d38c /firmware | |
| parent | 7f7afe434bfdd46aba66a3bccb4ff1497f26fb0c (diff) | |
| download | rockbox-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.c | 12 |
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 |