]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
New readout scheme
authorhades <hades>
Sat, 27 May 2000 06:02:32 +0000 (06:02 +0000)
committerhades <hades>
Sat, 27 May 2000 06:02:32 +0000 (06:02 +0000)
hadaq/hwrich.c

index 6b7f7f9ed15e3f288245a1bde53d7e41efebd79b..f06a45f00c00119300515d1163ad5c4826415d5c 100644 (file)
@@ -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 <unistd.h>
@@ -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));
 }