-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtip.c,v 1.31 2003-05-14 13:54:44 muench Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtip.c,v 1.32 2003-07-08 14:40:28 hadaq Exp $";
#include <assert.h>
#include <string.h>
Param_getInt(param, my->name, "cardbase", ¶mWasFound, &cardBase);
if (!paramWasFound) {
- syslog(LOG_WARNING,
- "Parameter %s(%s) not found, default = 0", my->name, "cardbase");
+ syslog(LOG_WARNING, "Parameter %s(%s) not found, default = 0", my->name, "cardbase");
cardBase = 0;
}
syslog(LOG_INFO, "conc cardbase %.8x", cardBase);
my->currAddr = my->fifo + 0x4;
}
+
+
+
int HwTip_readSubEvt(HwTip *my, void *subEvt)
{
+
+#define SUBHEADER_STATE (1)
+#define TDC_HEADER_STATE (2)
+#define TDC_DATA_STATE (3)
+#define TDC_TRAILER_STATE (4)
+#define LATCH_STATE (5)
+
+
uint32_t *data = (uint32_t *) subEvt;
unsigned long currAddr = my->currAddr;
unsigned long header;
int foundCBLTTrailerFlag = 0;
int foundCBLTHeaderFlag = 0;
int errorFlag = 0;
+ int calEvtFlag = 0;
unsigned long dataWord;
unsigned long tdcCounter = 0;
- unsigned long tdcEventCounter, trigTag, evtC;
+ unsigned long tdcEventCounter, trigTag, evtC, subEvtHeader, subEvtHeaderFlag;
int arrayCounter = 0, i;
+ unsigned long presentState;
+
#ifdef BUFFER_PRINTOUT_ENABLED
unsigned long tempArray[500];
#endif
}
trigTag = ((header >> 16) & 0xff);
+ calEvtFlag = ((header >> 24) & 0xf) != 0x9;
+
+
+ subEvtHeaderFlag = 1;
/* copy one sub evt from RC to memory */
while (--size) {
#ifdef BUFFER_PRINTOUT_ENABLED
tempArray[arrayCounter++] = dataWord;
#endif
- statusWord = ((dataWord >> 24) & 0x7);
+
+
+ statusWord = ((dataWord >> 24) & 0x6);
if (statusWord == 2) {
/* Header */
tdcCounter++;
crateNumber = ((dataWord >> 16) & 0xff);
if (foundCBLTHeaderFlag == 1) {
- syslog(LOG_ERR, "header: %.8x, at least two headers came without a trailer, data: %.8x",
- header, dataWord);
+ syslog(LOG_ERR, "header: %.8x, at least two headers came without a trailer, data: %.8x", header, dataWord);
errorFlag = 1;
}
+
currentGeo = (dataWord >> 27) & 0x1f;
#if 0
lastGeo = currentGeo - 1;
}
if (lastGeo + 1 != currentGeo) {
- syslog(LOG_ERR, "header: %.8x, Geo not incremental, crate: %d data: %.8x, lastGeo %d, currentGeo %d",
+ syslog(LOG_ERR,
+ "header: %.8x, Geo not incremental, crate: %d data: %.8x, lastGeo %d, currentGeo %d",
header, crateNumber, dataWord, lastGeo, currentGeo);
errorFlag = 1;
}
lastGeo = currentGeo;
#endif
+
+
+ /* TEST COUNTER */
+#if 0
+ if ((dataWord & 0xf) != 0) {
+ syslog(LOG_ERR, "TEST: %.8x != 1", dataWord);
+ errorFlag = 1;
+ }
+#endif
+
foundCBLTHeaderFlag = 1;
} else if (statusWord == 4) {
/* Trailer */
+#if 0
tdcEventCounter = dataWord & 0xffffff;
foundCBLTTrailerFlag = 1;
if (foundCBLTTrailerFlag == 1 && foundCBLTHeaderFlag == 0) {
- syslog(LOG_ERR, "header: %.8x, trailer came before header! data: %.8x",
- header, dataWord);
+ syslog(LOG_ERR, "header: %.8x, trailer came before header! data: %.8x", header, dataWord);
errorFlag = 1;
}
evtC = (tdcEventCounter & 0xff);
-#if 1
+
if ((tdcEventCounter & 0xff) != trigTag) {
/* if( (max(evtC, trigTag) - min(evtC, trigTag) >=2) && (max(evtC, trigTag) - min(evtC, trigTag) <= 0xfe )) { */
- syslog(LOG_ERR, "header: %.8x, crate: %d, tdc_num: %d, tag (%.8x) != EvtCounter (%.8x), dataWord: %.8x ",
+ syslog(LOG_ERR,
+ "header: %.8x, crate: %d, tdc_num: %d, tag (%.8x) != EvtCounter (%.8x), dataWord: %.8x ",
header, crateNumber, tdcCounter, trigTag, tdcEventCounter, dataWord);
errorFlag = 1;
}
#if 0
syslog(LOG_ERR, "status word of tdc not 0,2 or 4, header: %.8x, data: %.8x", header, dataWord);
errorFlag = 1;
+
#endif
+
}