From: hadaq Date: Tue, 14 Jul 2009 22:35:25 +0000 (+0000) Subject: new errors, some bug fixes X-Git-Tag: v6.0~410 X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=2dc17b8a6d05e6f3b175b2fafabd0c8c53dadfbc;p=trbnettools.git new errors, some bug fixes . --- diff --git a/libtrbnet/trberror.c b/libtrbnet/trberror.c index 4d8a88b..0a79e91 100644 --- a/libtrbnet/trberror.c +++ b/libtrbnet/trberror.c @@ -32,10 +32,11 @@ const char* trb_strerror(int errno) "FIFO Not Empty", "FIFO Timeout", "FIFO Error, invalid H0 header(s)", - "FIFO Error, invalid sequenze-number", + "FIFO Error, invalid sequenze", "FIFO Error, invalid read-data-mode", - "FIFO Broken-Package", - "FIFO Invalid-Content", + "FIFO Incomplete Package", + "FIFO Invalid Header-Type", + "FIFO Termination-Package missing", "FAILED WAIT_IS_VALID", "FAILED WAIT_IS_NOT_VALID", "User-Buffer Overflow", @@ -51,7 +52,7 @@ const char* trb_strerror(int errno) "Invalid data-length give by Header" }; - if (errno < 22) { + if (errno < 23) { return errorstring[errno]; } else { return "Unknown Errno"; diff --git a/libtrbnet/trberror.h b/libtrbnet/trberror.h index 294b818..9852160 100644 --- a/libtrbnet/trberror.h +++ b/libtrbnet/trberror.h @@ -11,21 +11,23 @@ typedef enum { TRB_FIFO_HEADERS = 4, TRB_FIFO_SEQUENZ = 5, TRB_FIFO_INVALID_MODE = 6, - TRB_FIFO_BROKEN_PACKAGE = 7, - TRB_FIFO_INVALID_CONTENT = 8, - TRB_FAILED_WAIT_IS_VALID = 9, - TRB_FAILED_WAIT_IS_NOT_VALID = 10, - TRB_USER_BUFFER_OVF = 11, - TRB_INVALID_CHANNEL = 12, - TRB_INVALID_PKG_NUMBER = 13, - TRB_STATUS_ERROR = 14, - TRB_INVALID_ADDRESS = 15, - TRB_INVALID_LENGTH = 16, - TRB_ENDPOINT_NOT_REACHED = 17, - TRB_DMA_UNAVAILABLE = 18, - TRB_DMA_TIMEOUT = 19, - TRB_READMEM_INVALID_SIZE = 20, - TRB_HDR_DLEN = 21 + TRB_FIFO_INCOMPLETE_PACKAGE = 7, + TRB_FIFO_INVALID_HEADER = 8, + TRB_FIFO_MISSING_TERM_HEADER = 9, + TRB_FAILED_WAIT_IS_VALID = 10, + TRB_FAILED_WAIT_IS_NOT_VALID = 11, + TRB_USER_BUFFER_OVF = 12, + TRB_INVALID_CHANNEL = 13, + TRB_INVALID_PKG_NUMBER = 14, + TRB_STATUS_ERROR = 15, + TRB_INVALID_ADDRESS = 16, + TRB_INVALID_LENGTH = 17, + TRB_ENDPOINT_NOT_REACHED = 18, + TRB_DMA_UNAVAILABLE = 19, + TRB_DMA_TIMEOUT = 20, + TRB_READMEM_INVALID_SIZE = 21, + TRB_HDR_DLEN = 22, + } TRB_ERROR; extern int trb_errno; diff --git a/libtrbnet/trbnet.c b/libtrbnet/trbnet.c index 7ea9b7b..77ccc4f 100644 --- a/libtrbnet/trbnet.c +++ b/libtrbnet/trbnet.c @@ -399,7 +399,7 @@ static int trb_fifo_read(uint8_t channel, } else { /* Error: invalid buffer content, flush FIFO-BUFFER and exit */ trb_fifo_flush(channel); - trb_errno = TRB_FIFO_BROKEN_PACKAGE; + trb_errno = TRB_FIFO_INCOMPLETE_PACKAGE; return -1; } } else { @@ -409,7 +409,7 @@ static int trb_fifo_read(uint8_t channel, (counter - 1) % 2)) { /* Error: invalid sequence (not 0, 1, .), flush FIFO-BUFFER and exit */ trb_fifo_flush(channel); - trb_errno = TRB_FIFO_BROKEN_PACKAGE; + trb_errno = TRB_FIFO_SEQUENZ; return -1; } } @@ -460,7 +460,7 @@ static int trb_fifo_read(uint8_t channel, if (packageCtr == 0) { if (!((headerType == HEADER_HDR) | (headerType == HEADER_TRM))) { trb_fifo_flush(channel); - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_INVALID_HEADER; return -1; } } @@ -490,7 +490,7 @@ static int trb_fifo_read(uint8_t channel, case HEADER_HDR: if ((packageCtr - endPointCtr * 2) != 0) { trb_fifo_flush(channel); - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_INVALID_HEADER; return -1; } if (dataCtr < dsize) { @@ -505,7 +505,7 @@ static int trb_fifo_read(uint8_t channel, case HEADER_DAT: if ((packageCtr - endPointCtr * 2) != 1) { trb_fifo_flush(channel); - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_INVALID_HEADER; return -1; } if (dataCtr < dsize) { @@ -524,7 +524,7 @@ static int trb_fifo_read(uint8_t channel, default: trb_fifo_flush(channel); - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_INVALID_HEADER; return -1; } @@ -547,7 +547,6 @@ static int trb_fifo_read(uint8_t channel, } else { trb_fifo_flush(channel); trb_errno = TRB_USER_BUFFER_OVF; - fprintf(stderr, "HEADER\n"); return -1; } break; @@ -572,7 +571,7 @@ static int trb_fifo_read(uint8_t channel, default: trb_fifo_flush(channel); - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_INVALID_HEADER; return -1; } } @@ -598,6 +597,7 @@ static int trb_fifo_read(uint8_t channel, case HEADER_TRM: if ((packageCtr > 0) && (dataCtr != len)) { /* Error invalid length */ + trb_fifo_flush(channel); trb_errno = TRB_HDR_DLEN; return -1; } @@ -606,7 +606,7 @@ static int trb_fifo_read(uint8_t channel, case HEADER_HDR: if (packageCtr != 0) { trb_fifo_flush(channel); - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_INVALID_HEADER; return -1; } len = (unsigned int)package.F2; @@ -630,7 +630,7 @@ static int trb_fifo_read(uint8_t channel, default: trb_fifo_flush(channel); - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_INVALID_HEADER; return -1; } } @@ -646,7 +646,7 @@ static int trb_fifo_read(uint8_t channel, case HEADER_HDR: if ((packageCtr - endPointCtr * 3) != 0) { trb_fifo_flush(channel); - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_INVALID_HEADER; return -1; } sourceAddress = (uint32_t)package.F0; @@ -681,7 +681,7 @@ static int trb_fifo_read(uint8_t channel, default: trb_fifo_flush(channel); - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_INVALID_HEADER; return -1; } } @@ -728,7 +728,6 @@ static int trb_fifo_read(uint8_t channel, if (timeout >= MAX_TIME_OUT) { trb_fifo_flush(channel); trb_errno = TRB_FIFO_TIMEOUT; - fprintf(stderr,"timeout\n"); return -1; } } @@ -743,13 +742,13 @@ static int trb_fifo_read(uint8_t channel, if (trb_lazy == 0) { /* Check whether last package is complete */ if ((packageCtr >= 0) && (counter != 5)) { - trb_errno = TRB_FIFO_BROKEN_PACKAGE; + trb_errno = TRB_FIFO_INCOMPLETE_PACKAGE; return -1; } /* Check whether last package is a TERMINATION Package */ if (headerType != HEADER_TRM) { - trb_errno = TRB_FIFO_INVALID_CONTENT; + trb_errno = TRB_FIFO_MISSING_TERM_HEADER; return -1; } @@ -1093,7 +1092,6 @@ int trb_set_address(uint64_t uid, return -1; } - return 0; }