]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
*** empty log message ***
authorhades <hades>
Fri, 19 Nov 1999 15:58:07 +0000 (15:58 +0000)
committerhades <hades>
Fri, 19 Nov 1999 15:58:07 +0000 (15:58 +0000)
hadaq/hadaq.tcl
hadaq/hardware.h
hadaq/hwsoft.c
hadaq/readout.c
hadaq/subevt.h

index 97d558b02e7b5ce136a4b6aee91381f04d281570..58b4df8232a2e5f81875606ddfe4ee9278f041d2 100644 (file)
@@ -273,7 +273,7 @@ proc viewStat {top title statList} {
                frame .$top.$name
                pack .$top.$name -side top
                label .$top.$name.lbl -text $name
-               text .$top.$name.txt -width 35 -height 7
+               text .$top.$name.txt -width 40 -height 7
                pack .$top.$name.lbl .$top.$name.txt -side top
        }
 }
index 672d42ef949149acdc623505c47feca7a4192263..4ad3b448eaac8902d7a28c428b6bb7e4e8b496ee 100644 (file)
@@ -6,8 +6,9 @@ typedef struct HardwareS Hardware;
 Hardware *newHardware(void);
 void deleteHardware(Hardware * my);
 int Hardware_inSpill(const Hardware * my);
-size_t Hardware_maxSubEvtSize(const Hardware * my);
-void Hardware_waitForTrigger(Hardware * my, void *subEvt);
-void Hardware_readout(Hardware * my, void *subEvt);
+UInt4 Hardware_subEvtId(const Hardware * my, int i);
+size_t Hardware_maxSubEvtSize(const Hardware * my, int i);
+void Hardware_waitForTrigger(Hardware * my);
+void Hardware_readout(Hardware * my, int i, void *subEvt);
 
 #endif
index 07dbc1ac98b24ce54f1368794a717996d084518b..f155402fd66659bc71a83340c3732e25ec52314e 100644 (file)
@@ -3,22 +3,36 @@
 #include <unistd.h>
 
 #include <sys/time.h>
+#include <hadesstd.h>
+
 
+#include "hardware.h"
 #include "subevt.h"
 #include "param.h"
 
+#define NSUBEVTS 2
+
 struct HardwareS {
-       size_t maxSubEvtSize;
+       size_t maxSubEvtSizes[NSUBEVTS];
+       UInt4 subEvtIds[NSUBEVTS];
 };
 
-#include "hardware.h"
-
-size_t Hardware_maxSubEvtSize(const Hardware *my)
+size_t Hardware_maxSubEvtSize(const Hardware *my, int i)
 {
-       return my->maxSubEvtSize;
+       return my->maxSubEvtSizes[i];
 }
 
-#include <hadesstd.h>
+UInt4 Hardware_subEvtId(const Hardware *my, int i)
+{
+       UInt4 retVal;
+
+       if (i >= NSUBEVTS) {
+               retVal = SubEvtId_invalid;
+       } else {
+               retVal =  my->subEvtIds[i];
+       }
+       return retVal;
+}
 
 int Hardware_inSpill(const Hardware *my)
 {
@@ -31,7 +45,10 @@ Hardware *newHardware(void)
        Param *param;
 
        my = allocMem(sizeof(Hardware));
-       my->maxSubEvtSize = SubEvt_hdrSize() + 401 * sizeof(UInt4);
+       my->subEvtIds[0] = SubEvtId_trigCode;
+       my->maxSubEvtSizes[0] = SubEvt_hdrSize() + 1 * sizeof(UInt4);
+       my->subEvtIds[1] = SubEvtId_test1;
+       my->maxSubEvtSizes[1] = SubEvt_hdrSize() + 401 * sizeof(UInt4);
 
        param = allocMem(sizeof(Param));
        conParam(param, "param.tcl");
@@ -45,71 +62,56 @@ void deleteHardware(Hardware *my)
        freeMem(my);
 }
 
-void Hardware_waitForTrigger(Hardware *my, void *subEvt)
+void Hardware_waitForTrigger(Hardware *my)
 {
-       static int nextId = SubEvtId_trigCode;
        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);
+#if 1
+       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 Hardware_readout(Hardware *my, void *subEvt)
+void Hardware_readout(Hardware *my, int i, void *subEvt)
 {
        UInt4 *data = SubEvt_data(subEvt);
        UInt4 *first = data;
+       static UInt1 trigTag = 0;
        size_t size;
 
-       switch (SubEvt_pureId(subEvt)) {
+       switch (my->subEvtIds[i]) {
        case SubEvtId_trigCode:
+               SubEvt_setSize(subEvt, SubEvt_hdrSize());
+               SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData);
+               SubEvt_setId(subEvt, SubEvtId_trigCode);
+               SubEvt_setTrigNr(subEvt, trigTag);
                *data++ = 0x00000001;
                break;
        case SubEvtId_test1:
+               SubEvt_setSize(subEvt, SubEvt_hdrSize());
+               SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData);
+               SubEvt_setId(subEvt, SubEvtId_test1);
+               SubEvt_setTrigNr(subEvt, trigTag);
+
                *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) ((100.0 * rand()) / RAND_MAX);
+               data += (int) ((100.0 * rand()) / RAND_MAX);
+               data += (int) ((100.0 * rand()) / RAND_MAX);
+               data += (int) ((100.0 * rand()) / RAND_MAX);
+               data += (int) ((100.0 * rand()) / RAND_MAX);
+               data += (int) ((100.0 * rand()) / RAND_MAX);
 #endif
+               trigTag++;
                break;
        }
 
        size = SubEvt_size(subEvt) + sizeof(UInt4) * (data - first);
-       if (size > my->maxSubEvtSize) {
+       if (size > my->maxSubEvtSizes[i]) {
                SubEvt_setId(subEvt, SubEvt_id(subEvt) | 0x80000000);
-               size = my->maxSubEvtSize;
+               size = my->maxSubEvtSizes[i];
        }
        SubEvt_setSize(subEvt, size);
 }
index b0c6b738c464dc0363585bb6081afa715d8e9825..76d695fd240ea04623d7ec515dfeb9a877e3c21e 100644 (file)
@@ -1,4 +1,4 @@
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.3 1999-11-17 14:06:47 hades Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.4 1999-11-19 16:00:18 hades Exp $";
 
 #define _POSIX_C_SOURCE 199309L
 #include <unistd.h>
@@ -13,6 +13,7 @@ static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/had
 #include <hadesstd.h>
 
 #include "hardware.h"
+#include "subevt.h"
 #include "shmtrans.h"
 #include "hadtuqueue.h"
 #include "worker.h"
@@ -101,26 +102,24 @@ void main(int argc, char *argv[])
                msglog(LOG_DEBUG, "shmTrans: %p = hadTu: %s\n", hadTu, HadTu_2charP(hadTu));
 #endif
                hadTuQueue = allocMem(HadTuQueue_sizeOf());
-#ifdef BIGMSG
                conHadTuQueue(hadTuQueue, hadTu, queueSize - HadTu_hdrSize());
-#else
-               conHadTuQueue(hadTuQueue, hadTu, Hardware_maxSubEvtSize(hw) + HadTu_hdrSize() + 8);
-#endif
-               while (NULL != (subEvt = HadTuQueue_alloc(hadTuQueue, Hardware_maxSubEvtSize(hw)))) {
-                       Hardware_waitForTrigger(hw, subEvt);
+               Hardware_waitForTrigger(hw);
+               for (i = 0; Hardware_subEvtId(hw, i) != SubEvtId_invalid; i++) {
+                       subEvt = HadTuQueue_alloc(hadTuQueue, Hardware_maxSubEvtSize(hw, i));
 
-                       Hardware_readout(hw, subEvt);
+                       Hardware_readout(hw, i, subEvt);
+                       SubEvt_setTrigNr(subEvt, (*trigAccepted << 8) | (SubEvt_trigNr(subEvt) & 0xff));
                        (*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));
 #endif
 
                        HadTuQueue_push(hadTuQueue);
                }
+               (*trigAccepted)++;
                desHadTuQueue(hadTuQueue);
                freeMem(hadTuQueue);
                ShmTrans_send(shmTrans);
index 04ff92e0547caeb19dc3e87d444bb6e71aea9de2..40b6b64da0b0f7afe1108a4166bb1aea4f4b9021 100644 (file)
@@ -6,6 +6,7 @@
 #include "hadtu.h"
 
 enum SubEvtId {
+  SubEvtId_invalid = 0,
   SubEvtId_test1 = 1,
   SubEvtId_slow = 2,
   SubEvtId_test2 = 3,