"FIFO Incomplete Package",
"FIFO Invalid Header-Type",
"FIFO Termination-Package missing",
+
"FAILED WAIT_IS_VALID",
"FAILED WAIT_IS_NOT_VALID",
"User-Buffer Overflow",
"Invalid Data-Buffer Length",
"Endpoint not reached",
"DMA not available (check whether module 'can_module.ko' is loaded)",
+
"DMA-Timeout",
"ReadMem invalid size",
"Invalid data-length give by Header",
"FIFO Shared Memory Error",
"Termination Status Warning",
"RPC Error",
- "Pexor DMA Error, Kernel fatal, call SysAdmin",
- "Pexor Device Error ioctl call, Kernel Fatal, call SysAdmin",
+ "Pexor DATA Error",
+ "Pexor Device Error ioctl call, Driver Error",
+
"Pexor Device Error ioctl call, TRBNet Timeout",
"Pexor Device Error ioctl call, DMA Polling Timeout",
"Pexor Device Error ioctl call, Out of DMA buffers",
- "Pexor Device Error ioctl call, Invalid DMA Size"
+ "Pexor Device Error ioctl call, Invalid DMA Size",
+ "Pexor Device Error ioctl call, Lost Credential(s)",
+ "Pexor Device Error ioctl call, FIFO Transfer Error"
};
- if (trberrno < 34) {
+ if (trberrno < 36) {
return errorstring[trberrno];
} else {
return "Unknown Error";
TRB_FIFO_SHARED_MEM = 25,
TRB_STATUS_WARNING = 26,
TRB_RPC_ERROR = 27,
- TRB_PEXOR_DMA_ERROR = 28,
+ TRB_PEXOR_DATA_ERROR = 28,
TRB_PEXOR_DEVICE_ERROR = 29,
TRB_PEXOR_DEVICE_TRB_TIMEOUT = 30,
TRB_PEXOR_DEVICE_POLLING_TIMEOUT = 31,
TRB_PEXOR_DEVICE_DMA_EMPTY = 32,
- TRB_PEXOR_DEVICE_INVALID_DMA_SIZE = 33
+ TRB_PEXOR_DEVICE_INVALID_DMA_SIZE = 33,
+ TRB_PEXOR_DEVICE_LOST_CREDENTIAL = 34,
+ TRB_PEXOR_DEVICE_FIFO_TRANSFER = 35
} TRB_ERROR;
/* last TRBNet-TermPackage */
-const char trbnet_version[] = "$Revision: 4.13 $ Local";
+const char trbnet_version[] = "$Revision: 4.14 $ Local";
#include <stdlib.h>
#include <signal.h>
#else /* PEXOR */
-static int pexor_to_trb_error(int error)
+static int pexor_to_trb_error()
{
- switch (error) {
- case -129:
+ switch (errno) {
+ case 200:
return TRB_PEXOR_DEVICE_ERROR;
break;
- case -130:
+ case 201:
return TRB_PEXOR_DEVICE_TRB_TIMEOUT;
break;
- case -131:
+ case 202:
return TRB_PEXOR_DEVICE_POLLING_TIMEOUT;
break;
- case -132:
+ case 203:
return TRB_PEXOR_DEVICE_DMA_EMPTY;
break;
- case -133:
+ case 204:
return TRB_PEXOR_DEVICE_INVALID_DMA_SIZE;
break;
+
+ case 205:
+ return TRB_PEXOR_DEVICE_LOST_CREDENTIAL;
+ break;
+
+ case 206:
+ return TRB_PEXOR_DEVICE_FIFO_TRANSFER;
+ break;
}
return TRB_PEXOR_DEVICE_ERROR;
status = ioctl(pexorFileHandle, PEXOR_IOC_WRITE_REGISTER, &descriptor);
if(status == -1) {
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
status = ioctl(pexorFileHandle, PEXOR_IOC_READ_REGISTER, &descriptor);
if(status == -1) {
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
do {
read32_from_FPGA(fifoAddress, &tmp);
} while (((tmp & MASK_FIFO_VALID) == 0) &&
- (++timeout < 10/*MAX_TIMEOUT*/));
+ (++timeout < 1000));
/* DEBUG INFO */
if ((trb_debug > 1) && ((tmp & MASK_FIFO_VALID) != 0)) {
fprintf(stderr, "FLUSH_FIFO_%03d: 0x%08x\n", counter, tmp);
com_reset_FPGA();
#else
/* First try to resolve it by flushing the fifo */
+ if (trb_debug > 0) {
+ fprintf(stderr,"trb_init_transfer: flushing fifo because of TX Busy\n");
+ }
fifo_flush(channel);
#endif
/* Try again */
#ifdef PEXOR
if (dataBufferSize == 0) {
- trb_errno = TRB_PEXOR_DMA_ERROR;
+ trb_errno = TRB_PEXOR_DATA_ERROR;
return -1;
}
if (read(pexorFileHandle,
(void*)dataBuffer, dataBufferSize * 4) != dataBufferSize * 4) {
- trb_errno = TRB_PEXOR_DMA_ERROR;
+ trb_errno = TRB_PEXOR_DATA_ERROR;
return -1;
}
#else
#ifdef PEXOR
if (tmp - dataBuffer >= dataBufferSize) {
- trb_errno = TRB_PEXOR_DMA_ERROR;
+ trb_errno = TRB_PEXOR_DATA_ERROR;
return -1;
}
tmp++;
}
/* DEBUG INFO */
- if (trb_debug > 1) {
+ if (trb_debug > 0) {
fprintf(stderr, "Flushing FIFO of channel# %d\n", channel);
}
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
if (write(pexorFileHandle,
(void*)(data + ctr), len * 4) != len * 4) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;
&pexorDescriptor);
if (status < 0) {
unlockPorts(0);
- trb_errno = pexor_to_trb_error(status);
+ trb_errno = pexor_to_trb_error();
return -1;
}
dataBufferSize = status;