#include "trberror.h"
/* Error Handling */
-#define NUM_ERRORS 40
+#define NUM_ERRORS 41
int trb_errno = TRB_NONE;
TRB_TERM trb_term = {0, 0, 0, 0};
"Command is not supported by TRB3",
"TRB3 Socket Error",
"TRB3 Socket Timeout",
- "TRB3 incomplete UDP Package, data > 64K"
+ "TRB3 incomplete UDP Package, data > 64K",
+ "TRB3 data buffer empty after UDP receive"
};
if (trberrno < NUM_ERRORS) {
TRB_TRB3_CMD_NOT_SUPPORTED = 36,
TRB_TRB3_SOCKET_ERROR = 37,
TRB_TRB3_SOCKET_TIMEOUT = 38,
- TRB_TRB3_INCOMPLETE_UDP = 39
+ TRB_TRB3_INCOMPLETE_UDP = 39,
+ TRB_TRB3_DATA_ERROR = 40
} TRB_ERROR;
/* last TRBNet-TermPackage */
fd_set fds; /* used by select call */
int status;
int i;
-
+
+ dataBufferSize = 0;
+
/* GetData */
if (trb_debug > 2) {
fprintf(stderr, "Wait UDP Data\n");
/* GetData */
status = getUDPPackage();
if (status > 0) break; /* Success */
- if (trb_errno == TRB_TRB3_SOCKET_ERROR) break; /* UDP Error */
+ if (trb_errno == TRB_TRB3_SOCKET_ERROR) return -1; /* UDP Error */
/* UDP Timeout, resend request */
timeoutCtr++;
FIFO_MODE_SET_ADDRESS
};
-int trb_fifo_read(uint8_t channel,
+static int trb_fifo_read(uint8_t channel,
int mode,
uint32_t data[],
unsigned int dsize)
}
#else
if (dataBufferSize == 0) {
+ #ifdef PEXOR
trb_errno = TRB_PEXOR_DATA_ERROR;
+ #else
+ trb_errno = TRB_TRB3_DATA_ERROR;
+ #endif
return -1;
}
-#ifdef PEXOR
+
+ #ifdef PEXOR
if (read(pexorFileHandle,
(void*)dataBuffer, dataBufferSize * 4) != dataBufferSize * 4) {
trb_errno = TRB_PEXOR_DATA_ERROR;
return -1;
}
+ #endif
#endif
-#endif
+
#ifndef TRB3
while ((*tmp & MASK_FIFO_VALID) != 0) {
#else