summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2009-04-13 17:10:52 +0000
committerThomas Martitz <kugel@rockbox.org>2009-04-13 17:10:52 +0000
commit42f5973177df838c65b76eb96646a8b5df2a533b (patch)
tree888669e9272d3c8f035e96061ffd59dc61628d2d
parentc48f4c6be480c6653c0dc76c64ba86df564ad0bf (diff)
downloadrockbox-42f5973177df838c65b76eb96646a8b5df2a533b.zip
rockbox-42f5973177df838c65b76eb96646a8b5df2a533b.tar.gz
rockbox-42f5973177df838c65b76eb96646a8b5df2a533b.tar.bz2
rockbox-42f5973177df838c65b76eb96646a8b5df2a533b.tar.xz
Few Fuze/e200v2 button fixes. Don't read the scrollwheel when the hold button is active and rename a variable to describe better what it is for.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20701 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/as3525/kernel-as3525.c7
-rw-r--r--firmware/target/arm/as3525/sansa-e200v2/button-e200v2.c14
-rw-r--r--firmware/target/arm/as3525/sansa-e200v2/button-target.h1
-rw-r--r--firmware/target/arm/as3525/sansa-fuze/button-fuze.c13
-rw-r--r--firmware/target/arm/as3525/sansa-fuze/button-target.h2
5 files changed, 27 insertions, 10 deletions
diff --git a/firmware/target/arm/as3525/kernel-as3525.c b/firmware/target/arm/as3525/kernel-as3525.c
index 986ceb3..fd3b219 100644
--- a/firmware/target/arm/as3525/kernel-as3525.c
+++ b/firmware/target/arm/as3525/kernel-as3525.c
@@ -25,8 +25,8 @@
#include "timer-target.h"
#ifdef HAVE_SCROLLWHEEL
+#include "button-target.h"
/* The scrollwheel is polled every 5 ms (the tick tasks only every 10) */
-extern void button_read_dbop(void);
static volatile int poll_scrollwheel = 0;
void INT_TIMER2(void)
@@ -34,7 +34,10 @@ void INT_TIMER2(void)
if (!poll_scrollwheel)
call_tick_tasks(); /* Run through the list of tick tasks */
else
- button_read_dbop();
+ {
+ if (!button_hold())
+ button_read_dbop();
+ }
poll_scrollwheel ^= 1;
TIMER2_INTCLR = 0; /* clear interrupt */
diff --git a/firmware/target/arm/as3525/sansa-e200v2/button-e200v2.c b/firmware/target/arm/as3525/sansa-e200v2/button-e200v2.c
index 021110c..bc92995 100644
--- a/firmware/target/arm/as3525/sansa-e200v2/button-e200v2.c
+++ b/firmware/target/arm/as3525/sansa-e200v2/button-e200v2.c
@@ -55,7 +55,7 @@ static void scrollwheel(short dbop_din)
unsigned btn = BUTTON_NONE;
/* old wheel values */
static unsigned old_wheel_value = 0;
- static unsigned wheel_repeat = BUTTON_NONE;
+ static unsigned old_btn = BUTTON_NONE;
/* getting BUTTON_REPEAT works like this: Remember when the btn value was
* posted to the button_queue last, and if it was recent enough, generate
@@ -77,7 +77,13 @@ static void scrollwheel(short dbop_din)
{ 2, 0, 3, 1 }, /* Clockwise rotation */
{ 1, 3, 0, 2 }, /* Counter-clockwise */
};
-
+
+ if(hold_button)
+ {
+ repeat = counter = 0;
+ return;
+ }
+
wheel_value = dbop_din & (1<<13|1<<14);
wheel_value >>= 13;
@@ -88,10 +94,10 @@ static void scrollwheel(short dbop_din)
if (btn != BUTTON_NONE)
{
- if (btn != wheel_repeat)
+ if (btn != old_btn)
{
/* direction reversals nullify repeats */
- wheel_repeat = btn;
+ old_btn = btn;
repeat = counter = 0;
}
if (btn != BUTTON_NONE)
diff --git a/firmware/target/arm/as3525/sansa-e200v2/button-target.h b/firmware/target/arm/as3525/sansa-e200v2/button-target.h
index a9aa663..e09743d 100644
--- a/firmware/target/arm/as3525/sansa-e200v2/button-target.h
+++ b/firmware/target/arm/as3525/sansa-e200v2/button-target.h
@@ -30,6 +30,7 @@
bool button_hold(void);
void button_init_device(void);
int button_read_device(void);
+short button_read_dbop(void);
/* Sandisk Sansa E200 button codes */
diff --git a/firmware/target/arm/as3525/sansa-fuze/button-fuze.c b/firmware/target/arm/as3525/sansa-fuze/button-fuze.c
index f532a96..afbba78 100644
--- a/firmware/target/arm/as3525/sansa-fuze/button-fuze.c
+++ b/firmware/target/arm/as3525/sansa-fuze/button-fuze.c
@@ -56,7 +56,7 @@ static void scrollwheel(short dbop_din)
unsigned btn = BUTTON_NONE;
/* old wheel values */
static unsigned old_wheel_value = 0;
- static unsigned wheel_repeat = BUTTON_NONE;
+ static unsigned old_btn = BUTTON_NONE;
/* getting BUTTON_REPEAT works like this: We increment repeat by 2 if the
* wheel was turned, and decrement it by 1 each tick,
@@ -76,6 +76,13 @@ static void scrollwheel(short dbop_din)
{ 2, 0, 3, 1 }, /* Clockwise rotation */
{ 1, 3, 0, 2 }, /* Counter-clockwise */
};
+
+ if(hold_button)
+ {
+ repeat = counter = 0;
+ return;
+ }
+
wheel_value = dbop_din & (1<<13|1<<14);
wheel_value >>= 13;
@@ -86,10 +93,10 @@ static void scrollwheel(short dbop_din)
if (btn != BUTTON_NONE)
{
- if (btn != wheel_repeat)
+ if (btn != old_btn)
{
/* direction reversals nullify repeats */
- wheel_repeat = btn;
+ old_btn = btn;
repeat = counter = 0;
}
if (btn != BUTTON_NONE)
diff --git a/firmware/target/arm/as3525/sansa-fuze/button-target.h b/firmware/target/arm/as3525/sansa-fuze/button-target.h
index 75ce3d0..5b5b1e0 100644
--- a/firmware/target/arm/as3525/sansa-fuze/button-target.h
+++ b/firmware/target/arm/as3525/sansa-fuze/button-target.h
@@ -30,7 +30,7 @@
void button_init_device(void);
bool button_hold(void);
int button_read_device(void);
-
+short button_read_dbop(void);
/* Sandisk Sansa Fuze button codes */
/* Main unit's buttons */