diff options
-rw-r--r-- | firmware/export/config/sansafuzev2.h | 2 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sansa-fuzev2/button-fuzev2.c | 23 |
2 files changed, 11 insertions, 14 deletions
diff --git a/firmware/export/config/sansafuzev2.h b/firmware/export/config/sansafuzev2.h index 8b2ffb3d93..a21eb34f94 100644 --- a/firmware/export/config/sansafuzev2.h +++ b/firmware/export/config/sansafuzev2.h @@ -73,7 +73,7 @@ /* define to activate advanced wheel acceleration code */ #define HAVE_WHEEL_ACCELERATION /* define from which rotation speed [degree/sec] on the acceleration starts */ -#define WHEEL_ACCEL_START 540 +#define WHEEL_ACCEL_START 720 /* define type of acceleration (1 = ^2, 2 = ^3, 3 = ^4) */ #define WHEEL_ACCELERATION 1 diff --git a/firmware/target/arm/as3525/sansa-fuzev2/button-fuzev2.c b/firmware/target/arm/as3525/sansa-fuzev2/button-fuzev2.c index f454867cfc..060933d0ac 100644 --- a/firmware/target/arm/as3525/sansa-fuzev2/button-fuzev2.c +++ b/firmware/target/arm/as3525/sansa-fuzev2/button-fuzev2.c @@ -34,7 +34,6 @@ static bool hold_button = false; #define TIMER_TICK (KERNEL_TIMER_FREQ/HZ)/* how long a tick lasts */ #define TIMER_MS (TIMER_TICK/(1000/HZ))/* how long a ms lasts */ -#define WHEEL_LOOP_INTERVAL ( 3*TIMER_MS) /* 3 ms */ #define WHEEL_REPEAT_INTERVAL (300*TIMER_MS) /* 300ms */ #define WHEEL_FAST_ON_INTERVAL ( 20*TIMER_MS) /* 20ms */ #define WHEEL_FAST_OFF_INTERVAL ( 60*TIMER_MS) /* 60ms */ @@ -77,18 +76,6 @@ static void scrollwheel(unsigned int wheel_value) { 1, 3, 0, 2 }, /* Counter-clockwise */ }; - int repeat = 1; /* assume repeat */ - long time = TIMER2_VALUE + current_tick*TIMER_TICK; /* to timer unit */ - long v = (time - last_wheel_post); - if (v < WHEEL_LOOP_INTERVAL) /* avoid too frequent updates */ - return ; - - /* interpolate velocity in timer_freq/timer_unit == 1/s */ - if (v) v = TIMER_FREQ / v; - - /* accumulate velocities over time with each v */ - wheel_velocity = (7*wheel_velocity + v) / 8; - unsigned int btn = BUTTON_NONE; if (old_wheel_value == wheel_tbl[0][wheel_value]) @@ -102,6 +89,16 @@ static void scrollwheel(unsigned int wheel_value) return; } + int repeat = 1; /* assume repeat */ + long time = (TIMER_TICK - TIMER2_VALUE) + current_tick*TIMER_TICK; /* to timer unit */ + long v = (time - last_wheel_post); + + /* interpolate velocity in timer_freq/timer_unit == 1/s */ + if (v) v = TIMER_FREQ / v; + + /* accumulate velocities over time with each v */ + wheel_velocity = (7*wheel_velocity + v) / 8; + if (btn != wheel_repeat) { /* direction reversals nullify all fast mode states */ |