]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
start of unpacker, mt
authorhadaq <hadaq>
Tue, 8 Jul 2003 14:40:28 +0000 (14:40 +0000)
committerhadaq <hadaq>
Tue, 8 Jul 2003 14:40:28 +0000 (14:40 +0000)
hadaq/hwtip.c

index 15008f1ccaecc1c2579127891cee4921fa3b8761..7c67608363d91ab7cf43c0fde31a332d20ff43ab 100644 (file)
@@ -1,4 +1,4 @@
-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>
@@ -51,8 +51,7 @@ int conHwTip(HwTip *my, const char *name, const Param *param)
 
        Param_getInt(param, my->name, "cardbase", &paramWasFound, &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);
@@ -108,8 +107,19 @@ void HwTip_requestBuffer(HwTip *my)
        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;
@@ -119,10 +129,13 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt)
        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
@@ -142,6 +155,10 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt)
        }
        trigTag = ((header >> 16) & 0xff);
 
+       calEvtFlag = ((header >> 24) & 0xf) != 0x9;
+
+
+       subEvtHeaderFlag = 1;
        /* copy one sub evt from RC to memory */
        while (--size) {
 
@@ -151,16 +168,18 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt)
 #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
@@ -168,28 +187,40 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt)
                                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;
                        }
@@ -202,7 +233,9 @@ int HwTip_readSubEvt(HwTip *my, void *subEvt)
 #if 0
                        syslog(LOG_ERR, "status word of tdc not 0,2 or 4, header: %.8x, data: %.8x", header, dataWord);
                        errorFlag = 1;
+
 #endif
+
                }