1
0
Fork 0
forked from len0rd/rockbox

minor fix for remote button code

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14795 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jonathan Gordon 2007-09-21 02:05:02 +00:00
parent a576657011
commit c5d22bce6e

View file

@ -29,6 +29,11 @@
#include "uart-target.h" #include "uart-target.h"
#define BUTTON_TIMEOUT 50 #define BUTTON_TIMEOUT 50
#define BUTTON_START_BYTE 0xF0
#define BUTTON_START_BYTE2 0xF4 /* not sure why, but sometimes you get F0 or F4, */
/* but always the same one for the session? */
void button_init_device(void) void button_init_device(void)
{ {
/* GIO is the power button, set as input */ /* GIO is the power button, set as input */
@ -43,6 +48,7 @@ inline bool button_hold(void)
int button_read_device(void) int button_read_device(void)
{ {
char data[5], c; char data[5], c;
int val;
int i = 0; int i = 0;
int btn = BUTTON_NONE, timeout = BUTTON_TIMEOUT; int btn = BUTTON_NONE, timeout = BUTTON_TIMEOUT;
@ -52,14 +58,16 @@ int button_read_device(void)
uartHeartbeat(); uartHeartbeat();
while (timeout > 0) while (timeout > 0)
{ {
c = uartPollch(BUTTON_TIMEOUT*100); val = uartPollch(BUTTON_TIMEOUT*100);
if (c > -1) if (val > -1)
{ {
if (i && data[0] == 0xf4) c = val&0xff;
if (i && (data[0] == BUTTON_START_BYTE || data[0] == BUTTON_START_BYTE2))
{ {
data[i++] = c; data[i++] = c;
} }
else if (c == 0xf4) else if (c == BUTTON_START_BYTE ||
c == BUTTON_START_BYTE2)
{ {
data[0] = c; data[0] = c;
i = 1; i = 1;