diff --git a/firmware/applications/default.c b/firmware/applications/default.c index cbba99e..415175e 100644 --- a/firmware/applications/default.c +++ b/firmware/applications/default.c @@ -20,6 +20,7 @@ void main_default(void) { lcdClear(); lcdLoadImage("r0ket.lcd"); lcdRefresh(); + lcdClear(); switch(getInputRaw()){ case BTN_ENTER: @@ -28,6 +29,10 @@ void main_default(void) { case BTN_UP: // Reset config f_unlink("r0ket.cfg"); break; + case BTN_RIGHT: + GLOBAL(develmode)=1; + applyConfig(); + break; case BTN_DOWN: usbMSCInit(); while(1) @@ -83,6 +88,15 @@ void tick_default(void) { EVERY(50,0){ + if(GLOBAL(chargeled)){ + IOCON_PIO1_11 = 0x0; + gpioSetDir(RB_LED3, gpioDirection_Output); + if(GetChrgStat()) + gpioSetValue (RB_LED3, 1); + else + gpioSetValue (RB_LED3, 0); + }; + if(GetVoltage()<3600){ IOCON_PIO1_11 = 0x0; gpioSetDir(RB_LED3, gpioDirection_Output); diff --git a/firmware/applications/final.c b/firmware/applications/final.c index 9ffd509..eb6d32e 100644 --- a/firmware/applications/final.c +++ b/firmware/applications/final.c @@ -9,6 +9,7 @@ #include "basic/ecc.h" #include "basic/config.h" +#include "filesystem/execute.h" /**************************************************************************/ diff --git a/firmware/applications/final/beacon.c b/firmware/applications/final/beacon.c index 53cb977..d4292ea 100644 --- a/firmware/applications/final/beacon.c +++ b/firmware/applications/final/beacon.c @@ -3,6 +3,7 @@ #include "basic/basic.h" #include "basic/byteorder.h" #include "basic/config.h" +#include "basic/random.h" #include "funk/nrf24l01p.h" #include "funk/openbeacon.h" diff --git a/firmware/applications/final/exe.c b/firmware/applications/final/exe.c index bd7c7c1..d277caa 100644 --- a/firmware/applications/final/exe.c +++ b/firmware/applications/final/exe.c @@ -19,3 +19,9 @@ void execute_menu(void){ lcdRefresh(); }; +//# MENU |devel +void execute_devel(void){ + while(getInput()!=BTN_NONE); + executeSelect("INT"); + lcdRefresh(); +}; diff --git a/firmware/applications/final/flame.c b/firmware/applications/final/flame.c index 1b5f5fa..6359137 100644 --- a/firmware/applications/final/flame.c +++ b/firmware/applications/final/flame.c @@ -154,6 +154,7 @@ void init_flame(void) { #include "lcd/print.h" +// //# MENU flame void ChkFlame(void) { do{ lcdClear(); diff --git a/firmware/applications/final/mesh.c b/firmware/applications/final/mesh.c index 20593fd..a7b27af 100644 --- a/firmware/applications/final/mesh.c +++ b/firmware/applications/final/mesh.c @@ -123,7 +123,7 @@ char *meshmsgs(void){ extern MPKT meshbuffer[MESHBUFSIZE]; -//# MENU Messages +//# MENU messages void m_choose(){ char list[99]; int i=0; diff --git a/firmware/applications/final/nickname.c b/firmware/applications/final/nickname.c index 2882293..a6288ea 100644 --- a/firmware/applications/final/nickname.c +++ b/firmware/applications/final/nickname.c @@ -11,6 +11,7 @@ #include "filesystem/ff.h" #include "filesystem/select.h" +#include "filesystem/execute.h" #include diff --git a/firmware/applications/final/util.c b/firmware/applications/final/util.c index 5dbca8f..a3c8c10 100644 --- a/firmware/applications/final/util.c +++ b/firmware/applications/final/util.c @@ -6,15 +6,19 @@ #include "lcd/render.h" #include "lcd/print.h" +#include "lcd/image.h" #include "usb/usbmsc.h" +#include "filesystem/ff.h" +#include "filesystem/select.h" + #include "core/iap/iap.h" /**************************************************************************/ -//# MENU msc +//# MENU usb_storage void msc_menu(void){ lcdClear(); lcdPrintln("MSC Enabled."); @@ -46,3 +50,20 @@ void tick_alive(void){ return; }; + +// //# MENU img img +void t_img(void){ + char fname[FILENAMELEN]; + selectFile(fname, "LCD"); + lcdLoadImage(fname); + lcdRefresh(); + getInputWait(); +}; + +// //# MENU img anim +void t_ani(void){ + char fname[FILENAMELEN]; + selectFile(fname, "LCD"); + lcdShowAnim(fname,1000); +}; + diff --git a/firmware/basic/basic.h b/firmware/basic/basic.h index ac0734a..2c84047 100644 --- a/firmware/basic/basic.h +++ b/firmware/basic/basic.h @@ -136,6 +136,7 @@ void delayms(uint32_t ms); // voltage.c void VoltageCheck(void); uint32_t GetVoltage(void); +uint8_t GetChrgStat(void); // night.c void LightCheck(void); diff --git a/firmware/basic/config.c b/firmware/basic/config.c index 351015f..7fad0a0 100644 --- a/firmware/basic/config.c +++ b/firmware/basic/config.c @@ -28,6 +28,7 @@ struct CDESC the_config[]= { {"flamemaxw", 255, 1, 255, 1, CFG_TYPE_FLAME}, {"flameminw", 0x8f, 1, 255, 1, CFG_TYPE_FLAME}, {"l0nick", 0, 0, 1 , 0, 0}, + {"chargeled", 1, 0, 1 , 0, 0}, { NULL, 0, 0, 0 , 0, 0}, }; diff --git a/firmware/basic/config.h b/firmware/basic/config.h index f018fc2..59e3c80 100644 --- a/firmware/basic/config.h +++ b/firmware/basic/config.h @@ -19,7 +19,7 @@ struct CDESC { #define CFG_TYPE_DEVEL 1 #define CFG_TYPE_FLAME 2 -#define MAXNICK 20 +#define MAXNICK 17 extern struct CDESC the_config[]; extern char nickname[]; extern char nickfont[]; @@ -42,9 +42,10 @@ extern char nickl0[]; #define GLOBALflamemaxw (the_config[14].value) #define GLOBALflameminw (the_config[15].value) #define GLOBALl0nick (the_config[16].value) +#define GLOBALchargeled (the_config[17].value) #define GLOBALnickname (nickname) #define GLOBALnickfont (nickfont) -#define GLOBALnickl0 (nickl0) +#define GLOBALnickl0 (nickl0) #define GLOBAL(x) GLOBAL ## x diff --git a/firmware/basic/idle.c b/firmware/basic/idle.c index 9682675..838ddd5 100644 --- a/firmware/basic/idle.c +++ b/firmware/basic/idle.c @@ -42,10 +42,11 @@ uint8_t work_queue_minimal(void){ return 1; }; }; + /* NOTREACHED */ + return 0; }; void work_queue(void){ - int start; if (the_queue.qstart == the_queue.qend){ WFI; @@ -57,7 +58,7 @@ void work_queue(void){ uint8_t delayms_queue_plus(uint32_t ms, uint8_t final){ - int ret; + int ret=0; int end=_timectr+ms/SYSTICKSPEED; do { if (the_queue.qstart == the_queue.qend){ diff --git a/firmware/basic/menu.c b/firmware/basic/menu.c index fc1fe48..43a353f 100644 --- a/firmware/basic/menu.c +++ b/firmware/basic/menu.c @@ -1,6 +1,7 @@ #include #include "basic/basic.h" +#include "basic/config.h" #include "lcd/print.h" @@ -11,7 +12,7 @@ uint8_t menuflags=0; void handleMenu(const struct MENU *the_menu) { uint8_t back = 0; int8_t menuselection = 0; - uint8_t numentries = 0; + uint8_t numentries; uint8_t visible_lines = 0; uint8_t current_offset = 0; @@ -21,6 +22,9 @@ void handleMenu(const struct MENU *the_menu) { for (numentries = 0; the_menu->entries[numentries].text != NULL ; numentries++); + if(the_menu->entries[numentries-1].text[0]=='|' && !GLOBAL(develmode)) + numentries--; + visible_lines = lcdGetVisibleLines()-1; // subtract title line if(menuflags&MENU_BIG) @@ -81,8 +85,8 @@ void handleMenu(const struct MENU *the_menu) { break; case BTN_ENTER: lcdClear(); - lcdPrintln("Called..."); - lcdRefresh(); +// lcdPrintln("Called..."); +// lcdRefresh(); getInputWaitRelease(); if (the_menu->entries[menuselection].callback!=NULL) the_menu->entries[menuselection].callback(); @@ -91,7 +95,7 @@ void handleMenu(const struct MENU *the_menu) { if (menuflags&MENU_JUSTONCE) return; - getInputWait(); +// getInputWait(); break; case BTN_NONE: /* timeout */ diff --git a/firmware/basic/stringin.c b/firmware/basic/stringin.c index 0e5bfa5..5a3c408 100644 --- a/firmware/basic/stringin.c +++ b/firmware/basic/stringin.c @@ -80,6 +80,7 @@ static void inputMove() { static void inputDraw() { char tmp[2]= {0,0}; + int pos = 0; lcdClear(); DoString(0,0,s_input.prompt); for (int dx = 0; dx<= RESX/CHARWIDTH && s_input.pos+dx $(LDFILE) @@ -55,6 +55,9 @@ $(LDFILE): 1boot.int: 1boot.c0d .PHONY mv $< $@ +debug.int: debug.c0d .PHONY + mv $< $@ + clean: rm -f *.o *.elf *.bin usetable.h diff --git a/firmware/l0dable/debug.c b/firmware/l0dable/debug.c index a0d29f8..ff9fd50 100644 --- a/firmware/l0dable/debug.c +++ b/firmware/l0dable/debug.c @@ -204,6 +204,9 @@ void m_time(void){ lcdPrint("Inc:"); lcdPrintInt(meshincctr); lcdNl(); + lcdPrint("Nice:"); + lcdPrintInt(meshnice); + lcdNl(); lcdRefresh(); delayms_queue(50); }while ((getInputRaw())==BTN_NONE); @@ -217,7 +220,7 @@ void ChkFunk(){ lcdPrint("cfg:"); lcdPrintln(IntToStrX(nrf_read_reg(R_CONFIG),2)); lcdPrintln("Resets:"); - lcdPrintln(IntToStr(nrf_check_reset(),3,0)); + lcdPrintln(IntToStr(_nrfresets,3,0)); lcdRefresh(); while(!getInputRaw())work_queue(); }; diff --git a/firmware/l0dable/invaders.c b/firmware/l0dable/invaders.c index e405664..1f4f425 100644 --- a/firmware/l0dable/invaders.c +++ b/firmware/l0dable/invaders.c @@ -79,7 +79,6 @@ void ram(void) { while(1) { if (!screen_intro()) return; - screen_intro(); game.rokets = 3; game.level = 1; game.score = 0; @@ -114,7 +113,9 @@ static bool screen_intro() { char highnick[20]; char key=0; bool step = false; + //getInputWaitRelease(); while(key==0) { + getInputWaitRelease(); lcdFill(0); font = &Font_Invaders; DoString(28,25,step?"ABC":"abc"); @@ -129,6 +130,7 @@ static bool screen_intro() { step = !step; key=getInputWaitTimeout(1000); } + //getInputWaitRelease(); return !(key==BTN_LEFT); } @@ -144,6 +146,7 @@ static bool screen_gameover() { lcdDisplay(); key=getInputWaitTimeout(5000); } + //getInputWaitRelease(); return !(key==BTN_LEFT); } diff --git a/firmware/lcd/display.c b/firmware/lcd/display.c index d3fb731..40bd2ae 100644 --- a/firmware/lcd/display.c +++ b/firmware/lcd/display.c @@ -67,6 +67,7 @@ static void lcdWrite(uint8_t cd, uint8_t data) { #define SDA 0,9 #define RST 2,2 +#ifdef NOTYET uint8_t lcdRead(uint8_t data) { uint8_t i; @@ -109,6 +110,7 @@ uint8_t lcdRead(uint8_t data) gpioSetDir(SDA, 1); delayms(1); } +#endif void lcdInit(void) {