From cb5ebc57d8cc7188110222ecc1aea19466fc90a4 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Tue, 26 Jul 2011 01:55:33 +0200 Subject: [PATCH] add APP=initial, template for initial firmware to be flashed. --- firmware/applications/initial.c | 97 +++++++++++++++++++++++++++++++++ firmware/basic/basic.h | 2 + firmware/basic/keyin.c | 8 ++- 3 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 firmware/applications/initial.c diff --git a/firmware/applications/initial.c b/firmware/applications/initial.c new file mode 100644 index 0000000..396467a --- /dev/null +++ b/firmware/applications/initial.c @@ -0,0 +1,97 @@ +#include + +#include "basic/basic.h" + +#include "lcd/print.h" +#include "filesystem/ff.h" +#include "usb/usbmsc.h" + + +/**************************************************************************/ + +void main_initial(void) { + char key=BTN_NONE; + gpioSetValue (RB_LED0, 0); + gpioSetValue (RB_LED1, 0); + gpioSetValue (RB_LED2, 0); + gpioSetValue (RB_LED3, 0); + IOCON_PIO1_11 = 0x0; + gpioSetDir(RB_LED3, gpioDirection_Output); + + while(1){ + lcdClear(); + lcdPrintln("Init v.42"); + lcdNl(); + lcdPrintln("Left: ISP()"); + lcdPrintln("Right: MSC()"); + lcdPrintln("Up: FormatDF()"); + lcdPrintln("Down: ???"); + lcdPrintln("Enter: LEDs()"); + lcdRefresh(); + + key=getInputWait(); + + if(key&BTN_ENTER){ + gpioSetValue (RB_LED0, 1); + gpioSetValue (RB_LED1, 1); + gpioSetValue (RB_LED2, 1); + gpioSetValue (RB_LED3, 1); + delayms_power(100); + getInputWaitRelease(); + + gpioSetValue (RB_LED0, 0); + gpioSetValue (RB_LED1, 0); + gpioSetValue (RB_LED2, 0); + gpioSetValue (RB_LED3, 0); + delayms_power(50); + }; + if(key&BTN_RIGHT){ + lcdClear(); + lcdPrintln("MSC Enabled."); + lcdRefresh(); + delayms_power(300); + usbMSCInit(); + getInputWait(); + lcdPrintln("MSC Disabled."); + usbMSCOff(); + lcdRefresh(); + } + if(key&BTN_LEFT){ + lcdClear(); + lcdPrintln("Enter ISP!"); + lcdRefresh(); + ISPandReset(); + } + if(key&BTN_UP){ + FATFS FatFs; + int res; + + lcdClear(); + + lcdPrintln("Mount DF:"); + res=f_mount(0, &FatFs); + lcdPrintln(f_get_rc_string(res)); + lcdRefresh(); + + lcdPrintln("Formatting DF..."); +// res=f_mkfs(0,1,0); + lcdPrintln(f_get_rc_string(res)); + lcdRefresh(); + } + if(key&BTN_DOWN){ + ; + } + + getInputWaitRelease(); + }; +} + +void tick_initial(void){ + static int foo=0; + static int toggle=0; + if(foo++>80){ + toggle=1-toggle; + foo=0; + gpioSetValue (RB_LED0, toggle); + }; +}; diff --git a/firmware/basic/basic.h b/firmware/basic/basic.h index eff70fb..94b9222 100644 --- a/firmware/basic/basic.h +++ b/firmware/basic/basic.h @@ -150,6 +150,7 @@ char isNight(void); uint8_t getInput(void); uint8_t getInputRaw(void); uint8_t getInputWait(void); +void getInputWaitRelease(void); //uuid.c #include "basic/uuid.h" @@ -182,3 +183,4 @@ void handleMenu(const struct MENU *the_menu); #include "basic/idle.h" #endif + diff --git a/firmware/basic/keyin.c b/firmware/basic/keyin.c index ad44423..d4983c5 100644 --- a/firmware/basic/keyin.c +++ b/firmware/basic/keyin.c @@ -44,10 +44,16 @@ uint8_t getInput(void) { uint8_t getInputWait(void) { uint8_t key; - while ((key=getInput())==BTN_NONE) + while ((key=getInputRaw())==BTN_NONE) work_queue(); delayms_queue(10); /* Delay a little more to debounce */ return key; }; +void getInputWaitRelease(void) { + while (getInputRaw()!=BTN_NONE) + work_queue(); + delayms_queue(10); /* Delay a little more to debounce */ +}; +