From: hades Date: Sat, 27 May 2000 06:02:32 +0000 (+0000) Subject: New readout scheme X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=c80a43cb0920e3c5650bef6aad2593ce52a4fa70;p=daqdata.git New readout scheme --- diff --git a/hadaq/hwrich.c b/hadaq/hwrich.c index 6b7f7f9..f06a45f 100644 --- a/hadaq/hwrich.c +++ b/hadaq/hwrich.c @@ -1,4 +1,4 @@ -static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwrich.c,v 6.6 2000-05-27 05:22:22 hades Exp $"; +static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwrich.c,v 6.7 2000-05-27 06:02:32 hades Exp $"; #define _POSIX_C_SOURCE 199309L #include @@ -63,7 +63,7 @@ Hardware *newHardware(void) } my = allocMem(sizeof(Hardware)); - my->maxSubEvtSize = SubEvt_hdrSize() + (2500 * sizeof(UInt4)); + my->maxSubEvtSize = SubEvt_hdrSize() + (NRACES * 2500 * sizeof(UInt4)); my->raceToRead = 0; for (i = 0; i < NRACES; i++) { @@ -108,7 +108,6 @@ void deleteHardware(Hardware *my) void Hardware_waitForTrigger(Hardware *my, void *subEvt) { #ifdef SYNCHRONOUS - int i, j; static int beginRun = 1; /* eat 1 triggers at begin run */ while (beginRun > 0) { @@ -124,22 +123,30 @@ void Hardware_waitForTrigger(Hardware *my, void *subEvt) beginRun--; } #endif - if (HwRace_isEmpty(my->race[my->raceToRead])) { +} + +void Hardware_readout(Hardware *my, void *partEvt) +{ + void *subEvt = SubEvt_data(partEvt); + int i, j; + + SubEvt_setDecoding(partEvt, SubEvtDecoding_SubEvts); + + for (my->raceToRead = 0; my->raceToRead < NRACES; my->raceToRead++) { + if (HwRace_isEmpty(my->race[my->raceToRead])) { #ifdef SYNCHRONOUS - LVme_setL(my->lvme, RELEASE1, 0xee); - for (i = 0; i < 20000; i++) { - j = 1 + 1; - } -/* msglog(LOG_INFO, "buffer is empty RC %d\n",my->raceToRead); */ + LVme_setL(my->lvme, RELEASE1, 0xee); + for (i = 0; i < 20000; i++) { + j = 1 + 1; + } #endif - HwRace_requestBuffer(my->race[my->raceToRead]); + HwRace_requestBuffer(my->race[my->raceToRead]); #ifdef SYNCHRONOUS - for (i = 0; i < 20000; i++) { - j = 1 + 1; - } -/* msglog(LOG_INFO, "switch request set\n"); */ + for (i = 0; i < 20000; i++) { + j = 1 + 1; + } #endif - while (HwRace_isBusy(my->race[my->raceToRead])) { + while (HwRace_isBusy(my->race[my->raceToRead])) { #if 0 /* * This sleep prevents a tight loop which stops work on real @@ -151,14 +158,14 @@ void Hardware_waitForTrigger(Hardware *my, void *subEvt) t->tv_nsec = 020000000; nanosleep(t, NULL); #endif + } } + HwRace_readSubEvt(my->race[my->raceToRead], subEvt); + SubEvt_setTrigNr(partEvt, SubEvt_trigNr(subEvt)); + subEvt = SubEvt_next(partEvt, subEvt); } -} -void Hardware_readout(Hardware *my, void *subEvt) -{ - HwRace_readSubEvt(my->race[my->raceToRead], subEvt); - if (++my->raceToRead == NRACES) { - my->raceToRead = 0; - } + SubEvt_setSize(partEvt, (char *)subEvt - (char *)partEvt); + SubEvt_setId(partEvt, 0); + msglog(LOG_DEBUG, "partEvt: %s\n", SubEvt_2charP(partEvt)); }