From: hades Date: Wed, 17 Nov 1999 14:06:47 +0000 (+0000) Subject: error bit in subEvtId is honored (and set in hwsoft) X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=49f90da9d9a810dfd09855be4aade41ae716f472;p=daqdata.git error bit in subEvtId is honored (and set in hwsoft) --- diff --git a/hadaq/hwsoft.c b/hadaq/hwsoft.c index f320edc..07dbc1a 100644 --- a/hadaq/hwsoft.c +++ b/hadaq/hwsoft.c @@ -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); } diff --git a/hadaq/hwtof.c b/hadaq/hwtof.c index 5074106..4ee1d4f 100644 --- a/hadaq/hwtof.c +++ b/hadaq/hwtof.c @@ -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 @@ -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; diff --git a/hadaq/readout.c b/hadaq/readout.c index 0008eef..b0c6b73 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.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 @@ -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)); diff --git a/hadaq/subevt.c b/hadaq/subevt.c index 1d3c059..cba2878 100644 --- a/hadaq/subevt.c +++ b/hadaq/subevt.c @@ -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 #include @@ -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); diff --git a/hadaq/subevt.h b/hadaq/subevt.h index 67d4a57..04ff92e 100644 --- a/hadaq/subevt.h +++ b/hadaq/subevt.h @@ -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);