From fd0e35df86b88222edec0b14f8bcb1aeea4f5688 Mon Sep 17 00:00:00 2001 From: hades Date: Fri, 31 Aug 2001 11:17:31 +0000 Subject: [PATCH] BUGFIX: fixed bug introduced in last version. Readout needs to keep daqReq set until it has read the whole buffer --- hadaq/hwtip.c | 49 +++++++++++++------------------------------------ 1 file changed, 13 insertions(+), 36 deletions(-) diff --git a/hadaq/hwtip.c b/hadaq/hwtip.c index ab65607..1df7c2f 100644 --- a/hadaq/hwtip.c +++ b/hadaq/hwtip.c @@ -1,4 +1,4 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtip.c,v 1.19 2001-08-30 16:37:37 hades Exp $"; +static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtip.c,v 1.20 2001-08-31 11:17:31 hades Exp $"; #include #include @@ -145,6 +145,16 @@ void desHwTip(HwTip * my) void HwTip_requestBuffer(HwTip * my) { + LVme_clrBitL(my->lvme, CONFIG1BASE + CFG_MASTER_CONTROL, my->daqRq); + + while (LVme_tstBitL(my->lvme, CONFIG1BASE + CFG_MASTER_STATUS, my->daqGr)) { +#if 1 + struct timespec tS, *t = &tS; + t->tv_sec = 0; + t->tv_nsec = 020000000; + nanosleep(t, NULL); +#endif + } if (my->bankRequested == 0) { my->bankRequested = 1; my->pipeFull = _LVL2_PIPE2_FULL; @@ -158,20 +168,6 @@ void HwTip_requestBuffer(HwTip * my) my->daqGr = _LVL2_PIPE1_GR; my->fifo = MEMBASE; } -#ifndef NDEBUG - msglog(LOG_DEBUG, "wait for data\n"); -#endif - -#if 0 - while (!LVme_tstBitL(my->lvme, CONFIG1BASE + CFG_MASTER_STATUS, my->pipeFull)) { -#if 1 - struct timespec tS, *t = &tS; - t->tv_sec = 0; - t->tv_nsec = 020000000; - nanosleep(t, NULL); -#endif - } -#endif LVme_setBitL(my->lvme, CONFIG1BASE + CFG_MASTER_CONTROL, my->daqRq); @@ -180,26 +176,7 @@ void HwTip_requestBuffer(HwTip * my) int HwTip_isBusy(HwTip * my) { - int isGranted; - - isGranted = LVme_tstBitL(my->lvme, CONFIG1BASE + CFG_MASTER_STATUS, my->daqGr); - - if (isGranted) { -#ifndef NDEBUG - msglog(LOG_DEBUG, "data available\n"); -#endif - LVme_clrBitL(my->lvme, CONFIG1BASE + CFG_MASTER_CONTROL, my->daqRq); - - while (LVme_tstBitL(my->lvme, CONFIG1BASE + CFG_MASTER_STATUS, my->daqGr)) { - #if 1 - struct timespec tS, *t = &tS; - t->tv_sec = 0; - t->tv_nsec = 020000000; - nanosleep(t, NULL); - #endif - } - } - return !isGranted; + return !LVme_tstBitL(my->lvme, CONFIG1BASE + CFG_MASTER_STATUS, my->daqGr); } int HwTip_isEmpty(HwTip * my) @@ -216,7 +193,7 @@ int HwTip_readSubEvt(HwTip * my, void *subEvt) size = LVme_getL(my->lvme, my->currAddr); if (size > 0x40000) { msglog(LOG_ERR, "found size: %.8x , address: %.8x, too long, fatal! \n", size, my->currAddr); - exit(-1); + exit(1); } /* copy one sub evt from RC to memory */ firstAddr = my->currAddr; -- 2.43.0