-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtrig.c,v 6.27 2002-05-25 09:20:38 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtrig.c,v 6.28 2002-05-27 21:25:29 hadaq Exp $";
/* modified MU readout producing a dense pack of 16 Bit words. 15-March-2002, W. Koenig */
#define _POSIX_C_SOURCE 199309L
/* wait for some time for not disturbing the DSP */
struct timespec tS, *t = &tS;
t->tv_sec = 0;
- t->tv_nsec = 20000000;
+ t->tv_nsec = 10000000;
nanosleep(t, NULL);
}
+ HwTip_getEndOfData(my->tip);
}
#endif
}
-void readoutTrig(Hardware *my, void *subEvt)
+int readoutTrig(Hardware *my, void *subEvt)
{
- uint32_t *header = (uint32_t *) subEvt;
- uint16_t *data;
- uint16_t *dataEnd;
-
+ uint32_t * header = (uint32_t *)subEvt;
+ uint16_t * data;
+ uint16_t * dataEnd;
if (! ((LVme_getW(my->lvme6, MU_FIFO_STATUS) >> 3) &0x1) ) {
LVme_getW(my->lvme4, MU_FIFO);
This is not the case, see SubEvt_setDecoding(..)
*/
*header =((LVme_getW(my->lvme4, MU_FIFO) & 0xffff)>>1) + 8;
-
+ /*
+ *header contains subevent size in char's.
+ It is added to the pointer to evt begin.
+ */
dataEnd=(uint16_t *)((uint32_t)header + *header);
*++header = LVme_getW(my->lvme4, MU_FIFO) & 0xffff;
#ifndef NDEBUG
syslog(LOG_DEBUG, "subEvt: %s", SubEvt_2charP(subEvt));
#endif
+ return *(uint16_t *)header;
}
void Hardware_readout(Hardware *my, void *partEvt)
* read out MU
*/
- readoutTrig(my, subEvt);
+ trigTag = readoutTrig(my, subEvt);
trigTag = SubEvt_trigNr(subEvt) & 0xff;
-
- trigCode = SubEvt_dataValue(subEvt, 0);
subEvt = SubEvt_next(partEvt, subEvt);
#ifdef TOF_READOUT
for (i = 0; i < NCRATES; i++) {
- if(HwTip_readSubEvt(my->tip, subEvt) == 0) {
+ if( HwTip_readSubEvt(my->tip, subEvt)==0) {
if (trigTag != (SubEvt_trigNr(subEvt) & 0xff)) {
SubEvt_setId(subEvt, SubEvt_id(subEvt) | 0x80000000UL);
SubEvt_setId(partEvt, SubEvt_id(partEvt) | 0x80000000UL);