-const char trbnet_version[] = "$Revision: 2.85 $";
+const char trbnet_version[] = "$Revision: 2.86 $";
#include <stdlib.h>
#include <signal.h>
/* Read FIFO-Buffer, copy to User-Buffer */
while ((*tmp & MASK_FIFO_VALID) != 0) {
+ uint32_t* lastHeader = NULL; /* used by FIFO_MODE_REG_READ_MEM Mode */
+ uint32_t memLen = 0; /* used by FIFO_MODE_REG_READ_MEM
+ and FIFO_MODE_IPU_DATA Mode */
fifoDebugCtr++;
if (((*tmp & MASK_FIFO_TYPE) >> SHIFT_FIFO_TYPE) == FIFO_TYPE_IS_HEADER) {
}
if (((*tmp & MASK_FIFO_TYPE) >> SHIFT_FIFO_TYPE) !=
- (counter - 1) % 2) {
- /* Error: invalid sequence (not 0, 1, .), flush FIFO-BUFFER and exit */
+ (counter - 1) % 2) {
+ /* Error: invalid sequence (not 0, 1, .), flush FIFO-BUFFER, exit */
fifo_flush(channel);
trb_errno = TRB_FIFO_SEQUENZ;
return -1;
case FIFO_MODE_REG_READ_MEM:
{
- static uint32_t* lastHeader = NULL;
- static uint32_t memLen = 0;
-
switch (headerType) {
case HEADER_HDR:
if (dataCtr < dsize) {
case HEADER_TRM:
if (lastHeader != NULL) {
*lastHeader |= (memLen << 16);
+ lastHeader = NULL;
}
break;
case FIFO_MODE_REGTIME_READ_MEM:
{
- static uint32_t* lastHeader = NULL;
- static uint32_t memLen = 0;
-
switch (headerType) {
case HEADER_HDR:
if (dataCtr < dsize) {
case HEADER_TRM:
if (lastHeader != NULL) {
*lastHeader |= (memLen << 16);
+ lastHeader = NULL;
}
break;
case FIFO_MODE_IPU_DATA:
{
- static unsigned int len = 0;
unsigned int i;
switch (headerType) {
case HEADER_TRM:
- if ((packageCtr > 0) && (dataCtr != len)) {
+ if ((packageCtr > 0) && (dataCtr != memLen)) {
/* Error invalid length */
fifo_flush(channel);
trb_errno = TRB_HDR_DLEN;
trb_errno = TRB_FIFO_INVALID_HEADER;
return -1;
}
- len = (unsigned int)package.F2;
+ memLen = (unsigned int)package.F2;
break;
case HEADER_DAT:
- for (i = 0; (i < 2) && (dataCtr < len); i++) {
+ for (i = 0; (i < 2) && (dataCtr < memLen); i++) {
if (dataCtr < dsize) {
data[dataCtr++] = (i == 0)
? (((uint32_t)package.F0 << 16) |
usleep(1000);
write32_to_FPGA(0x10, 0x8000);
- sleep(10);
+ sleep(8);
com_reset();