From 05533f3e2eaf0e834f62ebd178057d8be111da5d Mon Sep 17 00:00:00 2001 From: Timo Kokkonen Date: Thu, 28 Apr 2011 21:22:14 +0300 Subject: [PATCH] Make excess debug messages to be hidden by default Only desired debug messages are shown depending on the tracing level. Signed-off-by: Timo Kokkonen --- main.c | 20 +++++++++++++------- utils.c | 2 ++ utils.h | 10 ++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/main.c b/main.c index 62b2241..a350154 100644 --- a/main.c +++ b/main.c @@ -26,14 +26,16 @@ int send_msg(const struct msg *msg, int fd, int usage_code) int ret; if (msg->direction != OUT) { - printf("Message direction is not OUT\n"); + trace(0, "Message direction is not OUT\n"); exit(1); } usleep(30 * 1000); - printf("Sending: "); - print_hex(msg->data + 1, datalen(msg->data) - 1); - print_ascii(msg->data + 1, datalen(msg->data) - 1); + trace(1, "Sending: "); + if (trace_level >= 3) + print_hex(msg->data + 1, datalen(msg->data) - 1); + if (trace_level >= 2) + print_ascii(msg->data + 1, datalen(msg->data) - 1); ret = hiddev_write(msg->data, fd, usage_code); if (ret) @@ -57,9 +59,11 @@ int read_and_verify(struct msg *msg, int fd) } memcpy(msg->data, buf, sizeof(buf)); - printf("Got data %d: ", datalen(buf)); -// print_hex(buf, datalen(buf)); - print_ascii(buf, datalen(buf)); + trace(2, "Got data %d: ", datalen(buf)); + if (trace_level >= 3) + print_hex(buf, datalen(buf)); + if (trace_level >= 2) + print_ascii(buf, datalen(buf)); err: return 0; } @@ -255,10 +259,12 @@ int communicate(int fd, int uc) send_msg(&msg, fd, uc); read_msgs(fd); + trace(0, "Glucose readings:\n"); usleep(100 * 1000); do { send_msg(&msg, fd, uc); read_and_verify(&in, fd); + print_ascii(in.data, datalen(in.data)); } while (datalen(in.data) > 45); return 0; diff --git a/utils.c b/utils.c index ce6d967..df4dad3 100644 --- a/utils.c +++ b/utils.c @@ -2,6 +2,8 @@ #include "utils.h" +int trace_level; + int datalen(const unsigned char *data) { int i, len; diff --git a/utils.h b/utils.h index a0bdfb5..e84ef36 100644 --- a/utils.h +++ b/utils.h @@ -1,6 +1,8 @@ #ifndef _UTILS_H #define _UTILS_H +#include + #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) static inline int is_printable(const unsigned char c) @@ -8,6 +10,14 @@ static inline int is_printable(const unsigned char c) return c >= 0x20 && c < 0x80; } +extern int trace_level; + +#define trace(level, arg...) \ + do { \ + if (level <= trace_level) \ + printf(arg); \ + } while (0) + int datalen(const unsigned char *data); void print_hex(const unsigned char *data, int len); void print_ascii(const unsigned char *data, int len); -- 2.44.0