]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
multiple tdc's
authorhades <hades>
Thu, 2 Sep 1999 08:58:50 +0000 (08:58 +0000)
committerhades <hades>
Thu, 2 Sep 1999 08:58:50 +0000 (08:58 +0000)
hadaq/hwtof.c

index f80eca122e63559e749ca7d41ae769cd0e059dc0..47d144b227eb7a2c6e5f78864448c960a9b70b55 100644 (file)
@@ -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 <unistd.h>
@@ -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 = &paramS;
-       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);
+       }
 }