From 4cd3460138c9fd0a5b66a3fa8d8364f56a3aceb2 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Mon, 13 Jun 2011 23:53:02 +0200 Subject: [PATCH] Add keyin.c, generic joystick input function --- Makefile | 1 + basic/basic.h | 11 ++++++++++- basic/keyin.c | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 basic/keyin.c diff --git a/Makefile b/Makefile index 54652e2..7d01469 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ OBJS = main.o VPATH += OBJS += OBJS += basic/basic.o basic/reinvoke_isp.o basic/delayms.o basic/voltage.o +OBJS += basic/keyin.o OBJS += eeprom/eeprom.o LIBS += core/libcore.a lcd/liblcd.a modules/libmodules.a diff --git a/basic/basic.h b/basic/basic.h index c2eb6ac..020399c 100644 --- a/basic/basic.h +++ b/basic/basic.h @@ -121,7 +121,7 @@ void rbInit(void); // reinvoke_isp.c void ReinvokeISP(void); void EnableWatchdog(uint32_t ms); -void EnterISP(void); +void ISPandReset(int delay); // delayms.c void delayms(uint32_t ms); @@ -130,4 +130,13 @@ void delayms(uint32_t ms); void VoltageCheck(void); uint32_t GetVoltage(void); +// keyin.c +#define BTN_NONE 0 +#define BTN_UP (1<<0) +#define BTN_DOWN (1<<1) +#define BTN_LEFT (1<<2) +#define BTN_RIGHT (1<<3) +#define BTN_ENTER (1<<4) +uint8_t getInput(void); + #endif diff --git a/basic/keyin.c b/basic/keyin.c new file mode 100644 index 0000000..b0d6964 --- /dev/null +++ b/basic/keyin.c @@ -0,0 +1,38 @@ +#include +#include "basic/basic.h" + +uint8_t getInput(void) { + uint8_t result = BTN_NONE; + + if (gpioGetValue(RB_BTN3)==0) { + while(gpioGetValue(RB_BTN3)==0); + result += BTN_UP; + } + + if (gpioGetValue(RB_BTN2)==0) { + while(gpioGetValue(RB_BTN2)==0); + result += BTN_DOWN; + } + + if (gpioGetValue(RB_BTN4)==0) { + while(gpioGetValue(RB_BTN4)==0); + result += BTN_ENTER; + } + + if (gpioGetValue(RB_BTN0)==0) { + while(gpioGetValue(RB_BTN0)==0); + result += BTN_LEFT; + } + + if (gpioGetValue(RB_BTN1)==0) { + while(gpioGetValue(RB_BTN1)==0); + result += BTN_RIGHT; + } + + if (result == (BTN_LEFT+BTN_UP+BTN_ENTER)){ /* Development hack */ + ISPandReset(5); + } + + return result; +} +