]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
error bit in subEvtId is honored (and set in hwsoft)
authorhades <hades>
Wed, 17 Nov 1999 14:06:47 +0000 (14:06 +0000)
committerhades <hades>
Wed, 17 Nov 1999 14:06:47 +0000 (14:06 +0000)
hadaq/hwsoft.c
hadaq/hwtof.c
hadaq/readout.c
hadaq/subevt.c
hadaq/subevt.h

index f320edc53ebb41476662e9902341e809b71fb150..07dbc1ac98b24ce54f1368794a717996d084518b 100644 (file)
@@ -85,8 +85,9 @@ void Hardware_readout(Hardware *my, void *subEvt)
 {
        UInt4 *data = SubEvt_data(subEvt);
        UInt4 *first = data;
+       size_t size;
 
-       switch (SubEvt_id(subEvt)) {
+       switch (SubEvt_pureId(subEvt)) {
        case SubEvtId_trigCode:
                *data++ = 0x00000001;
                break;
@@ -94,14 +95,21 @@ void Hardware_readout(Hardware *my, void *subEvt)
                *data++ = 0x55aa00FF;
                *data++ = 0x55aa00FF;
                *data++ = 0x55aa00FF;
-#if 0
-               data += (int) ((10000.0 * rand()) / RAND_MAX);
-               data += (int) ((10000.0 * rand()) / RAND_MAX);
-               data += (int) ((10000.0 * rand()) / RAND_MAX);
-               data += (int) ((10000.0 * rand()) / RAND_MAX);
+#if 1
+               data += (int) ((1000.0 * rand()) / RAND_MAX);
+               data += (int) ((1000.0 * rand()) / RAND_MAX);
+               data += (int) ((1000.0 * rand()) / RAND_MAX);
+               data += (int) ((1000.0 * rand()) / RAND_MAX);
+               data += (int) ((1000.0 * rand()) / RAND_MAX);
+               data += (int) ((1000.0 * rand()) / RAND_MAX);
 #endif
                break;
        }
 
-       SubEvt_setSize(subEvt, SubEvt_size(subEvt) + sizeof(UInt4) * (data - first));
+       size = SubEvt_size(subEvt) + sizeof(UInt4) * (data - first);
+       if (size > my->maxSubEvtSize) {
+               SubEvt_setId(subEvt, SubEvt_id(subEvt) | 0x80000000);
+               size = my->maxSubEvtSize;
+       }
+       SubEvt_setSize(subEvt, size);
 }
index 5074106136fd537c130773e73d45aee4d334a08f..4ee1d4fdb120533f46890362b109d994e1b908e9 100644 (file)
@@ -1,4 +1,4 @@
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtof.c,v 1.7 1999-11-01 08:33:00 muench Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtof.c,v 1.8 1999-11-17 14:06:47 hades Exp $";
 
 #define _POSIX_C_SOURCE 199309L
 #include <unistd.h>
@@ -237,7 +237,7 @@ void Hardware_readout(Hardware *my, void *subEvt)
        HwV775 **v775 = ((Modules *) my->specific)->v775;
        HwV878 **v878 = ((Modules *) my->specific)->v878;
 
-       switch (SubEvt_id(subEvt)) {
+       switch (SubEvt_pureId(subEvt)) {
        case SubEvtId_trigCode:
                readoutDummy(subEvt);
                break;
index 0008eef8a08063b963b531d897460167aa9639e4..b0c6b738c464dc0363585bb6081afa715d8e9825 100644 (file)
@@ -1,4 +1,4 @@
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.2 1999-10-06 17:05:08 muench Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.3 1999-11-17 14:06:47 hades Exp $";
 
 #define _POSIX_C_SOURCE 199309L
 #include <unistd.h>
@@ -43,6 +43,7 @@ void main(int argc, char *argv[])
        size_t queueSize;
        unsigned long *trigAccepted;
        unsigned long *subevtsRead;
+       unsigned long *subevtsDataErr;
 
        isStandalone = 1;
        outPath = "subevtqueue";
@@ -86,6 +87,7 @@ void main(int argc, char *argv[])
        }
        trigAccepted = Worker_addStatistic(worker, "trigAccepted");
        subevtsRead = Worker_addStatistic(worker, "subevtsRead");
+       subevtsDataErr = Worker_addStatistic(worker, "subevtsDataErr");
 
        Worker_initEnd(worker);
 
@@ -109,6 +111,9 @@ void main(int argc, char *argv[])
 
                        Hardware_readout(hw, subEvt);
                        (*subevtsRead)++;
+                       if (SubEvt_dataError(subEvt)) {
+                               (*subevtsDataErr)++;
+                       }
                        (*trigAccepted) = SubEvt_trigNr(subEvt) >> 8;
 #ifndef NDEBUG
                        msglog(LOG_DEBUG, "hadTuQueue: %p = subEvt: %s\n", subEvt, SubEvt_2charP(subEvt));
index 1d3c059e071dce0cb8df9dfaea406df978cfcd10..cba28782b43182e6d9bcb96951eaab4cce3ee79f 100644 (file)
@@ -1,4 +1,4 @@
-static char rcsId[] = "$Id: subevt.c,v 6.2 1999-09-04 15:39:25 hades Exp $";
+static char rcsId[] = "$Id: subevt.c,v 6.3 1999-11-17 14:06:47 hades Stab $";
 
 #include <stdlib.h>
 #include <errno.h>
@@ -70,6 +70,16 @@ UInt4 SubEvt_id(const void *my)
        return SubEvt_hdrValue(my, SubEvtIdx_id);
 }
 
+UInt4 SubEvt_pureId(const void *my)
+{
+       return SubEvt_hdrValue(my, SubEvtIdx_id) & 0x7fffffffU;
+}
+
+int SubEvt_dataError(const void *my)
+{
+       return (SubEvt_hdrValue(my, SubEvtIdx_id) & 0x80000000) != 0;
+}
+
 void SubEvt_setId(void *my, UInt4 id)
 {
        SubEvt_setHdrValue(my, SubEvtIdx_id, id);
index 67d4a57ac25227c1bdcb932971825fb2a82e86d0..04ff92e0547caeb19dc3e87d444bb6e71aea9de2 100644 (file)
@@ -51,6 +51,8 @@ UInt4 SubEvt_dataValue(const void *my, unsigned idx);
 char *SubEvt_2charP(const void *my);
 
 UInt4 SubEvt_id(const void *my);
+UInt4 SubEvt_pureId(const void *my);
+int SubEvt_dataError(const void *my);
 void SubEvt_setId(void *my, UInt4 id);
 UInt4 SubEvt_trigNr(const void *my);
 void SubEvt_setTrigNr(void *my, UInt4 trigNr);