]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
Minor changes to speed up the readout. W. Koenig
authorhadaq <hadaq>
Sat, 25 May 2002 09:20:38 +0000 (09:20 +0000)
committerhadaq <hadaq>
Sat, 25 May 2002 09:20:38 +0000 (09:20 +0000)
hadaq/hwtrig.c

index 1f5a8740d43979582408a2939a42681c4ea43d12..13a3fd2ed74a89f50ed3fad9b4fd789882c4b194 100644 (file)
@@ -1,4 +1,4 @@
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtrig.c,v 6.26 2002-05-19 23:14:32 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtrig.c,v 6.27 2002-05-25 09:20:38 hadaq Exp $";
 /* modified MU readout producing a dense pack of 16 Bit words. 15-March-2002, W. Koenig */
 
 #define _POSIX_C_SOURCE 199309L
@@ -183,12 +183,10 @@ void Hardware_waitForTrigger(Hardware *my, void *partEvt)
 
 void readoutTrig(Hardware *my, void *subEvt)
 {
-       uint32_t *header;
+       uint32_t *header = (uint32_t *) subEvt;
        uint16_t *data;
        uint16_t *dataEnd;
 
-       header = SubEvt_begin(subEvt);
-
 
        if (! ((LVme_getW(my->lvme6, MU_FIFO_STATUS) >> 3) &0x1) ) {
                LVme_getW(my->lvme4, MU_FIFO);
@@ -197,14 +195,16 @@ void readoutTrig(Hardware *my, void *subEvt)
          old MU assumes its 16 bit words get expanded to 32 Bit.
          This is not the case, see SubEvt_setDecoding(..)
        */
-       *header++ =((LVme_getW(my->lvme4, MU_FIFO) & 0xffff)>>1) + 8;
-       *header++ = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
-       *header++ = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
-       *header++ = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
+       *header =((LVme_getW(my->lvme4, MU_FIFO) & 0xffff)>>1) + 8;
+
+       dataEnd=(uint16_t *)((uint32_t)header + *header);
+
+       *++header = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
+       *++header = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
+       *++header = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
        SubEvt_setDecoding(subEvt, SubEvtDecoding_16bitData);
 
-       data=(uint16_t *)header;
-       dataEnd=(uint16_t *)SubEvt_end(subEvt);
+       data=(uint16_t *)++header;
 
        while (data < dataEnd) {
                *data++ = (uint16_t) LVme_getW(my->lvme4, MU_FIFO);