-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtof.c,v 1.8 1999-11-17 14:06:47 hades Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtof.c,v 1.9 2000-02-03 18:51:45 muench Stab $";
 
 #define _POSIX_C_SOURCE 199309L
 #include <unistd.h>
 
 #include "hardware.h"
 
-#define NV775S 4
-#define NV878S 4
+#define NV775S 3
+#define NV878S 5
 
 typedef struct ModulesS {
        HwDtu *dtu;
        HwSis3801 *sis3801;
-       HwV488 *v556;
-       HwV488 *v488;
+       HwV488 *adc0;
+       HwV488 *tdc8;
+       HwV488 *tdc9;
        HwV775 *v775[NV775S];
        HwV878 *v878[NV878S];
 }
        Param paramS, *param = ¶mS;
        HwDtu *dtu;
        HwSis3801 *sis3801;
-       HwV488 *v556;
-       HwV488 *v488;
+       HwV488 *adc0;
+       HwV488 *tdc8;
+       HwV488 *tdc9;
        HwV775 *v775[NV775S];
        HwV878 *v878[NV878S];
        int i;
 
 #if 0
-       system("cd /home/hades/ht99/slow; ./tof init >/dev/null 2>&1");
+       system("cd /home/hades/lt99/slow; ./tof init >/dev/null 2>&1");
 #endif
        if (0 > conParam(param, "param.tcl")) {
                msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno));
        }
        ((Modules *) my->specific)->sis3801 = sis3801;
 
-       v556 = allocMem(sizeof(HwV488));
-       if (0 > conHwV488(v556, "adc0", param)) {
+       adc0 = allocMem(sizeof(HwV488));
+       if (0 > conHwV488(adc0, "adc0", param)) {
                msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno));
                return NULL;
        }
-       ((Modules *) my->specific)->v556 = v556;
-       v488 = allocMem(sizeof(HwV488));
-       if (0 > conHwV488(v488, "tdc8", param)) {
+       ((Modules *) my->specific)->adc0 = adc0;
+       tdc9 = allocMem(sizeof(HwV488));
+       if (0 > conHwV488(tdc9, "tdc9", param)) {
                msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno));
                return NULL;
        }
-       ((Modules *) my->specific)->v488 = v488;
+       ((Modules *) my->specific)->tdc9 = tdc9;
+       tdc8 = allocMem(sizeof(HwV488));
+       if (0 > conHwV488(tdc8, "tdc8", param)) {
+               msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno));
+               return NULL;
+       }
+       ((Modules *) my->specific)->tdc8 = tdc8;
        for (i = 0; i < NV775S; i++) {
                char buf[16];
 
                char buf[16];
 
                v878[i] = allocMem(sizeof(HwV878));
-               sprintf(buf, "tdc%d", i + 4);
+               sprintf(buf, "tdc%d", i + NV775S);
                if (0 > conHwV878(v878[i], buf, param)) {
                        msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno));
                        return NULL;
        int i;
        HwDtu *dtu = ((Modules *) my->specific)->dtu;
        HwSis3801 *sis3801 = ((Modules *) my->specific)->sis3801;
-       HwV488 *v556 = ((Modules *) my->specific)->v556;
-       HwV488 *v488 = ((Modules *) my->specific)->v488;
+       HwV488 *adc0 = ((Modules *) my->specific)->adc0;
+       HwV488 *tdc8 = ((Modules *) my->specific)->tdc8;
+       HwV488 *tdc9 = ((Modules *) my->specific)->tdc9;
        HwV775 **v775 = ((Modules *) my->specific)->v775;
        HwV878 **v878 = ((Modules *) my->specific)->v878;
 
                desHwV775(v775[i]);
                freeMem(v775[i]);
        }
-       desHwV488(v488);
-       freeMem(v488);
-       desHwV488(v556);
-       freeMem(v556);
+       desHwV488(tdc9);
+       freeMem(tdc9);
+       desHwV488(tdc8);
+       freeMem(tdc8);
+       desHwV488(adc0);
+       freeMem(adc0);
        desHwSis3801(sis3801);
        freeMem(sis3801);
        desHwDtu(dtu);
 
 void Hardware_waitForTrigger(Hardware *my, void *subEvt)
 {
+       int i;
        HwDtu *dtu = ((Modules *) my->specific)->dtu;
+       HwV775 **v775 = ((Modules *) my->specific)->v775;
+       HwV878 **v878 = ((Modules *) my->specific)->v878;
+       HwV488 *adc0 = ((Modules *) my->specific)->adc0;
+       HwV488 *tdc8 = ((Modules *) my->specific)->tdc8;
+       HwV488 *tdc9 = ((Modules *) my->specific)->tdc9;
        static int nextId = SubEvtId_trigCode;
        static int doReadOut;
        static UInt1 trigTag = 0;
        case SubEvtId_trigCode:
                do {
                        while (HwDtu_isEmpty(dtu)) {
-#if 1
+#if 0
                                struct timespec tS, *t = &tS;
                                t->tv_sec = 0;
                                t->tv_nsec = 020000000;
                nextId = SubEvtId_tofTest;
                break;
        case SubEvtId_tofTest:
+               do {
+#if 0
+                       struct timespec tS, *t = &tS;
+                       t->tv_sec = 0;
+                       t->tv_nsec = 020000000;
+                       nanosleep(t, NULL);
+#endif
+                       doReadOut = 1;
+                       for (i = 0; i < NV775S; i++) {
+                               doReadOut &= !HwV775_isEmpty(v775[i]);
+                       }
+                       for (i = 0; i < NV878S; i++) {
+                               doReadOut &= !HwV878_isEmpty(v878[i]);
+                       }
+               } while (!doReadOut);
                SubEvt_setSize(subEvt, SubEvt_hdrSize());
                SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData);
                SubEvt_setTrigNr(subEvt, trigNr << 8 | trigTag);
        }
 }
 
-static void readoutDummy(void *subEvt)
+static void readoutDummy(Hardware *my, void *subEvt)
 {
+       HwDtu *dtu = ((Modules *) my->specific)->dtu;
        UInt4 *data = SubEvt_data(subEvt);
        UInt4 *first = data;
 
-       *data++ = 0x01;
+       *data++ = dtu->trigCode;
 
        SubEvt_setSize(subEvt, SubEvt_size(subEvt) + sizeof(UInt4) * (data - first));
 }
        int i;
        HwDtu *dtu = ((Modules *) my->specific)->dtu;
        HwSis3801 *sis3801 = ((Modules *) my->specific)->sis3801;
-       HwV488 *v556 = ((Modules *) my->specific)->v556;
-       HwV488 *v488 = ((Modules *) my->specific)->v488;
+       HwV488 *adc0 = ((Modules *) my->specific)->adc0;
+       HwV488 *tdc8 = ((Modules *) my->specific)->tdc8;
+       HwV488 *tdc9 = ((Modules *) my->specific)->tdc9;
        HwV775 **v775 = ((Modules *) my->specific)->v775;
        HwV878 **v878 = ((Modules *) my->specific)->v878;
 
        switch (SubEvt_pureId(subEvt)) {
        case SubEvtId_trigCode:
-               readoutDummy(subEvt);
+               readoutDummy(my, subEvt);
                break;
        case SubEvtId_tofTest:
-               for (i = 0; i < NV775S; i++) {
+               for ( i = 0; i < NV775S; i++) {
                        HwV775_readData(v775[i], subEvt);
                }
                for (i = 0; i < NV878S; i++) {
                }
                break;
        case SubEvtId_trigInfo:
-               HwV488_readData(v556, subEvt);
-               HwV488_readData(v488, subEvt);
+               HwV488_readData(adc0, subEvt);
+               HwV488_readData(tdc8, subEvt);
+               HwV488_readData(tdc9, subEvt);
                HwSis3801_readData(sis3801, subEvt);
                break;
        }
 
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwv488.c,v 1.3 1999-11-01 08:33:00 muench Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwv488.c,v 1.4 2000-02-03 18:52:37 muench Stab $";
 
 #define _POSIX_C_SOURCE 199309L
 #include <unistd.h>
 #include "param.h"
 #include "hwv488.h"
 
-#define V556_BROKEN
-
 int conHwV488(HwV488 * my, const char *name, const Param *param)
 {
        unsigned long cardBase;
        cardBase = Param_getVal(param, my->name, "cardbase");
        my->lvme = allocMem(sizeof(LVme));
 
-       if (0 > conLVme(my->lvme, cardBase, 0x10000, 0x39, V488_SERIAL, 2)) {
+       if (0 > conLVme(my->lvme, cardBase, 0x10000, 0x39, V488_TYPE, 2)) {
                msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno));
                return -1;
        }
        LVme_setW(my->lvme, V488_THRL, Param_getVal(param, my->name, "thrl"));
        LVme_setW(my->lvme, V488_THRH, Param_getVal(param, my->name, "thrh"));
        LVme_setW(my->lvme, V488_RANGE, Param_getVal(param, my->name, "range"));
+       my->id = Param_getVal(param, my->name, "id");
 
        return 0;
 }
        UInt1 trigTag;
 
        msglog(LOG_DEBUG, "V488 Readout\n");
-#ifdef V556_BROKEN
-       if (LVme_getW(my->lvme, V488_SERIAL) != 0x2005) {
-               *data++ = 0x1007;
-       } else {
-               *data++ = LVme_getW(my->lvme, V488_SERIAL);
-       }
-#else
-       *data++ = LVme_getW(my->lvme, V488_SERIAL);
-#endif
+       *data++ = my->id;
        if (!HwV488_isEmpty(my)) {
                *data++ = hdr = LVme_getW(my->lvme, V488_OUT_BUF);
                if ((hdr & 0x8000) != 0x8000) {