From 007c0f3b3102f69ede5faed2dffdcfa23d67ed1a Mon Sep 17 00:00:00 2001 From: hadaq Date: Wed, 9 Jul 2003 16:04:57 +0000 Subject: [PATCH] debug tof working now, mt --- hadaq/hwtip.c | 115 +++++++++++++++++++++++++++++--------------------- 1 file changed, 67 insertions(+), 48 deletions(-) diff --git a/hadaq/hwtip.c b/hadaq/hwtip.c index dfb013e..a9b1a15 100644 --- a/hadaq/hwtip.c +++ b/hadaq/hwtip.c @@ -1,4 +1,4 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtip.c,v 1.33 2003-07-08 16:09:48 hadaq Exp $"; +static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtip.c,v 1.34 2003-07-09 16:04:57 hadaq Exp $"; #include #include @@ -118,6 +118,7 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt) #define TDC_DATA_STATE (3) #define TDC_TRAILER_STATE (4) #define LATCH_STATE (5) +#define IGNORE_ALL_STATE (6) uint32_t *data = (uint32_t *) subEvt; @@ -141,6 +142,7 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt) #endif char str[200], buff[200]; unsigned long lastGeo = 0, currentGeo; + unsigned long lastCrate = 0; header = LVme_getL(my->lvme, currAddr); size = header & 0xfff; @@ -169,40 +171,45 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt) tempArray[arrayCounter++] = dataWord; #endif - switch (presentState) { - case SUBHEADER_STATE: - statusWord = ((dataWord >> 24) & 0x6); - if (statusWord == 2) { - } - break; - - case TDC_HEADER_STATE: - - - break; - - case TDC_DATA_STATE: - - - break; + statusWord = ((dataWord >> 24) & 0x6); - case TDC_TRAILER_STATE: - break; + if (presentState == TDC_DATA_STATE) { + if (statusWord == 4) { + /* Trailer */ + presentState = TDC_TRAILER_STATE; + } + } - case LATCH_STATE: + if (presentState == TDC_HEADER_STATE) { + if (statusWord == 0) { + /* Ingo TIP Header */ + presentState = SUBHEADER_STATE; + } + } - break; + switch (presentState) { case SUBHEADER_STATE: + presentState = IGNORE_ALL_STATE; break; - } - - statusWord = ((dataWord >> 24) & 0x6); - if (statusWord == 2) { - /* Header */ + case TDC_HEADER_STATE: tdcCounter++; crateNumber = ((dataWord >> 16) & 0xff); + + if (lastCrate == 0) { + lastCrate = crateNumber; + } + + if (lastCrate != crateNumber) { + /* reset last Geo, if change of crate */ + lastGeo = 0; + } + + if (statusWord != 2) { + syslog(LOG_ERR, "status word of tdc not 2, for header it should be 2, header: %.8x, data: %.8x", header, dataWord); + errorFlag = 1; + } if (foundCBLTHeaderFlag == 1) { syslog(LOG_ERR, "header: %.8x, at least two headers came without a trailer, data: %.8x", header, dataWord); errorFlag = 1; @@ -210,33 +217,27 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt) currentGeo = (dataWord >> 27) & 0x1f; -#if 0 if (lastGeo == 0) { lastGeo = currentGeo - 1; } - if (lastGeo + 1 != currentGeo) { + if (lastGeo >= currentGeo) { 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 + foundCBLTHeaderFlag = 1; + presentState = TDC_DATA_STATE; + break; - /* 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 + case TDC_DATA_STATE: + /* data word, nothing to do..., but check for trailer */ + break; + + case TDC_TRAILER_STATE: tdcEventCounter = dataWord & 0xffffff; foundCBLTTrailerFlag = 1; if (foundCBLTTrailerFlag == 1 && foundCBLTHeaderFlag == 0) { @@ -252,23 +253,41 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt) header, crateNumber, tdcCounter, trigTag, tdcEventCounter, dataWord); errorFlag = 1; } -#endif + foundCBLTTrailerFlag = 0; foundCBLTHeaderFlag = 0; - } else if (statusWord == 0) { - /* data word, nothing to do... */ - } else { + + presentState = TDC_HEADER_STATE; + break; + + case LATCH_STATE: + + break; + + case IGNORE_ALL_STATE: + break; + + } /* End switch */ + + + + /* TEST COUNTER */ #if 0 - syslog(LOG_ERR, "status word of tdc not 0,2 or 4, header: %.8x, data: %.8x", header, dataWord); + if ((dataWord & 0xf) != 0) { + syslog(LOG_ERR, "TEST: %.8x != 1", dataWord); errorFlag = 1; - + } #endif - } +#if 0 +#endif } + + + #ifdef BUFFER_PRINTOUT_ENABLED if (errorFlag) { str[0] = 0; -- 2.43.0