X-Git-Url: https://rtime.felk.cvut.cz/gitweb/coffee/mt-apps.git/blobdiff_plain/e17bf7ed8d01e48100100d4fea02cec478bb22f9..6c8a2d4e92f67f45739dc86608dd5c32fb8c5127:/mt_rfid.c diff --git a/mt_rfid.c b/mt_rfid.c index 5296b3b..e987f82 100644 --- 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; }