From 021af7cbd1e2a4e2656d7e940992ce29bc7a1995 Mon Sep 17 00:00:00 2001 From: hades Date: Fri, 19 Nov 1999 15:58:07 +0000 Subject: [PATCH] *** empty log message *** --- hadaq/hadaq.tcl | 2 +- hadaq/hardware.h | 7 ++-- hadaq/hwsoft.c | 98 ++++++++++++++++++++++++------------------------ hadaq/readout.c | 17 ++++----- hadaq/subevt.h | 1 + 5 files changed, 64 insertions(+), 61 deletions(-) diff --git a/hadaq/hadaq.tcl b/hadaq/hadaq.tcl index 97d558b..58b4df8 100644 --- a/hadaq/hadaq.tcl +++ b/hadaq/hadaq.tcl @@ -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 } } diff --git a/hadaq/hardware.h b/hadaq/hardware.h index 672d42e..4ad3b44 100644 --- a/hadaq/hardware.h +++ b/hadaq/hardware.h @@ -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 diff --git a/hadaq/hwsoft.c b/hadaq/hwsoft.c index 07dbc1a..f155402 100644 --- a/hadaq/hwsoft.c +++ b/hadaq/hwsoft.c @@ -3,22 +3,36 @@ #include #include +#include + +#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 +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); } diff --git a/hadaq/readout.c b/hadaq/readout.c index b0c6b73..76d695f 100644 --- a/hadaq/readout.c +++ b/hadaq/readout.c @@ -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 @@ -13,6 +13,7 @@ static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/had #include #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); diff --git a/hadaq/subevt.h b/hadaq/subevt.h index 04ff92e..40b6b64 100644 --- a/hadaq/subevt.h +++ b/hadaq/subevt.h @@ -6,6 +6,7 @@ #include "hadtu.h" enum SubEvtId { + SubEvtId_invalid = 0, SubEvtId_test1 = 1, SubEvtId_slow = 2, SubEvtId_test2 = 3, -- 2.43.0