-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) {