diff options
-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; |