]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
debug tof working now, mt
authorhadaq <hadaq>
Wed, 9 Jul 2003 16:04:57 +0000 (16:04 +0000)
committerhadaq <hadaq>
Wed, 9 Jul 2003 16:04:57 +0000 (16:04 +0000)
hadaq/hwtip.c

index dfb013e5e66a31d7f1485a48061113f3734ce2d6..a9b1a15d03317d0cf408ab7e4cdb5200a297ac85 100644 (file)
@@ -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 <assert.h>
 #include <string.h>
@@ -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;