summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/target/arm/as3525/sansa-clip/button-clip.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/firmware/target/arm/as3525/sansa-clip/button-clip.c b/firmware/target/arm/as3525/sansa-clip/button-clip.c
index 99a68a5..53ebfa1 100644
--- a/firmware/target/arm/as3525/sansa-clip/button-clip.c
+++ b/firmware/target/arm/as3525/sansa-clip/button-clip.c
@@ -20,6 +20,7 @@
* KIND, either express or implied.
*
****************************************************************************/
+#include "system.h"
#include "button-target.h"
#include "as3525.h"
#ifndef BOOTLOADER
@@ -56,12 +57,22 @@ int button_read_device(void)
{
static int row = 0;
static int buttons = 0;
+ static unsigned power_counter = 0;
if(button_hold())
+ {
+ power_counter = HZ;
return 0;
+ }
/* direct GPIO connections */
- if (GPIOA_PIN(7))
+ /* read power, but not if hold button was just released, since
+ * you basically always hit power due to the slider mechanism after
+ * releasing hold (wait 1 sec) */
+ if (power_counter)
+ power_counter--;
+
+ if (GPIOA_PIN(7) && !power_counter)
buttons |= BUTTON_POWER;
else
buttons &= ~BUTTON_POWER;