Ivo van Poorten
/
SiLabs_C2
Basis for the C2 protocol from Silicon Labs.
Diff: main.cpp
- Revision:
- 7:65a72aad87b8
- Parent:
- 6:deb670cb8105
- Child:
- 8:af5d402396fb
--- a/main.cpp Sun May 25 17:11:20 2014 +0000 +++ b/main.cpp Sun May 25 17:17:40 2014 +0000 @@ -26,6 +26,7 @@ */ #include "mbed.h" +#include <stdarg.h> DigitalOut c2ck(p5); DigitalInOut c2d(p6); @@ -76,6 +77,15 @@ static int C2_FPDAT = 0xb4; // or 0xad static int page_size = 512; // not seen 4096 yet +static void fatal(char *f, ...) { + va_list ap; + va_start(ap,f); + printf("\n\rFATAL: "); + vprintf(f, ap); + va_end(ap); + exit(1); +} + static void c2ck_reset(void) { c2ck = 0; wait_us(25); @@ -176,11 +186,6 @@ STOP; } -static void fatal(char *s) { - puts(s); - exit(1); -} - static int poll_status(int mask) { int t = 20; do { @@ -189,7 +194,7 @@ } while(--t); return -1; } - + int main() { int i, c, devid, revid; @@ -215,10 +220,7 @@ if (devices[i].devid == devid) break; } - if (!i) { - printf("unknown device: %02X:%02X\n\r", devid, revid); - fatal("unable to continue\n\r"); - } + if (!i) fatal("unknown device: %02X:%02X\n\r", devid, revid); switch(devid) { case 0x0f: case 0x28: case 0x18: case 0x19: C2_FPDAT = 0xad;