Return-Path: From: Tedd Ho-Jeong An To: linux-bluetooth@vger.kernel.org, marcel@holtmann.org Subject: Re: [PATCH v2 1/3] hciattach: add common debug print functions and toggle option Date: Tue, 29 May 2012 09:51:07 -0700 Message-ID: <1396804.NRU9s8AsnG@tedd-ubuntu> In-Reply-To: <2437344.N06Bp3RTfe@tedd-ubuntu> References: <2437344.N06Bp3RTfe@tedd-ubuntu> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Sender: linux-bluetooth-owner@vger.kernel.org List-ID: Mracel. I sent out the v2 of patches(total 3) after updating with your comment. Let me know if you have any further comments. Tedd On Tuesday, May 22, 2012 09:35:35 PM you wrote: > From: Tedd Ho-Jeong An > > This adds common debug print functions that print the debug messages > to stderr and it can be toggled with'-d' option in the parameter. > > It provides two functions: one for message and the other for data contents. > > --- > tools/hciattach.8 | 4 ++++ > tools/hciattach.c | 39 ++++++++++++++++++++++++++++++++++++--- > tools/hciattach.h | 5 ++++- > 3 files changed, 44 insertions(+), 4 deletions(-) > > diff --git a/tools/hciattach.8 b/tools/hciattach.8 > index cc97cad..eccbc61 100644 > --- a/tools/hciattach.8 > +++ b/tools/hciattach.8 > @@ -6,6 +6,7 @@ hciattach \- attach serial devices via UART HCI to BlueZ stack > .RB [\| \-b \|] > .RB [\| \-n \|] > .RB [\| \-p \|] > +.RB [\| \-d \|] > .RB [\| \-t > .IR timeout \|] > .RB [\| \-s > @@ -32,6 +33,9 @@ Don't detach from controlling terminal. > .B \-p > Print the PID when detaching. > .TP > +.B \-d > +Print debug messages to stderr. > +.TP > .BI \-t " timeout" > Specify an initialization timeout. (Default is 5 seconds.) > .TP > diff --git a/tools/hciattach.c b/tools/hciattach.c > index 3e73956..e0a58de 100644 > --- a/tools/hciattach.c > +++ b/tools/hciattach.c > @@ -42,6 +42,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -73,6 +74,8 @@ struct uart_t { > > static volatile sig_atomic_t __io_canceled = 0; > > +static int debug; > + > static void sig_hup(int sig) > { > } > @@ -144,6 +147,31 @@ static int uart_speed(int s) > } > } > > +void dbg_print(const char *fmt, ...) > +{ > + va_list args; > + > + if (debug) { > + fprintf(stderr, "dbg: "); > + va_start(args, fmt); > + vfprintf(stderr, fmt, args); > + va_end(args); > + fprintf(stderr, "\n"); > + } > +} > + > +void dbg_print_pkt(char *str, unsigned char *data, int len) > +{ > + int i; > + > + if (debug) { > + fprintf(stderr, "dbg: %s", str); > + for (i = 0; i < len; i++) > + fprintf(stderr, "%02x ", data[i]); > + fprintf(stderr, "\n"); > + } > +} > + > int set_speed(int fd, struct termios *ti, int speed) > { > if (cfsetospeed(ti, uart_speed(speed)) < 0) > @@ -161,7 +189,7 @@ int set_speed(int fd, struct termios *ti, int speed) > /* > * Read an HCI event from the given file descriptor. > */ > -int read_hci_event(int fd, unsigned char* buf, int size) > +int read_hci_event(int fd, unsigned char *buf, int size) > { > int remain, r; > int count = 0; > @@ -1260,7 +1288,7 @@ static void usage(void) > { > printf("hciattach - HCI UART driver initialization utility\n"); > printf("Usage:\n"); > - printf("\thciattach [-n] [-p] [-b] [-r] [-t timeout] [-s initial_speed] [speed] [flow|noflow] [bdaddr]\n"); > + printf("\thciattach [-n] [-p] [-b] [-r] [-d] [-t timeout] [-s initial_speed] [speed] [flow|noflow] [bdaddr]\n"); > printf("\thciattach -l\n"); > } > > @@ -1280,8 +1308,9 @@ int main(int argc, char *argv[]) > detach = 1; > printpid = 0; > raw = 0; > + debug = 0; > > - while ((opt=getopt(argc, argv, "bnpt:s:lr")) != EOF) { > + while ((opt=getopt(argc, argv, "bnpdt:s:lr")) != EOF) { > switch(opt) { > case 'b': > send_break = 1; > @@ -1314,6 +1343,10 @@ int main(int argc, char *argv[]) > raw = 1; > break; > > + case 'd': > + debug = 1; > + break; > + > default: > usage(); > exit(1); > diff --git a/tools/hciattach.h b/tools/hciattach.h > index a24dbc4..a9a0d02 100644 > --- a/tools/hciattach.h > +++ b/tools/hciattach.h > @@ -44,7 +44,10 @@ > #define HCI_UART_RESET_ON_INIT 1 > #define HCI_UART_CREATE_AMP 2 > > -int read_hci_event(int fd, unsigned char* buf, int size); > +void dbg_print(const char *fmt, ...); > +void dbg_print_pkt(char *str, unsigned char *data, int len); > + > +int read_hci_event(int fd, unsigned char *buf, int size); > int set_speed(int fd, struct termios *ti, int speed); > > int texas_init(int fd, int *speed, struct termios *ti); >