static int hexMode = HEXMODE;
-static const char trbcmd_version[] = "$Revision: 2.45 $";
+static const char trbcmd_version[] = "$Revision: 2.46 $";
#define BACKLOG 10
static uint16_t tcp_port = 55555;
fprintf(STDOUT, " level 1: TRB_Package debugging\n");
fprintf(STDOUT, " level 2: +FIFO debugging\n");
fprintf(STDOUT, " -D FIFO DMA-Mode\n");
- fprintf(STDOUT,
- " -l lazy-mode: skip most consistency-checks of packages\n");
fprintf(STDOUT,
" -H hex-mode: all arguments will be interpreted "
"as hexadecimal-numbers\n");
USER_BUFFER_SIZE = 786432; /* 0xc000 * 4 Byte */
trb_debug = 0;
- trb_lazy = 0;
/* Parse Arguments */
optind = 1;
- while ((opt = getopt(argc, argv, "+hf:n:d:DlHMV")) != -1) {
+ while ((opt = getopt(argc, argv, "+hf:n:d:DHMV")) != -1) {
switch (opt) {
case '?':
usage(basename(argv[0]));
case 'D':
trb_dma = 1;
break;
- case 'l':
- trb_lazy = 1;
- break;
case 'H':
hexMode = 1;
break;
}
}
free(data);
-
+
} else if (strncmp(cmd[0], "rm", CMD_SIZE) == 0) {
/*******************************************/
-const char trbnet_version[] = "$Revision: 2.59 $";
+const char trbnet_version[] = "$Revision: 2.60 $";
#include <stdlib.h>
#include <signal.h>
static const key_t sem_key = 0x545242;
unsigned int trb_debug = 0;
-unsigned int trb_lazy = 0;
unsigned int trb_dma = 0;
FILE* trb_stderr = NULL;
fifoDebugCtr, *tmp);
}
- if ((trb_lazy == 0) &&
- (((*tmp & MASK_FIFO_TYPE) >> SHIFT_FIFO_TYPE) !=
- (counter - 1) % 2)) {
+ if (((*tmp & MASK_FIFO_TYPE) >> SHIFT_FIFO_TYPE) !=
+ (counter - 1) % 2) {
/* Error: invalid sequence (not 0, 1, .), flush FIFO-BUFFER and exit */
fifo_flush(channel);
trb_errno = TRB_FIFO_SEQUENZ;
/* DEBUG INFO */
if (trb_debug > 0) {
TRB_Package_dump(&package);
- fprintf(trb_stderr, "-------------------------------------------------\n");
+ fprintf(trb_stderr,
+ "-------------------------------------------------\n");
}
- if (trb_lazy == 0) {
- /* First package: headerType must be HDR or TRM */
- if (packageCtr == 0) {
- if (!((headerType == HEADER_HDR) || (headerType == HEADER_TRM))) {
- fifo_flush(channel);
- trb_errno = TRB_FIFO_INVALID_HEADER;
- return -1;
- }
+ /* First package: headerType must be HDR or TRM */
+ if (packageCtr == 0) {
+ if (!((headerType == HEADER_HDR) || (headerType == HEADER_TRM))) {
+ fifo_flush(channel);
+ trb_errno = TRB_FIFO_INVALID_HEADER;
+ return -1;
}
-
+
/* Check Header H0 */
if (((package.H0 & MASK_HEADER_REPLY) >> SHIFT_HEADER_REPLY
!= 0x01) ||
}
if (dataCtr < dsize) {
data[dataCtr++] = (uint32_t)package.F0;
+#ifdef TRB_DEBUGGER
+ fprintf(trb_stderr, "D: 0x%04x ", data[dataCtr - 1]);
+#endif
} else {
fifo_flush(channel);
trb_errno = TRB_USER_BUFFER_OVF;
if (dataCtr < dsize) {
data[dataCtr++] = (((uint32_t)package.F1 << 16) |
((uint32_t)package.F2));
+#ifdef TRB_DEBUGGER
+ fprintf(trb_stderr, "0x%08x\n", data[dataCtr - 1]);
+#endif
endPointCtr++;
} else {
fifo_flush(channel);
memLen = 0;
lastHeader = &data[dataCtr];
data[dataCtr++] = (uint32_t)package.F0;
+#ifdef TRB_DEBUGGER
+ fprintf(trb_stderr, "D: H: 0x%04x\n", data[dataCtr - 1]);
+#endif
} else {
fifo_flush(channel);
trb_errno = TRB_USER_BUFFER_OVF;
if (package.F0 == 0x0000) break; /* it a hack, ask Jan */
data[dataCtr++] = (((uint32_t)package.F1 << 16) |
((uint32_t)package.F2));
+#ifdef TRB_DEBUGGER
+ fprintf(trb_stderr,
+ "D: 0x%04x 0x%08x\n", memLen, data[dataCtr - 1]);
+#endif
memLen++;
} else {
fifo_flush(channel);
((uint32_t)package.F1))
: (((uint32_t)package.F2 << 16) |
((uint32_t)package.F3));
+#ifdef TRB_DEBUGGER
+ fprintf(trb_stderr, "D: 0x%08x\n", data[dataCtr - 1]);
+#endif
} else {
fifo_flush(channel);
trb_errno = TRB_USER_BUFFER_OVF;
data[dataCtr++] = (uint32_t)package.F0;
data[dataCtr++] = (uint32_t)sourceAddress;
endPointCtr++;
+#ifdef TRB_DEBUGGER
+ fprintf(trb_stderr, "D: 0x%04x 0x%08x%08x 0x%02x\n",
+ (uint32_t)sourceAddress,
+ uidLow, uidHigh,
+ (uint32_t)package.F0);
+#endif
} else {
fifo_flush(channel);
trb_errno = TRB_USER_BUFFER_OVF;
trb_term.sequence = package.F3;
trb_term.channel = channel;
- if (trb_lazy == 0) {
- /* Check whether last package is complete */
- if ((packageCtr >= 0) && (counter != 5)) {
- trb_errno = TRB_FIFO_INCOMPLETE_PACKAGE;
- return -1;
- }
-
- /* Check whether last package is a TERMINATION Package */
- if (headerType != HEADER_TRM) {
- trb_errno = TRB_FIFO_MISSING_TERM_HEADER;
- return -1;
- }
-
- /* Check StatusBits of TerminationPackage */
- if ((trb_term.status_common == 0) && (trb_term.status_channel == 0)) {
- trb_errno = TRB_ENDPOINT_NOT_REACHED;
- return -1;
- }
-
- if ((trb_term.status_common & 0x007e) != 0) {
- trb_errno = TRB_STATUS_ERROR;
- return -1;
- }
+ /* Check whether last package is complete */
+ if ((packageCtr >= 0) && (counter != 5)) {
+ trb_errno = TRB_FIFO_INCOMPLETE_PACKAGE;
+ return -1;
+ }
- if ((channel == 3) && ((trb_term.status_channel & 0x0002) != 0)) {
- trb_errno = TRB_STATUS_ERROR;
- return -1;
- }
+ /* Check whether last package is a TERMINATION Package */
+ if (headerType != HEADER_TRM) {
+ trb_errno = TRB_FIFO_MISSING_TERM_HEADER;
+ return -1;
+ }
+
+ /* Check StatusBits of TerminationPackage */
+ if ((trb_term.status_common == 0) && (trb_term.status_channel == 0)) {
+ trb_errno = TRB_ENDPOINT_NOT_REACHED;
+ return -1;
+ }
+
+ if ((trb_term.status_common & 0x007e) != 0) {
+ trb_errno = TRB_STATUS_ERROR;
+ return -1;
}
+ if ((channel == 3) && ((trb_term.status_channel & 0x0002) != 0)) {
+ trb_errno = TRB_STATUS_ERROR;
+ return -1;
+ }
+
return dataCtr;
}