make button detection more reliable in standalone mode and add exit command

This commit is contained in:
adam@algroup.co.uk 2009-07-13 12:14:50 +00:00
parent 7a494188f9
commit 693f7cf770
2 changed files with 31 additions and 14 deletions

View file

@ -842,10 +842,10 @@ void AppMain(void)
memset(BigBuf,0,sizeof(BigBuf)); memset(BigBuf,0,sizeof(BigBuf));
SpinDelay(100); SpinDelay(100);
LED_D_OFF(); LED_D_OFF();
LED_C_OFF(); LED_C_OFF();
LED_B_OFF(); LED_B_OFF();
LED_A_OFF(); LED_A_OFF();
UsbStart(); UsbStart();
@ -871,14 +871,14 @@ void AppMain(void)
LCDInit(); LCDInit();
// test text on different colored backgrounds // test text on different colored backgrounds
LCDString(" The quick brown fox ", &FONT6x8,1,1+8*0,WHITE ,BLACK ); LCDString(" The quick brown fox ", &FONT6x8,1,1+8*0,WHITE ,BLACK );
LCDString(" jumped over the ", &FONT6x8,1,1+8*1,BLACK ,WHITE ); LCDString(" jumped over the ", &FONT6x8,1,1+8*1,BLACK ,WHITE );
LCDString(" lazy dog. ", &FONT6x8,1,1+8*2,YELLOW ,RED ); LCDString(" lazy dog. ", &FONT6x8,1,1+8*2,YELLOW ,RED );
LCDString(" AaBbCcDdEeFfGgHhIiJj ", &FONT6x8,1,1+8*3,RED ,GREEN ); LCDString(" AaBbCcDdEeFfGgHhIiJj ", &FONT6x8,1,1+8*3,RED ,GREEN );
LCDString(" KkLlMmNnOoPpQqRrSsTt ", &FONT6x8,1,1+8*4,MAGENTA,BLUE ); LCDString(" KkLlMmNnOoPpQqRrSsTt ", &FONT6x8,1,1+8*4,MAGENTA,BLUE );
LCDString("UuVvWwXxYyZz0123456789", &FONT6x8,1,1+8*5,BLUE ,YELLOW); LCDString("UuVvWwXxYyZz0123456789", &FONT6x8,1,1+8*5,BLUE ,YELLOW);
LCDString("`-=[]_;',./~!@#$%^&*()", &FONT6x8,1,1+8*6,BLACK ,CYAN ); LCDString("`-=[]_;',./~!@#$%^&*()", &FONT6x8,1,1+8*6,BLACK ,CYAN );
LCDString(" _+{}|:\\\"<>? ",&FONT6x8,1,1+8*7,BLUE ,MAGENTA); LCDString(" _+{}|:\\\"<>? ",&FONT6x8,1,1+8*7,BLUE ,MAGENTA);
// color bands // color bands
LCDFill(0, 1+8* 8, 132, 8, BLACK); LCDFill(0, 1+8* 8, 132, 8, BLACK);
@ -947,9 +947,14 @@ void SamyRun()
// record // record
DbpString("Starting recording"); DbpString("Starting recording");
// wait for button to be released
while(BUTTON_PRESS())
WDT_HIT();
/* need this delay to prevent catching some weird data */ /* need this delay to prevent catching some weird data */
SpinDelay(500); SpinDelay(500);
CmdHIDdemodFSK(1, &high[selected], &low[selected], 0); CmdHIDdemodFSK(1, &high[selected], &low[selected], 0);
DbpString("Recorded"); DbpString("Recorded");
DbpIntegers(selected, high[selected], low[selected]); DbpIntegers(selected, high[selected], low[selected]);
@ -979,9 +984,18 @@ void SamyRun()
{ {
LED(LED_GREEN, 0); LED(LED_GREEN, 0);
DbpString("Playing"); DbpString("Playing");
// wait for button to be released
while(BUTTON_PRESS())
WDT_HIT();
DbpIntegers(selected, high[selected], low[selected]); DbpIntegers(selected, high[selected], low[selected]);
CmdHIDsimTAG(high[selected], low[selected], 0); CmdHIDsimTAG(high[selected], low[selected], 0);
DbpString("Done playing"); DbpString("Done playing");
if (BUTTON_HELD(1000) > 0)
{
DbpString("Exiting");
LEDsoff();
return;
}
/* We pressed a button so ignore it here with a delay */ /* We pressed a button so ignore it here with a delay */
SpinDelay(300); SpinDelay(300);
@ -992,6 +1006,9 @@ void SamyRun()
LEDsoff(); LEDsoff();
LED(selected + 1, 0); LED(selected + 1, 0);
} }
else
while(BUTTON_PRESS())
WDT_HIT();
} }
} }
} }

View file

@ -2633,7 +2633,7 @@ static struct {
{"norm", CmdNorm,1, " Normalize max/min to +/-500"}, {"norm", CmdNorm,1, " Normalize max/min to +/-500"},
{"plot", CmdPlot,1, " Show graph window"}, {"plot", CmdPlot,1, " Show graph window"},
{"quit", CmdQuit,1, " Quit program"}, {"quit", CmdQuit,1, " Quit program"},
{"readmem", CmdReadmem,0, " [address] Read memory at decimal address from flash"}, {"readmem", CmdReadmem,0, " [address] -- Read memory at decimal address from flash"},
{"reset", CmdReset,0, " Reset the Proxmark3"}, {"reset", CmdReset,0, " Reset the Proxmark3"},
{"save", CmdSave,1, "<filename> -- Save trace (from graph window)"}, {"save", CmdSave,1, "<filename> -- Save trace (from graph window)"},
{"scale", CmdScale,1, "<int> -- Set cursor display scale"}, {"scale", CmdScale,1, "<int> -- Set cursor display scale"},