]> rtime.felk.cvut.cz Git - coffee/mt-apps.git/blobdiff - mt_rfid.c
Convert RFID printing to a function
[coffee/mt-apps.git] / mt_rfid.c
index 5296b3bc7c0ba5e78cb5f7a6048798feaef7c9d5..e987f827c79be7f2d17acf0934550ca70be96c0c 100644 (file)
--- a/mt_rfid.c
+++ b/mt_rfid.c
@@ -9,6 +9,7 @@
 
 #include "mt_rfid.h"
 #include "signal_exit.h"
+#include "json_helpers.h"
 
 // shit to avoid constant repetition
 #define CONCAT_AGAIN(A,B) A ## B
@@ -25,7 +26,7 @@ static int set_nonblock(int fd)
         perror("fcntl (set)");
         return -1;
     }
-    fprintf(stderr, "set non-blocking\n");
+    fprintf(stderr, "set %d non-blocking\n", fd);
     return 0;
 }
 
@@ -49,7 +50,7 @@ static int set_rts(int fd, int level)
         return -1;
     }
 
-    fprintf(stderr, "set rts %d\n", level);
+    fprintf(stderr, "set %d rts %d\n", fd, level);
 
     return 0;
 }
@@ -84,32 +85,30 @@ static int tty_open(const char *port, int br)
     return fd;
 }
 
-// really simple JSON helpers
-#define JSON_START()   dprintf(fd,"{")
-#define JSON_NUM(NAME) dprintf(fd,"\"" #NAME "\":%d", NAME) //see the int?
-#define JSON_NEXT()    dprintf(fd,",")
-#define JSON_STR(NAME) dprintf(fd,"\"" #NAME "\":\"%s\"", NAME)
-#define JSON_END()     dprintf(fd,"}\n")
-
 // print complete json
-#define JSON_PRINT() do { \
-    JSON_START();         \
-    JSON_STR(type);       \
-    JSON_NEXT();          \
-    JSON_NUM(card_type);  \
-    JSON_NEXT();          \
-    JSON_NUM(sak);        \
-    JSON_NEXT();          \
-    JSON_NUM(size);       \
-    JSON_NEXT();          \
-    JSON_STR(uid);        \
-    JSON_END();           \
-} while (0)
+void rfid_json_print(int fd,
+                    uint8_t card_type,
+                    uint8_t sak,           //select acknowledge
+                    char *uid,
+                    uint8_t size)
+{
+    static const char *type = "rfid";
+
+    JSON_START();
+    JSON_STR(type);
+    JSON_NEXT();
+    JSON_NUM(card_type);
+    JSON_NEXT();
+    JSON_NUM(sak);
+    JSON_NEXT();
+    JSON_NUM(size);
+    JSON_NEXT();
+    JSON_STR(uid);
+    JSON_END();
+}
 
 static void ufr_read(char *uid, int fd)
 {
-    static char *type = "rfid";
-
     UFR_STATUS status;
     uint8_t card_type;
     uint8_t sak;           //select acknowledge
@@ -128,7 +127,7 @@ static void ufr_read(char *uid, int fd)
         return;
     }
 
-    JSON_PRINT();
+    rfid_json_print(fd, card_type, sak, uid, size);
 
 #ifdef UFR_BEEP
     ReaderUISignal(0, 1); // no light, one beep
@@ -216,7 +215,7 @@ void mt_rfid_deinit(mt_rfid_t *self)
     fprintf(stderr, "ReaderClose: %s\n", UFR_Status2String(status));
 }
 
-#ifdef IS_MAIN
+#ifndef NO_MAIN
 int main(int argc, char **argv)
 {
     struct ev_loop *loop = EV_DEFAULT;
@@ -231,6 +230,7 @@ int main(int argc, char **argv)
     ev_run(loop, 0);
 
     mt_rfid_deinit(&rfid);
+    ev_loop_destroy(loop);
 
     return 0;
 }