static int agerr_va(agerrlevel_t level, char *fmt, va_list args) { agerrlevel_t lvl; /* Use previous error level if continuation message; * Convert AGMAX to AGERROR; * else use input level */ lvl = (level == AGPREV ? agerrno : (level == AGMAX) ? AGERR : level); agerrcnt++; /* store this error level */ agerrno = lvl; /* We report all messages whose level is bigger than the user set agerrlevel * Setting agerrlevel to AGMAX turns off immediate error reporting. */ if (lvl >= agerrlevel) { if (usererrf) userout (level, fmt, args); else { if (level != AGPREV) fprintf(stderr, "%s: ", (level == AGERR) ? "Error" : "Warning"); vfprintf(stderr, fmt, args); va_end(args); } return 0; } if (!agerrout) { agerrout = tmpfile(); if (!agerrout) return 1; } if (level != AGPREV) aglast = ftell(agerrout); vfprintf(agerrout, fmt, args); va_end(args); return 0; }
/* Process command */ void processCmd(uint8_t cmd) { switch(cmd) { case '?': printf_P(PSTR("Commands are:\n\r")); printf_P(PSTR("? = Print available commands\n\r")); printf_P(PSTR("V = Print firmware version\n\r")); printf_P(PSTR("0 = Clear buffers\n\r")); printf_P(PSTR("1 = Dump raw ISO Stripe 1 bit buffer\n\r")); printf_P(PSTR("2 = Dump raw ISO Stripe 2 bit buffer\n\r")); printf_P(PSTR("3 = Dump raw ISO Stripe 3 bit buffer\n\r")); printf_P(PSTR("4 = Flip magstripe buffers\n\r")); printf_P(PSTR("5 = Decode ISO Stripe 1 data\n\r")); printf_P(PSTR("6 = Decode ISO Stripe 2 data\n\r")); printf_P(PSTR("7 = Decode ISO Stripe 3 data\n\r")); printf_P(PSTR("p = Switch USEROUT1 to low\n\r")); printf_P(PSTR("q = Switch USEROUT2 to low\n\r")); printf_P(PSTR("r = Switch USEROUT3 to low\n\r")); printf_P(PSTR("P = Switch USEROUT1 to high\n\r")); printf_P(PSTR("Q = Switch USEROUT2 to high\n\r")); printf_P(PSTR("R = Switch USEROUT3 to high\n\r")); printf_P(PSTR("u = Read USERIN1 status\n\r")); printf_P(PSTR("v = Read USERIN2 status\n\r")); printf_P(PSTR("w = Read USERIN3 status\n\r")); printf_P(PSTR("x = Disable USERIN1 pullup\n\r")); printf_P(PSTR("y = Disable USERIN2 pullup\n\r")); printf_P(PSTR("z = Disable USERIN3 pullup\n\r")); printf_P(PSTR("X = Enable USERIN1 pullup\n\r")); printf_P(PSTR("Y = Enable USERIN2 pullup\n\r")); printf_P(PSTR("Z = Enable USERIN3 pullup\n\r")); break; case 'V': printf_P(PSTR("1.1.0§\n\r"),magstripe3Data); break; /* Magstripe commands */ case '0': magstripeInit(); printf_P(PSTR("§\n\r")); break; case '1': magstripePrintRaw(1); printf_P(PSTR("§\n\r")); break; case '2': magstripePrintRaw(2); printf_P(PSTR("§\n\r")); break; case '3': magstripePrintRaw(3); printf_P(PSTR("§\n\r")); break; case '4': magstripeFlip(); printf_P(PSTR("§\n\r")); break; case '5': magstripeDecode(1); printf_P(PSTR("%s§\n\r"),magstripeData); break; case '6': magstripeDecode(2); printf_P(PSTR("%s§\n\r"),magstripeData); break; case '7': magstripeDecode(3); printf_P(PSTR("%s§\n\r"),magstripeData); break; /* GPIO Commands */ case 'p': userout(1,0); printf_P(PSTR("§\n\r")); break; case 'q': userout(2,0); printf_P(PSTR("§\n\r")); break; case 'r': userout(3,0); printf_P(PSTR("§\n\r")); break; case 'P': userout(1,1); printf_P(PSTR("§\n\r")); break; case 'Q': userout(2,1); printf_P(PSTR("§\n\r")); break; case 'R': userout(3,1); printf_P(PSTR("§\n\r")); break; case 'u': printf_P(PSTR("%i§\n\r"),userin(1)); break; case 'v': printf_P(PSTR("%i§\n\r"),userin(2)); break; case 'w': printf_P(PSTR("%i§\n\r"),userin(3)); break; case 'x': userinPullup(1,0); printf_P(PSTR("§\n\r")); break; case 'y': userinPullup(2,0); printf_P(PSTR("§\n\r")); break; case 'z': userinPullup(3,0); printf_P(PSTR("§\n\r")); break; case 'X': userinPullup(1,1); printf_P(PSTR("§\n\r")); break; case 'Y': userinPullup(2,1); printf_P(PSTR("§\n\r")); break; case 'Z': userinPullup(3,1); printf_P(PSTR("§\n\r")); break; default: printf_P(PSTR("\n\r"),cmd); break; } }