From 78d7434d1027841c5dfd42a233d15686854ba607 Mon Sep 17 00:00:00 2001 From: hadaq Date: Fri, 11 Jun 2010 21:07:49 +0000 Subject: [PATCH] update, new function trb_strerrorf --- libtrbnet/trberror.c | 41 +++++++++++++++++++++++++++-------------- libtrbnet/trberror.h | 2 ++ 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/libtrbnet/trberror.c b/libtrbnet/trberror.c index 2e8bf60..f86830f 100644 --- a/libtrbnet/trberror.c +++ b/libtrbnet/trberror.c @@ -32,7 +32,7 @@ const char* trb_strerror(int trberrno) "FIFO Not Empty", "FIFO Timeout", "FIFO Error, invalid H0 header(s)", - "FIFO Error, invalid sequenze", + "FIFO Error, invalid sequence", "FIFO Error, invalid read-data-mode", "FIFO Incomplete Package", "FIFO Invalid Header-Type", @@ -121,29 +121,42 @@ const char* trb_strterm(TRB_TERM term) unsigned int i; if (term.channel >= 4) { - snprintf(buffer, 2048, "INVALID ChannelId %d", term.channel); + sprintf(buffer, "INVALID ChannelId %d", term.channel); return buffer; } - - snprintf(buffer, 2048, - "CommonStatusBits: 0x%04x, Channel#%d StatusBits: 0x%04x\n", - term.status_common, - term.channel, - term.status_channel); + + sprintf(buffer, + "CommonStatusBits: 0x%04x, Channel#%d StatusBits: 0x%04x", + term.status_common, + term.channel, + term.status_channel); + for (i = 0; i < 16; i++) { if ((term.status_common & (0x01 << i)) != (i != 0 ? 0 : 1)) { - strncat(buffer, " ", 2048); - strncat(buffer, commonStatusBits[i], 2048); - strncat(buffer, "\n", 2048); + strcat(buffer, "\n "); + strcat(buffer, commonStatusBits[i]); } } for (i = 0; i < 16; i++) { if ((term.status_channel & (0x01 << i)) != 0) { - strncat(buffer, " ", 2048); - strncat(buffer, chStatusBits[term.channel] + 64 * i, 2048); - strncat(buffer, "\n", 2048); + strcat(buffer, "\n "); + strcat(buffer, chStatusBits[term.channel] + 64 * i); } } return buffer; } + +const char* trb_strerrorf() +{ + static char buffer[4096] = ""; + + if (trb_errno == TRB_STATUS_ERROR) { + snprintf(buffer, 4096, "%s\n%s", + trb_strerror(trb_errno), trb_strterm(trb_term)); + } else { + snprintf(buffer, 4096, "%s", trb_strerror(trb_errno)); + } + + return buffer; +} diff --git a/libtrbnet/trberror.h b/libtrbnet/trberror.h index 5f1dc35..9b1a768 100644 --- a/libtrbnet/trberror.h +++ b/libtrbnet/trberror.h @@ -56,6 +56,8 @@ extern TRB_TERM trb_term; const char* trb_strterm(TRB_TERM term); +const char* trb_strerrorf(); + #ifdef __cplusplus } #endif -- 2.43.0