Basis for the C2 protocol from Silicon Labs.

Dependencies:   mbed

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;