From 78561095623b75cc1c11dc0582f85ee8b2215e9a Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 11 Aug 2011 01:53:54 +0200 Subject: [PATCH] debug menu, mesh info: browse pkt details --- firmware/l0dable/debug.c | 94 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 91 insertions(+), 3 deletions(-) diff --git a/firmware/l0dable/debug.c b/firmware/l0dable/debug.c index 2c65d1f..2603037 100644 --- a/firmware/l0dable/debug.c +++ b/firmware/l0dable/debug.c @@ -165,12 +165,72 @@ void getsp(void) { dx=DoString(0,dy,"Done."); }; +void m_time_details(int select) { + getInputWaitRelease(); + + while(getInputWaitTimeout(50) != BTN_LEFT){ + lcdClear(); + MPKT *mpkt = &meshbuffer[select]; + uint8_t *pkt = mpkt->pkt; + + if (!mpkt->flags & MF_USED) + lcdPrint(""); + else { + lcdPrint("Type: "); + char c[2] = {0, 0}; + c[0] = mpkt->pkt[0]; + lcdPrint(c); + lcdNl(); + + lcdPrint("Gen: "); + lcdPrintInt(MO_GEN(pkt) & 0xff); + lcdNl(); + + lcdPrint("Time: "); + lcdPrintInt(MO_TIME(pkt) & 0xffff); + lcdNl(); + lcdPrint("Body: "); + lcdNl(); + + int x = 0; + for(uint8_t *body = MO_BODY(pkt); body < pkt + 32; body++) { + if (*body >= ' ' && *body < 128) { + if (x > 12) { + lcdNl(); + x = 0; + } + + char c[2] = {*body, 0}; + lcdPrint(c); + x++; + } else { + if (x > 10) { + lcdNl(); + x = 0; + } + + lcdPrint("\\"); + lcdPrintInt(*body & 0xff); + x += 2; + if (*body > 9) + x++; + if (*body > 99) + x++; + } + } + } + + lcdRefresh(); + } +} + void m_time(void){ struct tm* tm; + int select=0; char c[2]={0,0}; getInputWaitRelease(); delayms(100); - do{ + while(1) { lcdClear(); tm= mygmtime(getSeconds()); lcdPrint(IntToStr(tm->tm_hour,2,F_LONG)); @@ -199,6 +259,12 @@ void m_time(void){ }; lcdPrintln(">"); + lcdPrint(" "); + for(int i=0; i= MESHBUFSIZE) + select = 0; + break; + case BTN_RIGHT: + case BTN_ENTER: + m_time_details(select); + break; + case BTN_LEFT: + // Exit + return; + } + if (key != BTN_NONE) + getInputWaitRelease(); + } }; void ChkFunk(){