diff options
author | Thom Johansen <thomj@rockbox.org> | 2005-12-22 00:01:36 +0000 |
---|---|---|
committer | Thom Johansen <thomj@rockbox.org> | 2005-12-22 00:01:36 +0000 |
commit | 2e55f1c9b0b700c68cce856b9dd923357e2d3fe0 (patch) | |
tree | c285b02abf49517c995cd05598443c2b3298ddd6 /firmware/drivers | |
parent | f9295a6a65d7a57c463d183f75a4d06c0c9fb5bc (diff) | |
download | rockbox-2e55f1c9b0b700c68cce856b9dd923357e2d3fe0.tar.gz rockbox-2e55f1c9b0b700c68cce856b9dd923357e2d3fe0.zip |
Button driver would insert erronous events when wheel position overflowed, this fixes it.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8277 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/button.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index 983941c048..0aea47ea8f 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c | |||
@@ -143,10 +143,16 @@ static int ipod_4g_button_read(void) | |||
143 | backlight_on(); | 143 | backlight_on(); |
144 | if (old_wheel_value != -1) { | 144 | if (old_wheel_value != -1) { |
145 | wheel_delta = new_wheel_value - old_wheel_value; | 145 | wheel_delta = new_wheel_value - old_wheel_value; |
146 | wheel_delta_abs = wheel_delta < 0 ? -wheel_delta : wheel_delta; | 146 | wheel_delta_abs = wheel_delta < 0 ? -wheel_delta |
147 | 147 | : wheel_delta; | |
148 | wheel_delta = new_wheel_value - old_wheel_value; | 148 | |
149 | 149 | if (wheel_delta_abs > 48) { | |
150 | if (old_wheel_value > new_wheel_value) | ||
151 | /* wrapped around the top going clockwise */ | ||
152 | wheel_delta += 96; | ||
153 | else if (old_wheel_value < new_wheel_value) | ||
154 | /* wrapped around the top going counterclockwise */ wheel_delta -= 96; | ||
155 | } | ||
150 | /* TODO: these thresholds should most definitely be | 156 | /* TODO: these thresholds should most definitely be |
151 | settings, and we're probably going to want a more | 157 | settings, and we're probably going to want a more |
152 | advanced scheme than this anyway. */ | 158 | advanced scheme than this anyway. */ |
@@ -189,8 +195,6 @@ static int ipod_4g_button_read(void) | |||
189 | return btn; | 195 | return btn; |
190 | } | 196 | } |
191 | 197 | ||
192 | |||
193 | |||
194 | void ipod_4g_button_int(void) | 198 | void ipod_4g_button_int(void) |
195 | { | 199 | { |
196 | PP5020_CPU_HI_INT_CLR = PP5020_I2C_MASK; | 200 | PP5020_CPU_HI_INT_CLR = PP5020_I2C_MASK; |