From e498ab2815d07ab5fe539539ea027ce20956daea Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Wed, 3 Aug 2011 23:31:59 +0200 Subject: [PATCH 01/15] remove debugging code --- firmware/applications/final/flame.c | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/firmware/applications/final/flame.c b/firmware/applications/final/flame.c index a9ce06a..5f3fe81 100644 --- a/firmware/applications/final/flame.c +++ b/firmware/applications/final/flame.c @@ -149,25 +149,3 @@ void init_flame(void) { } } -#include "lcd/print.h" - -//# MENU debug ChkFlame -void ChkFlame(void) { - do{ - lcdClear(); - lcdPrint("Enabled:"); - lcdPrintln(IntToStr(flameEnabled,1,0)); - - lcdPrint("State:"); - lcdPrintln(IntToStr(flameMode,1,0)); - - lcdPrint("PWMtarg:"); - lcdPrintln(IntToStr(flameI2Cpwm,3,0)); - - lcdPrint("FTicks:"); - lcdPrintln(IntToStr(flameTicks,3,0)); - - lcdRefresh(); - delayms_queue(10); - } while ((getInputRaw())==BTN_NONE); -} From 28375b9ed1f080cdb9034f14f830dd75238245fc Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Wed, 3 Aug 2011 23:32:26 +0200 Subject: [PATCH 02/15] Enhance+flame debug --- firmware/l0dable/debug.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/firmware/l0dable/debug.c b/firmware/l0dable/debug.c index 4686da0..60204fc 100644 --- a/firmware/l0dable/debug.c +++ b/firmware/l0dable/debug.c @@ -27,7 +27,7 @@ void uuid(void); static const struct MENU submenu_debug={ "debug", { { "ChkBattery", &ChkBattery}, -// { "ChkFlame", &ChkFlame}, + { "hkFlame", &ChkFlame}, { "ChkLight", &ChkLight}, { "MeshInfo", &m_time}, { "Qstatus", &Qstatus}, @@ -118,10 +118,10 @@ void uuid(void) { iap_return = iapReadSerialNumber(); lcdClear(); lcdPrintln("UUID:"); - lcdPrintIntHex(iap_return.Result[0]); lcdNl(); - lcdPrintIntHex(iap_return.Result[1]); lcdNl(); - lcdPrintIntHex(iap_return.Result[2]); lcdNl(); - lcdPrintIntHex(iap_return.Result[3]); lcdNl(); + lcdPrintln(IntToStrX(iap_return.Result[0],8)); + lcdPrintln(IntToStrX(iap_return.Result[1],8)); + lcdPrintln(IntToStrX(iap_return.Result[2],8)); + lcdPrintln(IntToStrX(iap_return.Result[3],8)); lcdNl(); lcdPrintln("Beacon ID:"); lcdPrintln(IntToStrX(GetUUID32(),8)); @@ -228,3 +228,22 @@ void m_time(void){ }while ((getInputRaw())==BTN_NONE); }; +void ChkFlame(void) { + do{ + lcdClear(); + lcdPrint("Enabled:"); + lcdPrintln(IntToStr(flameEnabled,1,0)); + + lcdPrint("State:"); + lcdPrintln(IntToStr(flameMode,1,0)); + + lcdPrint("PWMtarg:"); + lcdPrintln(IntToStr(flameI2Cpwm,3,0)); + + lcdPrint("FTicks:"); + lcdPrintln(IntToStr(flameTicks,3,0)); + + lcdRefresh(); + delayms_queue(10); + } while ((getInputRaw())==BTN_NONE); +} From d490211d927b96f405c5d36d657d4bceb1fcbdcb Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Wed, 3 Aug 2011 23:36:16 +0200 Subject: [PATCH 03/15] also show date. --- firmware/applications/final/mesh.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/firmware/applications/final/mesh.c b/firmware/applications/final/mesh.c index 82ffc73..ef3fa22 100644 --- a/firmware/applications/final/mesh.c +++ b/firmware/applications/final/mesh.c @@ -199,6 +199,15 @@ void m_choose(){ lcdPrint(":"); lcdPrint(IntToStr(tm->tm_sec,2,F_LONG|F_ZEROS)); lcdNl(); + + if(tmm[i]=='T'){ + lcdPrint(IntToStr(tm->tm_mday,2,F_LONG)); + lcdPrint("."); + lcdPrint(IntToStr(tm->tm_mon+1,2,0)); + lcdPrint("."); + lcdPrint(IntToStr(tm->tm_year+YEAR0,4,F_LONG|F_ZEROS)); + lcdNl(); + }; }; char *foo=(char *)MO_BODY(meshbuffer[j].pkt); while(strlen(foo)>13){ From 5a8735fdc5905c5188a2e4b994c8aca70c5725cc Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Thu, 4 Aug 2011 00:12:11 +0200 Subject: [PATCH 04/15] Also standalone l0dables allowed --- firmware/applications/Makefile | 15 +++++++++++++++ firmware/applications/mkwrapper | 3 +++ 2 files changed, 18 insertions(+) diff --git a/firmware/applications/Makefile b/firmware/applications/Makefile index 82b69df..d8be88a 100644 --- a/firmware/applications/Makefile +++ b/firmware/applications/Makefile @@ -71,6 +71,21 @@ $(LOBJ): OBJS += $(LOBJ) endif +ifeq "$(APP)" "l0dable" +ifndef LAPP +LAPP=blinktest +endif +LSRC=../l0dable/$(LAPP).c +LOBJ=l0dable_$(LAPP).o + +.PHONY: $(LOBJ) + +$(LOBJ): + $(CC) $(CFLAGS) -o $@ $(LSRC) + +OBJS += $(LOBJ) +endif + ifeq "$(wildcard $(APP))" "$(APP)" ifndef TYPE TYPE=$(APP) diff --git a/firmware/applications/mkwrapper b/firmware/applications/mkwrapper index 4c65d03..7bb27fc 100755 --- a/firmware/applications/mkwrapper +++ b/firmware/applications/mkwrapper @@ -3,6 +3,7 @@ for a in $* ; do case $a in loadable_*) continue;; + l0dable_*) continue;; */*) continue;; esac base=${a%.o} @@ -16,6 +17,7 @@ echo "void wrapper(void){" for a in $* ; do case $a in loadable_*) continue;; + l0dable_*) continue;; */*) continue;; esac base=${a%.o} @@ -29,6 +31,7 @@ echo "void tick_wrapper(void){" for a in $* ; do case $a in loadable_*) continue;; + l0dable_*) continue;; */*) continue;; esac base=${a%.o} From b51e6885d096b10c74f76cf24e009cec6eb0147a Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Thu, 4 Aug 2011 00:18:06 +0200 Subject: [PATCH 05/15] Ooops forgot file --- firmware/applications/l0dable.c | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 firmware/applications/l0dable.c diff --git a/firmware/applications/l0dable.c b/firmware/applications/l0dable.c new file mode 100644 index 0000000..f96a280 --- /dev/null +++ b/firmware/applications/l0dable.c @@ -0,0 +1,43 @@ +#include +#include + +#include "basic/basic.h" +#include "lcd/lcd.h" +#include "lcd/print.h" +#include "usb/usbmsc.h" + +/**************************************************************************/ +void gotoISP(void) { + DoString(0,0,"Enter ISP!"); + lcdDisplay(); + ISPandReset(); +} + +void msc_menu(void){ + DoString(0,8,"MSC Enabled."); + lcdDisplay(); + usbMSCInit(); + while(!getInputRaw())delayms(10); + DoString(0,16,"MSC Disabled."); + usbMSCOff(); +}; + +extern void (*ram)(void); + +static const struct MENU mainmenu = {"Mainmenu", { + {"Run Loadable", &ram}, + {"Invoke ISP", &gotoISP}, + {"MSC", &msc_menu}, + {NULL,NULL} +}}; + + + +/**************************************************************************/ + +void main_l0dable(void) { + lcdClear(); + lcdDisplay(); + handleMenu(&mainmenu); + gotoISP(); +}; From 4cd445ad0296835ac9f0e3b1a3cbd80ccc325237 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Thu, 4 Aug 2011 00:23:53 +0200 Subject: [PATCH 06/15] Fix DoIntX - compiler fails on dynmic-sized-arrays? --- firmware/lcd/render.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/firmware/lcd/render.c b/firmware/lcd/render.c index 2a2f692..69c6d6e 100644 --- a/firmware/lcd/render.c +++ b/firmware/lcd/render.c @@ -432,9 +432,9 @@ int DoInt(int sx, int sy, int num){ #undef mxlen }; +#define MAX 8 int DoIntXn(int sx, int sy, unsigned int num, unsigned int mxlen){ - char s[(mxlen+1)]; - char * o=s; + char s[(MAX+1)]; int len; s[mxlen]=0; for (len=(mxlen-1);len>=0;len--){ @@ -443,8 +443,9 @@ int DoIntXn(int sx, int sy, unsigned int num, unsigned int mxlen){ s[len]+='A'-'9'-1; num/=16; }; - return DoString(sx,sy,o); + return DoString(sx,sy,s); }; +#undef MAX int DoIntX(int sx, int sy, unsigned int num){ return DoIntXn(sx, sy, num, 8); From dcbecb6ebd362b2ca835ecd5e68d84c9129ba185 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Thu, 4 Aug 2011 00:25:29 +0200 Subject: [PATCH 07/15] Remove flamedebug. It breaks other stuff --- firmware/l0dable/debug.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/firmware/l0dable/debug.c b/firmware/l0dable/debug.c index 60204fc..f5d7684 100644 --- a/firmware/l0dable/debug.c +++ b/firmware/l0dable/debug.c @@ -227,23 +227,3 @@ void m_time(void){ delayms_queue(50); }while ((getInputRaw())==BTN_NONE); }; - -void ChkFlame(void) { - do{ - lcdClear(); - lcdPrint("Enabled:"); - lcdPrintln(IntToStr(flameEnabled,1,0)); - - lcdPrint("State:"); - lcdPrintln(IntToStr(flameMode,1,0)); - - lcdPrint("PWMtarg:"); - lcdPrintln(IntToStr(flameI2Cpwm,3,0)); - - lcdPrint("FTicks:"); - lcdPrintln(IntToStr(flameTicks,3,0)); - - lcdRefresh(); - delayms_queue(10); - } while ((getInputRaw())==BTN_NONE); -} From 9124a186b91f4e50e2e80d7ab338a14ba968fadf Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Thu, 4 Aug 2011 00:26:21 +0200 Subject: [PATCH 08/15] gna. --- firmware/l0dable/debug.c | 1 - 1 file changed, 1 deletion(-) diff --git a/firmware/l0dable/debug.c b/firmware/l0dable/debug.c index f5d7684..a4c329b 100644 --- a/firmware/l0dable/debug.c +++ b/firmware/l0dable/debug.c @@ -27,7 +27,6 @@ void uuid(void); static const struct MENU submenu_debug={ "debug", { { "ChkBattery", &ChkBattery}, - { "hkFlame", &ChkFlame}, { "ChkLight", &ChkLight}, { "MeshInfo", &m_time}, { "Qstatus", &Qstatus}, From 6de83a0b6f20c03308b775c1b928087f6e7e1551 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Thu, 4 Aug 2011 00:27:05 +0200 Subject: [PATCH 09/15] Revert "remove debugging code" This reverts commit e498ab2815d07ab5fe539539ea027ce20956daea. --- firmware/applications/final/flame.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/firmware/applications/final/flame.c b/firmware/applications/final/flame.c index 5f3fe81..a9ce06a 100644 --- a/firmware/applications/final/flame.c +++ b/firmware/applications/final/flame.c @@ -149,3 +149,25 @@ void init_flame(void) { } } +#include "lcd/print.h" + +//# MENU debug ChkFlame +void ChkFlame(void) { + do{ + lcdClear(); + lcdPrint("Enabled:"); + lcdPrintln(IntToStr(flameEnabled,1,0)); + + lcdPrint("State:"); + lcdPrintln(IntToStr(flameMode,1,0)); + + lcdPrint("PWMtarg:"); + lcdPrintln(IntToStr(flameI2Cpwm,3,0)); + + lcdPrint("FTicks:"); + lcdPrintln(IntToStr(flameTicks,3,0)); + + lcdRefresh(); + delayms_queue(10); + } while ((getInputRaw())==BTN_NONE); +} From b1d4bf019aa943d92f17a51279e96ab1162bbeac Mon Sep 17 00:00:00 2001 From: schneider Date: Thu, 4 Aug 2011 00:44:13 +0200 Subject: [PATCH 10/15] sendcard: buffer overflow #fail --- firmware/l0dable/sendcard.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/firmware/l0dable/sendcard.c b/firmware/l0dable/sendcard.c index 8bcf110..cd55b1a 100644 --- a/firmware/l0dable/sendcard.c +++ b/firmware/l0dable/sendcard.c @@ -30,12 +30,23 @@ //#include "lcd/print.h" - +void sendFile(char *filename); uint8_t mac[5] = {1,2,3,2,1}; + struct NRF_CFG config = { + .channel= 81, + .txmac= "\x1\x2\x3\x2\x1", + .nrmacs=1, + .mac0= "\x1\x2\x3\x2\x1", + .maclen ="\x20", + }; void ram(void) { + + nrf_config_set(&config); + + char file[13]; selectFile(file,"TXT"); sendFile(file); @@ -43,18 +54,34 @@ void ram(void) void sendR(uint8_t *rx, uint8_t *ry) { - uint8_t exp[2 + 4*NUMWORDS + 2]; + //uint8_t exp[2 + 4*NUMWORDS + 2]; + uint8_t exp[32]; exp[0] = 'R'; for(int i=0; i<4*NUMWORDS; i++) exp[2+i] = rx[i]; exp[1] = 'X'; + lcdPrintln("foo"); + lcdRefresh(); + nrf_snd_pkt_crc(32, exp); + lcdPrintln("bar"); + lcdRefresh(); + delayms(10); exp[1] = 'Y'; for(int i=0; i<4*NUMWORDS; i++) exp[2+i] = ry[i]; + lcdPrintln("foo"); + lcdRefresh(); + nrf_snd_pkt_crc(32, exp); + lcdPrintln("bar"); + lcdRefresh(); + delayms(10); + lcdPrintln("bar"); + lcdRefresh(); + } int receiveKey(uint8_t type, uint8_t *x, uint8_t *y) @@ -169,9 +196,13 @@ void sendFile(char *filename) ECIES_encyptkeygen(px, py, k1, k2, rx, ry); while( !done ){ - lcdPrintln("Sending file");lcdRefresh(); + lcdPrintln("Sending fil");lcdRefresh(); sendR(rx,ry); + lcdPrintln("wait"); + lcdRefresh(); delayms(3000); + lcdPrintln("filetrans"); + lcdRefresh(); filetransfer_send((uint8_t*)filename, 0, mac, (uint32_t*)k1); lcdPrintln("Done"); lcdPrintln("Right=OK"); From eda19fa10c630f11da99d7e43fbe03b70ff7a628 Mon Sep 17 00:00:00 2001 From: schneider Date: Thu, 4 Aug 2011 00:46:53 +0200 Subject: [PATCH 11/15] sendfile: removed debug output --- firmware/l0dable/sendcard.c | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/firmware/l0dable/sendcard.c b/firmware/l0dable/sendcard.c index cd55b1a..cf2a3d7 100644 --- a/firmware/l0dable/sendcard.c +++ b/firmware/l0dable/sendcard.c @@ -60,28 +60,14 @@ void sendR(uint8_t *rx, uint8_t *ry) for(int i=0; i<4*NUMWORDS; i++) exp[2+i] = rx[i]; exp[1] = 'X'; - lcdPrintln("foo"); - lcdRefresh(); - nrf_snd_pkt_crc(32, exp); - lcdPrintln("bar"); - lcdRefresh(); - delayms(10); exp[1] = 'Y'; for(int i=0; i<4*NUMWORDS; i++) exp[2+i] = ry[i]; - lcdPrintln("foo"); - lcdRefresh(); - nrf_snd_pkt_crc(32, exp); - lcdPrintln("bar"); - lcdRefresh(); delayms(10); - lcdPrintln("bar"); - lcdRefresh(); - } int receiveKey(uint8_t type, uint8_t *x, uint8_t *y) @@ -196,13 +182,9 @@ void sendFile(char *filename) ECIES_encyptkeygen(px, py, k1, k2, rx, ry); while( !done ){ - lcdPrintln("Sending fil");lcdRefresh(); + lcdPrintln("Sending file");lcdRefresh(); sendR(rx,ry); - lcdPrintln("wait"); - lcdRefresh(); delayms(3000); - lcdPrintln("filetrans"); - lcdRefresh(); filetransfer_send((uint8_t*)filename, 0, mac, (uint32_t*)k1); lcdPrintln("Done"); lcdPrintln("Right=OK"); From 8513771825e5de6631406f05e497b08c9c22df72 Mon Sep 17 00:00:00 2001 From: schneider Date: Thu, 4 Aug 2011 00:49:28 +0200 Subject: [PATCH 12/15] recvcard: init nrf --- firmware/l0dable/recvcard.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/firmware/l0dable/recvcard.c b/firmware/l0dable/recvcard.c index d19da8d..3ef7bfb 100644 --- a/firmware/l0dable/recvcard.c +++ b/firmware/l0dable/recvcard.c @@ -24,9 +24,20 @@ uint8_t mac[5] = {1,2,3,2,1}; + struct NRF_CFG config = { + .channel= 81, + .txmac= "\x1\x2\x3\x2\x1", + .nrmacs=1, + .mac0= "\x1\x2\x3\x2\x1", + .maclen ="\x20", + }; void ram(void) { + memset(0,0,0); + nrf_config_set(&config); + + if( sendKeys() ) return; From cf2824511e31665bfc2cf072443c32e1760b6a6a Mon Sep 17 00:00:00 2001 From: schneider Date: Thu, 4 Aug 2011 00:49:46 +0200 Subject: [PATCH 13/15] added exports for vcard --- firmware/l0dable/EXPORTS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/firmware/l0dable/EXPORTS b/firmware/l0dable/EXPORTS index c25d631..e77c938 100644 --- a/firmware/l0dable/EXPORTS +++ b/firmware/l0dable/EXPORTS @@ -65,3 +65,5 @@ meshGetMessage nickname uint32touint8p uint8ptouint32 +memset +nrf_config_set From 0a266eae4a5b7d0937d36434d1cd25dca259639c Mon Sep 17 00:00:00 2001 From: schneider Date: Thu, 4 Aug 2011 00:50:45 +0200 Subject: [PATCH 14/15] vcard: added system includes --- firmware/l0dable/system-include-hack.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/firmware/l0dable/system-include-hack.h b/firmware/l0dable/system-include-hack.h index 4f8f217..f1f77e5 100644 --- a/firmware/l0dable/system-include-hack.h +++ b/firmware/l0dable/system-include-hack.h @@ -1,3 +1,4 @@ size_t strlen(const char *s); -char * strcpy(char * restrict dst, const char * restrict src); -void * memcpy(void *dst, const void *src, size_t len); +char strcpy(char * restrict dst, const char * restrict src); +void memcpy(void *dst, const void *src, size_t len); +void memset(void *s, int c, size_t n); From 30b852a09f43629c952d01974d75eac8b89d4e86 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Thu, 4 Aug 2011 00:57:00 +0200 Subject: [PATCH 15/15] Remove debugging from menu (and thus codesize) --- firmware/applications/final/flame.c | 1 - 1 file changed, 1 deletion(-) diff --git a/firmware/applications/final/flame.c b/firmware/applications/final/flame.c index a9ce06a..06d02b1 100644 --- a/firmware/applications/final/flame.c +++ b/firmware/applications/final/flame.c @@ -151,7 +151,6 @@ void init_flame(void) { #include "lcd/print.h" -//# MENU debug ChkFlame void ChkFlame(void) { do{ lcdClear();