From b8530ab32949f6d70d690b4367e6c560278f609a Mon Sep 17 00:00:00 2001 From: muench Date: Thu, 3 Feb 2000 18:12:51 +0000 Subject: [PATCH] *** empty log message *** --- hadaq/hwship.c | 119 ++++++++++++++++++------------------------------- hadaq/hwship.h | 1 + hadaq/hwshow.c | 4 +- 3 files changed, 47 insertions(+), 77 deletions(-) diff --git a/hadaq/hwship.c b/hadaq/hwship.c index 979a7e3..da8e0ec 100644 --- a/hadaq/hwship.c +++ b/hadaq/hwship.c @@ -10,6 +10,9 @@ #include "ipc_basis.h" #include "hwship.h" +/* set this to 8 for zero supp on, 0 for off */ +#define ZEROSUP 8 + static int bankRequested(HwShip *my) { UInt2 val; @@ -54,29 +57,29 @@ static void standbyMode(HwShip *my) { } static void acquireMode(HwShip *my) { - LVme_setW(my->lvme, ID_CTR_ACCESS_ON, 0); - LVme_setW(my->lvme, ID_CTR_STANDBY_MODE, 0); - LVme_setW(my->lvme, ID_CTR_SW_TO_LUT12, 0); - LVme_setW(my->lvme, LUT_CTR_SHOWER_MODE, 0); - LVme_setW(my->lvme, ID_CTR_SW_TO_LUT34, 0); - LVme_setW(my->lvme, LUT_CTR_SHOWER_MODE, 0); - LVme_setW(my->lvme, ID_CTR_ACCESS_OFF, 0); - LVme_setW(my->lvme, RC1_ACCESS_ON, 0); - LVme_setW(my->lvme, RC1_SHOWER_MODE, 0); - LVme_setW(my->lvme, RC1_ACCESS_OFF, 0); - LVme_setW(my->lvme, PEDAS_ACCESS_ON, 0); - LVme_setW(my->lvme, PEDAS_SHOWER_MODE, 0); - LVme_setW(my->lvme, PEDAS_ACCESS_OFF, 0); - LVme_setW(my->lvme, LVL2_ACCESS_ON, 0); - LVme_setW(my->lvme, LVL2_SHOWER_MODE, 0); - LVme_setW(my->lvme, LVL2_STAT_WRITE, 0); - LVme_setW(my->lvme, LVL2_ACCESS_OFF, 0); - LVme_setW(my->lvme, RC3_ACCESS_ON, 0); - LVme_setW(my->lvme, RC3_SHOWER_MODE, 0); - LVme_setW(my->lvme, RC3_ACCESS_OFF, 0); - LVme_setW(my->lvme, ADDON_ACCESS_ON, 0); - LVme_setW(my->lvme, ADDON_SHOWER_MODE, 0); - LVme_setW(my->lvme, ADDON_ACCESS_OFF, 0); + LVme_setW(my->lvme, ID_CTR_ACCESS_ON, 0); + LVme_setW(my->lvme, ID_CTR_STANDBY_MODE, 0); + LVme_setW(my->lvme, ID_CTR_SW_TO_LUT12, 0); + LVme_setW(my->lvme, LUT_CTR_SHOWER_MODE, 0); + LVme_setW(my->lvme, ID_CTR_SW_TO_LUT34, 0); + LVme_setW(my->lvme, LUT_CTR_SHOWER_MODE, 0); + LVme_setW(my->lvme, ID_CTR_ACCESS_OFF, 0); + LVme_setW(my->lvme, RC1_ACCESS_ON, 0); + LVme_setW(my->lvme, RC1_SHOWER_MODE, 0); + LVme_setW(my->lvme, RC1_ACCESS_OFF, 0); + LVme_setW(my->lvme, PEDAS_ACCESS_ON, 0); + LVme_setW(my->lvme, PEDAS_SHOWER_MODE, 0); + LVme_setW(my->lvme, PEDAS_ACCESS_OFF, 0); + LVme_setW(my->lvme, LVL2_ACCESS_ON, 0); + LVme_setW(my->lvme, LVL2_SHOWER_MODE, 0); + LVme_setW(my->lvme, LVL2_STAT_WRITE, ZEROSUP); + LVme_setW(my->lvme, LVL2_ACCESS_OFF, 0); + LVme_setW(my->lvme, RC3_ACCESS_ON, 0); + LVme_setW(my->lvme, RC3_SHOWER_MODE, 0); + LVme_setW(my->lvme, RC3_ACCESS_OFF, 0); + LVme_setW(my->lvme, ADDON_ACCESS_ON, 0); + LVme_setW(my->lvme, ADDON_SHOWER_MODE, 0); + LVme_setW(my->lvme, ADDON_ACCESS_OFF, 0); LVme_setW(my->lvme, LVL2_ACCESS_ON, 0); } @@ -110,17 +113,16 @@ void desHwShip(HwShip * my) void HwShip_requestBuffer(HwShip *my) { int i; -#if 0 - static UInt1 oldBankConfirmed; - if (oldBankConfirmed == bankConfirmed(my)) { - msglog(LOG_ERR, "same bank twice: 0x%02x\n", oldBankConfirmed); +#if 1 + if (my->oldBankConfirmed == bankConfirmed(my)) { + msglog(LOG_ERR, "same bank twice: 0x%02x\n", my->oldBankConfirmed); } - oldBankConfirmed = bankConfirmed(my); + my->oldBankConfirmed = bankConfirmed(my); #endif msglog(LOG_DEBUG, "wait for data\n"); - while ((LVme_getW(my->lvme, LVL2_STAT_READ) >> 9 & 0x7f) < 5) { + while ((LVme_getW(my->lvme, LVL2_STAT_READ) >> 9 & 0x7f) == 0) { #if 1 struct timespec tS, *t = &tS; t->tv_sec = 0; @@ -130,9 +132,9 @@ void HwShip_requestBuffer(HwShip *my) { } msglog(LOG_DEBUG, "data available\n"); i = bankRequested(my) == 1 ? 0 : 1; - LVme_setW(my->lvme, LVL2_STAT_WRITE, i << 1); + LVme_setW(my->lvme, LVL2_STAT_WRITE, (i << 1) | ZEROSUP); - my->currAddr = 0x10 + LVL2_OFFSET; + my->currAddr = LVL2_OFFSET + 0x4; } int HwShip_isBusy(HwShip *my) { @@ -146,60 +148,27 @@ int HwShip_isEmpty(HwShip *my) { int HwShip_readSubEvt(HwShip *my, void *subEvt) { UInt4 *data = (UInt4 *)subEvt; int firstAddr; - int size; + size_t size; UInt1 trigTag; - static UInt1 oldTrigTag; - UInt1 checkTrigTag; - - checkTrigTag = LVme_getL(my->lvme, my->currAddr + 0x610); size = LVme_getL(my->lvme, my->currAddr); - my->currAddr += 4; - size -= 4; - - trigTag = LVme_getL(my->lvme, my->currAddr) & 0xff; -#if 0 - oldTrigTag += 1; - if (oldTrigTag != trigTag) { - msglog(LOG_ERR, "trigTag sequence: 0x%02x != 0x%02x\n", oldTrigTag, trigTag); - oldTrigTag = trigTag; - } -#endif - my->currAddr += 4; - size -= 4; - -#if 1 - if (checkTrigTag != trigTag) { - msglog(LOG_ERR, "trigTag consistency: 0x%02x != 0x%02x\n", checkTrigTag, trigTag); - } -#endif - my->currAddr += 4; - size -= 4; - - /* BUGBUG workaround missing subEvtHdr in Hardware, set const in Software */ - *data++ = size + 16; - *data++ = 0x00020001; - *data++ = 300 + my->name[4] - '0'; - *data++ = trigTag; /* copy one sub evt from RC to memory */ for (firstAddr = my->currAddr; my->currAddr - firstAddr < size; my->currAddr += 4) { *data++ = LVme_getL(my->lvme, my->currAddr); } - /* BUGBUG if soft & hardware trigNr differ, HW gets precedence */ - trigTag = SubEvt_trigNr(subEvt); -#if 0 - if (trigTag != (my->trigNr & 0xff)) { - msglog(LOG_EMERG,"readSubEvt trigTag differ\n"); - } + trigTag = SubEvt_trigNr(subEvt) & 0xff; + +#if 1 + if ((my->trigNr & 0xff) != trigTag) { + msglog(LOG_ERR, + "%s trigTag consistency: 0x%02x != 0x%02x offset: 0x%08x\n", my->name, my->trigNr, trigTag, my->currAddr); + } #endif - if (trigTag < (my->trigNr & 0xff)) { - my->trigNr += 0x100; - } - my->trigNr = (my->trigNr & 0xffffff00) | trigTag; - SubEvt_setTrigNr(subEvt, my->trigNr << 8 | trigTag); - my->trigNr++; + /* normal extension of trigger tag */ + SubEvt_setTrigNr(subEvt, my->trigNr << 8 | trigTag); + my->trigNr++; return 0; } diff --git a/hadaq/hwship.h b/hadaq/hwship.h index 6405145..87b2374 100644 --- a/hadaq/hwship.h +++ b/hadaq/hwship.h @@ -10,6 +10,7 @@ typedef struct HwShipS { LVme *lvme; int currAddr; unsigned trigNr; + UInt1 oldBankConfirmed; } HwShip; diff --git a/hadaq/hwshow.c b/hadaq/hwshow.c index 935f6dd..96963f1 100644 --- a/hadaq/hwshow.c +++ b/hadaq/hwshow.c @@ -1,4 +1,4 @@ -static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwshow.c,v 6.2 1999-11-01 08:33:00 muench Exp $"; +static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwshow.c,v 6.3 2000-02-03 18:14:12 muench Stab $"; #define _POSIX_C_SOURCE 199309L #include @@ -45,7 +45,7 @@ Hardware *newHardware(void) } my = allocMem(sizeof(Hardware)); - my->maxSubEvtSize = SubEvt_hdrSize() + (0x2010 * sizeof(UInt4)); + my->maxSubEvtSize = SubEvt_hdrSize() + (800 * sizeof(UInt4)); my->shipToRead = 0; for (i = 0; i < NSHIPS; i++) { -- 2.43.0