summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThom Johansen <thomj@rockbox.org>2005-12-22 00:01:36 +0000
committerThom Johansen <thomj@rockbox.org>2005-12-22 00:01:36 +0000
commit2e55f1c9b0b700c68cce856b9dd923357e2d3fe0 (patch)
treec285b02abf49517c995cd05598443c2b3298ddd6
parentf9295a6a65d7a57c463d183f75a4d06c0c9fb5bc (diff)
downloadrockbox-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
-rw-r--r--firmware/drivers/button.c16
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
194void ipod_4g_button_int(void) 198void 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;