]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
Major change in the way data is packed. Each SEB delivers
authormuench <muench>
Wed, 29 Mar 2000 16:00:13 +0000 (16:00 +0000)
committermuench <muench>
Wed, 29 Mar 2000 16:00:13 +0000 (16:00 +0000)
one SE that may (up to now must) contain itself SEs.
EB unpacks one more stage.

hadaq/evtbuild.c
hadaq/hwsoft.c
hadaq/subevt.h

index 23f59afd79c6572ea5c5de52b9e4acde17149595..7f1ae705f2ada047681983956fbec0d5df40a8f9 100644 (file)
@@ -1,4 +1,4 @@
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.9 2000-02-03 09:38:06 muench Stab $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.10 2000-03-29 16:00:13 muench Exp $";
 
 #define _XOPEN_SOURCE
 #include <unistd.h>
@@ -320,11 +320,15 @@ int main(int argc, char *argv[])
 #endif
                                        currTrigNr = SubEvt_trigNr(subEvt);
                                }
-                               if (SubEvt_id(subEvt) == SubEvtId_trigCode) {
-                                       Evt_setId(evt, SubEvt_dataValue(subEvt, 0));
-                               }
                                if (SubEvt_trigNr(subEvt) == currTrigNr) {
-                                       evt = Evt_appendSubEvt(evt, subEvt);
+                                       void *se;
+                                       for (se = SubEvt_data(subEvt); se < SubEvt_end(subEvt); se = SubEvt_next(subEvt, se)) {
+                                               msglog(LOG_DEBUG, "addr: %p subEvt: %s\n", se, SubEvt_2charP(se));
+                                               if (SubEvt_id(se) == SubEvtId_trigCode) {
+                                                       Evt_setId(evt, SubEvt_dataValue(se, 0));
+                                               }
+                                               evt = Evt_appendSubEvt(evt, se);
+                                       }
                                        HadTuQueue_pop(hadTuQueue[i]);
                                        currNrOfSubEvts++;
                                } else if (SubEvt_trigNr(subEvt) < currTrigNr) {
index 07dbc1ac98b24ce54f1368794a717996d084518b..a8870bf903f61435a60a356f206cf1e56eb220f9 100644 (file)
@@ -31,7 +31,7 @@ Hardware *newHardware(void)
        Param *param;
 
        my = allocMem(sizeof(Hardware));
-       my->maxSubEvtSize = SubEvt_hdrSize() + 401 * sizeof(UInt4);
+       my->maxSubEvtSize = 3 * SubEvt_hdrSize() + 1001 * sizeof(UInt4);
 
        param = allocMem(sizeof(Param));
        conParam(param, "param.tcl");
@@ -45,71 +45,95 @@ void deleteHardware(Hardware *my)
        freeMem(my);
 }
 
-void Hardware_waitForTrigger(Hardware *my, void *subEvt)
+void Hardware_waitForTrigger(Hardware *my, void *partEvt)
 {
-       static int nextId = SubEvtId_trigCode;
+#if 0
        struct timespec tS, *t = &tS;
-       static unsigned long trigNr = 0;
-       static UInt1 trigTag = 0;
-
 
-       switch (nextId) {
-       case SubEvtId_trigCode:
-#if 0
-               t->tv_sec = 0;
-               t->tv_nsec = 100000000;
-               nanosleep(t, NULL);
+       t->tv_sec = 0;
+       t->tv_nsec = 100000000;
+       nanosleep(t, NULL);
 #endif
+}
 
-               SubEvt_setSize(subEvt, SubEvt_hdrSize());
-               SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData);
-               SubEvt_setId(subEvt, SubEvtId_trigCode);
-               SubEvt_setTrigNr(subEvt, trigNr << 8 | trigTag);
-               nextId = SubEvtId_test1;
-
-               break;
-       case SubEvtId_test1:
-               SubEvt_setSize(subEvt, SubEvt_hdrSize());
-               SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData);
-               SubEvt_setId(subEvt, SubEvtId_test1);
-               SubEvt_setTrigNr(subEvt, trigNr << 8 | trigTag);
-               trigNr++;
-               trigTag++;
-               nextId = SubEvtId_trigCode;
-
-               break;
-       }
+void readoutTrig(void *subEvt)
+{
+       UInt4 *data;
+       UInt4 *first;
+       static UInt1 trigTag;
+       size_t size;
+
+       SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData);
+
+       data = SubEvt_data(subEvt);
+       first = data;
+
+       *data++ = 0x1;
+
+       SubEvt_setSize(subEvt, (char *)data - (char *)subEvt);
+       SubEvt_setId(subEvt, SubEvtId_trigCode);
+       SubEvt_setTrigNr(subEvt, trigTag);
+       msglog(LOG_DEBUG, "subEvt: %s\n", SubEvt_2charP(subEvt));
+
+       trigTag++;
 }
 
-void Hardware_readout(Hardware *my, void *subEvt)
+void readoutSoft(void *subEvt)
 {
-       UInt4 *data = SubEvt_data(subEvt);
-       UInt4 *first = data;
+       UInt4 *data;
+       UInt4 *first;
+       static UInt1 trigTag;
+       UInt4 id;
        size_t size;
 
-       switch (SubEvt_pureId(subEvt)) {
-       case SubEvtId_trigCode:
-               *data++ = 0x00000001;
-               break;
-       case SubEvtId_test1:
-               *data++ = 0x55aa00FF;
-               *data++ = 0x55aa00FF;
-               *data++ = 0x55aa00FF;
+       SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData);
+
+       data = SubEvt_data(subEvt);
+       first = data;
+
+       *data++ = 0x55aa00FF;
+       *data++ = 0x55aa00FF;
+       *data++ = 0x55aa00FF;
 #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);
+       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;
-       }
 
-       size = SubEvt_size(subEvt) + sizeof(UInt4) * (data - first);
-       if (size > my->maxSubEvtSize) {
-               SubEvt_setId(subEvt, SubEvt_id(subEvt) | 0x80000000);
-               size = my->maxSubEvtSize;
+       size = (char *)data - (char *)subEvt;
+       id = SubEvtId_test1;
+       if (size > 1000) {
+               size = 1000;
+               id |= 0x80000000;
        }
        SubEvt_setSize(subEvt, size);
+       SubEvt_setId(subEvt, id);
+       SubEvt_setTrigNr(subEvt, trigTag);
+       msglog(LOG_DEBUG, "subEvt: %s\n", SubEvt_2charP(subEvt));
+
+       trigTag++;
+}
+
+void Hardware_readout(Hardware *my, void *partEvt)
+{
+       void *subEvt = SubEvt_data(partEvt);
+       static UInt4 trigNr;
+
+       SubEvt_setDecoding(partEvt, SubEvtDecoding_SubEvts);
+
+       readoutTrig(subEvt);
+       subEvt = SubEvt_next(partEvt, subEvt);
+
+       readoutSoft(subEvt);
+       subEvt = SubEvt_next(partEvt, subEvt);
+
+       SubEvt_setSize(partEvt, (char *)subEvt - (char *)partEvt);
+       SubEvt_setId(partEvt, 0);
+       SubEvt_setTrigNr(partEvt, trigNr);
+       msglog(LOG_DEBUG, "partEvt: %s\n", SubEvt_2charP(partEvt));
+
+       trigNr++;
 }
index 40b6b64da0b0f7afe1108a4166bb1aea4f4b9021..875742803ce3f0eb32d9786072452c6c050c8e21 100644 (file)
@@ -27,7 +27,8 @@ enum SubEvtDecoding {
   SubEvtDecoding_8bitData = 1,
   SubEvtDecoding_16bitData = (1 << 16) | 1,
   SubEvtDecoding_32bitData = (2 << 16) | 1,
-  SubEvtDecoding_text = 2
+  SubEvtDecoding_text = 2,
+  SubEvtDecoding_SubEvts = (3 << 16) | 3
 };
 
 #define SubEvt_hdr HadTu_hdr