From: hades Date: Tue, 9 May 2000 12:24:22 +0000 (+0000) Subject: Completely new, tof is not read out directly by the CPU, but by X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=327fc596379db27ee39653de9681f78d76fda07a;p=daqdata.git Completely new, tof is not read out directly by the CPU, but by Eriks DSP-Board (see hwtip.[ch]) --- diff --git a/hadaq/hwtof.c b/hadaq/hwtof.c index 7e90a50..1815417 100644 --- a/hadaq/hwtof.c +++ b/hadaq/hwtof.c @@ -1,43 +1,28 @@ -static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtof.c,v 1.9 2000-02-03 18:51:45 muench Stab $"; +static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtof.c,v 1.10 2000-05-09 12:24:22 hades Exp $"; #define _POSIX_C_SOURCE 199309L #include #include #include -#include +#include #include #include "param.h" #include "subevt.h" -#include "hwdtu.h" -#include "hwsis3801.h" -#include "hwv488.h" -#include "hwv775.h" -#include "hwv878.h" +#include "hwtip.h" + +/* Set number of RCs here */ +#define NTIPS 1 struct HardwareS { size_t maxSubEvtSize; - void *specific; + HwTip *tip[NTIPS]; + unsigned tipToRead; }; #include "hardware.h" -#define NV775S 3 -#define NV878S 5 - -typedef struct ModulesS { - HwDtu *dtu; - HwSis3801 *sis3801; - HwV488 *adc0; - HwV488 *tdc8; - HwV488 *tdc9; - HwV775 *v775[NV775S]; - HwV878 *v878[NV878S]; -} - -Modules; - size_t Hardware_maxSubEvtSize(const Hardware *my) { return my->maxSubEvtSize; @@ -52,86 +37,28 @@ Hardware *newHardware(void) { Hardware *my; Param paramS, *param = ¶mS; - HwDtu *dtu; - HwSis3801 *sis3801; - HwV488 *adc0; - HwV488 *tdc8; - HwV488 *tdc9; - HwV775 *v775[NV775S]; - HwV878 *v878[NV878S]; int i; -#if 0 - 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)); return NULL; } my = allocMem(sizeof(Hardware)); - my->specific = allocMem(sizeof(Modules)); - - my->maxSubEvtSize = SubEvt_hdrSize() - + (NV775S * 34 * sizeof(UInt4)) - + (NV878S * 34 * sizeof(UInt4)) - + (9 * sizeof(UInt2)) - + (9 * sizeof(UInt2)) - + ((1 + 2 * 32) * sizeof(UInt2)); - - dtu = allocMem(sizeof(HwDtu)); - if (0 > conHwDtu(dtu, "dtu", param)) { - msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno)); - return NULL; - } - ((Modules *) my->specific)->dtu = dtu; - sis3801 = allocMem(sizeof(HwSis3801)); - if (0 > conHwSis3801(sis3801, "scaler0", param)) { - msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno)); - return NULL; - } - ((Modules *) my->specific)->sis3801 = sis3801; + my->maxSubEvtSize = SubEvt_hdrSize() + (800 * sizeof(UInt4)); + my->tipToRead = 0; - 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)->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)->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++) { + for (i = 0; i < NTIPS; i++) { char buf[16]; - v775[i] = allocMem(sizeof(HwV775)); - sprintf(buf, "tdc%d", i); - if (0 > conHwV775(v775[i], buf, param)) { + my->tip[i] = allocMem(sizeof(HwTip)); + sprintf(buf, "tip%d", i); + if (0 > conHwTip(my->tip[i], buf, param)) { msglog(LOG_DEBUG, "%s:%d:%s\n", __FILE__, __LINE__, strerror(errno)); return NULL; } - ((Modules *) my->specific)->v775[i] = v775[i]; } - for (i = 0; i < NV878S; i++) { - char buf[16]; - v878[i] = allocMem(sizeof(HwV878)); - 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; - } - ((Modules *) my->specific)->v878[i] = v878[i]; - } desParam(param); return my; @@ -140,154 +67,34 @@ Hardware *newHardware(void) void deleteHardware(Hardware *my) { int i; - HwDtu *dtu = ((Modules *) my->specific)->dtu; - HwSis3801 *sis3801 = ((Modules *) my->specific)->sis3801; - 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; - for (i = 0; i < NV878S; i++) { - desHwV878(v878[i]); - freeMem(v878[i]); + for (i = 0; i < NTIPS; i++) { + desHwTip(my->tip[i]); + freeMem(my->tip[i]); } - for (i = 0; i < NV775S; i++) { - desHwV775(v775[i]); - freeMem(v775[i]); - } - desHwV488(tdc9); - freeMem(tdc9); - desHwV488(tdc8); - freeMem(tdc8); - desHwV488(adc0); - freeMem(adc0); - desHwSis3801(sis3801); - freeMem(sis3801); - desHwDtu(dtu); - freeMem(dtu); freeMem(my); } 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; - static unsigned long trigNr = 0; - - switch (nextId) { - case SubEvtId_trigCode: - do { - while (HwDtu_isEmpty(dtu)) { -#if 0 - struct timespec tS, *t = &tS; - t->tv_sec = 0; - t->tv_nsec = 020000000; - nanosleep(t, NULL); -#endif - } - HwDtu_read(dtu); - msglog(LOG_DEBUG, "Dtu: tag: 0x%02x, code: 0x%02x\n", dtu->trigTag, dtu->trigCode); - switch (dtu->trigCode & 0x7) { - case 0x02: - case 0x03: - trigTag = dtu->trigTag; - doReadOut = 0; - break; - default: - doReadOut = 1; - break; - } - } while (!doReadOut); - SubEvt_setSize(subEvt, SubEvt_hdrSize()); - SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData); - SubEvt_setTrigNr(subEvt, trigNr << 8 | trigTag); - SubEvt_setId(subEvt, SubEvtId_trigCode); - nextId = SubEvtId_tofTest; - break; - case SubEvtId_tofTest: - do { -#if 0 + if (HwTip_isEmpty(my->tip[my->tipToRead])) { + HwTip_requestBuffer(my->tip[my->tipToRead]); + while (HwTip_isBusy(my->tip[my->tipToRead])) { +#if 1 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); - SubEvt_setId(subEvt, SubEvtId_tofTest); - nextId = SubEvtId_trigInfo; - break; - case SubEvtId_trigInfo: - SubEvt_setSize(subEvt, SubEvt_hdrSize()); - SubEvt_setDecoding(subEvt, SubEvtDecoding_16bitData); - SubEvt_setTrigNr(subEvt, trigNr << 8 | trigTag); - SubEvt_setId(subEvt, SubEvtId_trigInfo); - nextId = SubEvtId_trigCode; - trigTag = dtu->trigTag; - trigNr++; - break; + } } } -static void readoutDummy(Hardware *my, void *subEvt) -{ - HwDtu *dtu = ((Modules *) my->specific)->dtu; - UInt4 *data = SubEvt_data(subEvt); - UInt4 *first = data; - - *data++ = dtu->trigCode; - - SubEvt_setSize(subEvt, SubEvt_size(subEvt) + sizeof(UInt4) * (data - first)); -} - - void Hardware_readout(Hardware *my, void *subEvt) { - int i; - HwDtu *dtu = ((Modules *) my->specific)->dtu; - HwSis3801 *sis3801 = ((Modules *) my->specific)->sis3801; - 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(my, subEvt); - break; - case SubEvtId_tofTest: - for ( i = 0; i < NV775S; i++) { - HwV775_readData(v775[i], subEvt); - } - for (i = 0; i < NV878S; i++) { - HwV878_readData(v878[i], subEvt); - } - break; - case SubEvtId_trigInfo: - HwV488_readData(adc0, subEvt); - HwV488_readData(tdc8, subEvt); - HwV488_readData(tdc9, subEvt); - HwSis3801_readData(sis3801, subEvt); - break; + HwTip_readSubEvt(my->tip[my->tipToRead], subEvt); + if (++my->tipToRead == NTIPS ) { + my->tipToRead = 0; } }