From 1a063ca94ff65d27e60dceadcb3eb4ecf37684b8 Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 2 Sep 1999 08:58:50 +0000 Subject: [PATCH] multiple tdc's --- hadaq/hwtof.c | 60 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/hadaq/hwtof.c b/hadaq/hwtof.c index f80eca1..47d144b 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.1 1999-09-02 08:36:41 hades Exp $"; +static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtof.c,v 1.2 1999-09-02 08:58:50 hades Exp $"; #define _POSIX_C_SOURCE 199309L #include @@ -19,6 +19,12 @@ struct HardwareS { #include "hardware.h" +#define NV775S 1 + +typedef struct ModulesS { + HwV775 *v775[NV775S]; +} Modules; + size_t Hardware_maxSubEvtSize(const Hardware *my) { return my->maxSubEvtSize; @@ -33,7 +39,7 @@ Hardware *newHardware(void) { Hardware *my; Param paramS, *param = ¶mS; - HwV775 *v775; + HwV775 *v775[NV775S]; int i; if (0 > conParam(param, "param.tcl")) { @@ -41,16 +47,21 @@ Hardware *newHardware(void) return NULL; } my = allocMem(sizeof(Hardware)); - my->specific = allocMem(sizeof(v775)); + my->specific = allocMem(sizeof(Modules)); - my->maxSubEvtSize = SubEvt_hdrSize() + (2564 * sizeof(UInt4)); + my->maxSubEvtSize = SubEvt_hdrSize() + (NV775S * 34 * sizeof(UInt4)); - v775 = allocMem(sizeof(HwV775)); - if (0 > conHwV775(v775, "tdc0", param)) { - msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno)); - return NULL; + for (i = 0; i < NV775S; i++) { + char buf[16]; + + v775[i] = allocMem(sizeof(HwV775)); + sprintf(buf, "tdc%d", i); + if (0 > conHwV775(v775[i], buf, param)) { + msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno)); + return NULL; + } + ((Modules *) my->specific)->v775[i] = v775[i]; } - my->specific = (void *) v775; desParam(param); @@ -59,21 +70,24 @@ Hardware *newHardware(void) void deleteHardware(Hardware *my) { - HwV775 *v775 = (HwV775 *) my->specific; + int i; + HwV775 **v775 = ((Modules *) my->specific)->v775; - desHwV775(v775); - freeMem(v775); + for (i = 0; i < NV775S; i++) { + desHwV775(v775[i]); + freeMem(v775[i]); + } freeMem(my); } void Hardware_waitForTrigger(const Hardware *my, void *subEvt) { - HwV775 *v775 = (HwV775 *) my->specific; + HwV775 **v775 = ((Modules *) my->specific)->v775; - if (HwV775_isEmpty(v775)) { - HwV775_requestBuffer(v775); - while (HwV775_isBusy(v775)) { + if (HwV775_isEmpty(v775[0])) { + HwV775_requestBuffer(v775[0]); + while (HwV775_isBusy(v775[0])) { #if 1 struct timespec tS, *t = &tS; t->tv_sec = 0; @@ -86,7 +100,15 @@ void Hardware_waitForTrigger(const Hardware *my, void *subEvt) void Hardware_readout(const Hardware *my, void *subEvt) { - HwV775 *v775 = (HwV775 *) my->specific; - - HwV775_readSubEvt(v775, subEvt); + int i; + HwV775 **v775 = ((Modules *) my->specific)->v775; + void *currSubEvt; + + for ( + i = 0, currSubEvt = subEvt; + i < NV775S; + i++, currSubEvt = SubEvt_end(subEvt) + ) { + HwV775_readSubEvt(v775[i], currSubEvt); + } } -- 2.43.0