From 752e77d9f4a98481b3f73cbdd4d29259354d7333 Mon Sep 17 00:00:00 2001 From: hadaq Date: Thu, 28 Aug 2003 13:10:07 +0000 Subject: [PATCH] Removed unnessecary files --- hadaq/hwrich.c | 183 ---------------------------- hadaq/hwsam.c | 136 --------------------- hadaq/hwship.c | 240 ------------------------------------ hadaq/hwship.h | 72 ----------- hadaq/hwshow.c | 267 ---------------------------------------- hadaq/hwsoft.c | 173 -------------------------- hadaq/hwtip.c | 308 ----------------------------------------------- hadaq/hwtrig.c | 285 ------------------------------------------- hadaq/sam_defs.h | 10 -- hadaq/tof_defs.h | 194 ----------------------------- 10 files changed, 1868 deletions(-) delete mode 100644 hadaq/hwrich.c delete mode 100644 hadaq/hwsam.c delete mode 100644 hadaq/hwship.c delete mode 100644 hadaq/hwship.h delete mode 100644 hadaq/hwshow.c delete mode 100644 hadaq/hwsoft.c delete mode 100644 hadaq/hwtip.c delete mode 100644 hadaq/hwtrig.c delete mode 100644 hadaq/sam_defs.h delete mode 100644 hadaq/tof_defs.h diff --git a/hadaq/hwrich.c b/hadaq/hwrich.c deleted file mode 100644 index dd1279c..0000000 --- a/hadaq/hwrich.c +++ /dev/null @@ -1,183 +0,0 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwrich.c,v 6.40 2003-05-14 13:54:43 muench Exp $"; - -#define _POSIX_C_SOURCE 199309L -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include "subevt.h" -#include "hwrace.h" - -struct HardwareS { - size_t maxSubEvtSize; - int nRaces; - HwRace **race; -}; - -#include "hardware.h" - -size_t Hardware_maxSubEvtSize(const Hardware *my) -{ - return my->maxSubEvtSize; -} - -int Hardware_inSpill(const Hardware *my) -{ - return 0; -} - -Hardware *newHardware(const char *subsystem) -{ - Hardware *my; - Param paramS, *param = ¶mS; - int i; - const char *ss; - char cardsS[PARAM_MAX_ARRAY_LEN][PARAM_MAX_VALUE_LEN]; - char *cards[PARAM_MAX_ARRAY_LEN]; - int nCards; - - for (i = 0; i < PARAM_MAX_ARRAY_LEN; i++) { - cards[i] = cardsS[i]; - } - - if (strcmp(subsystem, "unknown") == 0) { - ss = "rich0"; - syslog(LOG_NOTICE, "Subsystem not set, defaulting to %s", ss); - } else { - ss = subsystem; - } - - if (0 > conSetupParam(param, getenv("DAQ_SETUP"))) { - syslog(LOG_ERR, "Construction of parameter source failed: %s", strerror(errno)); - return NULL; - } - if (0 > getCards(param, ss, "race", &nCards, cards)) { - syslog(LOG_ERR, "Retrieval of card list failed"); - return NULL; - } - my = malloc(sizeof(Hardware)); - my->race = malloc(nCards * sizeof(HwRace *)); - my->nRaces = nCards; - - my->maxSubEvtSize = SubEvt_hdrSize() + (my->nRaces * 2500 * sizeof(uint32_t)); - - for (i = 0; i < my->nRaces; i++) { - my->race[i] = malloc(sizeof(HwRace)); - if (0 > conHwRace(my->race[i], cards[i], param)) { - syslog(LOG_ERR, "Construction of card %s failed:%s", cards[i], strerror(errno)); - return NULL; - } - } - - desParam(param); - return my; -} - -void deleteHardware(Hardware *my) -{ - int i; - - for (i = 0; i < my->nRaces; i++) { - desHwRace(my->race[i]); - free(my->race[i]); - } - free(my->race); - free(my); -} - -void Hardware_waitForTrigger(Hardware *my, void *subEvt) -{ - int i; - - for (i = 0; i < my->nRaces; i++) { - if (HwRace_isEmpty(my->race[i])) { - HwRace_requestBuffer(my->race[i]); -#ifndef NDEBUG - syslog(LOG_DEBUG, "%d buffer requested", i); -#endif - } - } - - for (i = 0; i < my->nRaces; i++) { - if (HwRace_isBufRequested(my->race[i])) { - HwRace_getEndOfData(my->race[i]); - } - } -} - -void Hardware_readout(Hardware *my, void *partEvt) -{ - int i; - int firstRace = -1; - void *subEvt = SubEvt_data(partEvt); - static unsigned long trigNr = 0; - unsigned trigTag; - int dataError; - int nErr; - uint32_t errList[32]; - - - /* init partial event, necessary for SubEvt_next() */ - SubEvt_setDecoding(partEvt, SubEvtDecoding_SubEvts); - dataError = 0; - SubEvt_setId(partEvt, 0); - - nErr = 0; - - /* read all races, check for common trigger tag */ - for (i = 0; i < my->nRaces; i++) { - if (HwRace_readSubEvt(my->race[i], subEvt) == 0) { - if (SubEvt_dataError(subEvt)) { - errList[nErr++] = SubEvt_id(subEvt); - dataError = 1; - } else { - if (firstRace < 0) { - trigTag = SubEvt_trigNr(subEvt) & 0xff; - firstRace = i; - } else { - if (trigTag != (SubEvt_trigNr(subEvt) & 0xff)) { - dataError = 1; - syslog(LOG_ERR, "(%s)Trigger tag mismatch: 0x%08x (%d) != 0x%08x", - my->race[i]->name, trigTag, firstRace, SubEvt_trigNr(subEvt)); - } - } - } - subEvt = SubEvt_next(partEvt, subEvt); - } - } - - if (nErr > 0) { - int i; - uint32_t *data = SubEvt_data(subEvt); - - SubEvt_setSize(subEvt, SubEvt_hdrSize() + (nErr + 1) * 4); - SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData); - SubEvt_setId(subEvt, 600); - SubEvt_setTrigNr(subEvt, trigTag); - - *data++ = nErr; - for (i = 0; i < nErr; i++) { - *data++ = errList[i]; - } - subEvt = SubEvt_next(partEvt, subEvt); - } - if (dataError) { - SubEvt_setDataError(partEvt); - } - SubEvt_setTrigNr(partEvt, trigNr << 8 | trigTag); - SubEvt_setSize(partEvt, (char *) subEvt - (char *) partEvt); - - trigNr++; - - assert(SubEvt_size(partEvt) <= my->maxSubEvtSize); -#ifndef NDEBUG - syslog(LOG_DEBUG, "partEvt: %s", SubEvt_2charP(partEvt)); -#endif -} diff --git a/hadaq/hwsam.c b/hadaq/hwsam.c deleted file mode 100644 index b43983b..0000000 --- a/hadaq/hwsam.c +++ /dev/null @@ -1,136 +0,0 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwsam.c,v 6.19 2003-05-14 13:54:44 muench Exp $"; - -#include -#include - -#include - -#include -#include - -#include - -#include - -#include "subevt.h" -#include "sam_defs.h" -#include "hwsam.h" -#define SAM_BUFOFFSET 8 -#define SAM_BUFSIZE 0x4000 - -int conHwSam(HwSam *my, const char *name, const Param *param) -{ - unsigned long cardBase; - int paramWasFound; - int i; - - assert(my != NULL); - - strcpy(my->name, name); - - Param_getInt(param, my->name, "cardbase", ¶mWasFound, &cardBase); - if (!paramWasFound) { - syslog(LOG_WARNING, - "Parameter %s(%s) not found, default = 0", my->name, "cardbase"); - cardBase = 0; - } - my->cram = malloc(sizeof(LVme)); - if (0 > conLVme(my->cram, cardBase, 0x10000L, 0x09, 0x0, 4)) { - syslog(LOG_ERR, "HwSam on %p not found", cardBase); - return -1; - } - my->regs = malloc(sizeof(LVme)); - if (0 > conLVme(my->regs, cardBase, 0x10000L, 0x09, 0x4, 4)) { - syslog(LOG_ERR, "HwSam on %p not found", cardBase); - return -1; - } - my->bankRequested = LVme_tstBitL(my->cram, CRR, 0); /* assumes that init is done by Sam */ - if (my->bankRequested == 1) { - syslog(LOG_ERR, "HwSam readout bit = 1, should be 0, intialization bug"); - } - my->currAddr = SAM_BUFSIZE; - my->endOfData = 0; - - return 0; -} - -void desHwSam(HwSam *my) -{ - desLVme(my->regs); - desLVme(my->cram); -} - -void HwSam_requestBuffer(HwSam *my) -{ - int i; - -#ifndef NDEBUG - syslog(LOG_DEBUG, "requestBuffer in"); -#endif - i = my->bankRequested == 1 ? 0 : 1; - do { - if (i == 1) { - LVme_setBitL(my->cram, CRR, 0); - } else { - LVme_clrBitL(my->cram, CRR, 0); - } - } while (LVme_tstBitL(my->cram, CRR, 0) != i); - - my->bankRequested = i; - my->currAddr = SAM_BUFSIZE * i + SAM_BUFOFFSET; - - /* to indicate a buffer request state which is cleared by getEndOfData */ - my->endOfData = 0; -#ifndef NDEBUG - syslog(LOG_DEBUG, "requestBuffer out"); -#endif -} - -void HwSam_getEndOfData(HwSam *my) -{ - /* CAUTION this ist just for clearing buffer request state, - if also makes the being always empty in HwSam_isEmpty which makes - hwmdc.c working by coincidence */ - - my->endOfData = 1; -} - -/* Subevent Header + some data */ -#define SAM_NODATASIZE 16 -int HwSam_readSubEvt(HwSam *my, void *subEvt) -{ - uint32_t *data = (uint32_t *) subEvt; - int lastAddr; - int currAddr = my->currAddr; - int size; - -#ifndef NDEBUG - syslog(LOG_DEBUG, "readSubEvt in"); - syslog(LOG_DEBUG, "currAddr: 0x%08x", currAddr); -#endif - size = LVme_getL(my->cram, currAddr); - lastAddr = currAddr + size; - - if (size > SAM_BUFSIZE - SAM_BUFOFFSET) { - syslog(LOG_CRIT, "subEvt throw away : %d, %d", size, SAM_BUFSIZE - SAM_BUFOFFSET); - /* damaged data, no repair possible, skip subevent*/ - return -1; - } - if (size <= SAM_NODATASIZE) { - /* skip dataless subevent */ - return 1; - } -#ifndef NDEBUG - syslog(LOG_DEBUG, "readSubEvt subevt: %s", SubEvt_2charP(subEvt)); -#endif - /* copy one sub evt from Sam to memory */ - *data++ = size; - while ((currAddr += 4) < lastAddr) { - *data++ = LVme_getL(my->cram, currAddr); - } - -#ifndef NDEBUG - syslog(LOG_DEBUG, "readSubEvt out"); -#endif - return 0; -} diff --git a/hadaq/hwship.c b/hadaq/hwship.c deleted file mode 100644 index 214e474..0000000 --- a/hadaq/hwship.c +++ /dev/null @@ -1,240 +0,0 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwship.c,v 6.30 2003-05-14 13:54:44 muench Exp $"; - -#define _POSIX_C_SOURCE 199309L -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "subevt.h" -#include "ipc_basis.h" -#include "hwship.h" - -static void toDbgBuf(HwShip *my) -{ - int i; - - /* copy one sub evt from RC to memory */ - for (i = 0; i < my->dbgBufLen; i++) { - my->dbgBuf[my->currDbgBuf][i] = LVme_getL(my->lvme, LVL2_OFFSET + i * sizeof(LVme_L)); - } - my->currDbgBuf = (my->currDbgBuf + 1 < my->nDbgBufs) ? my->currDbgBuf + 1 : 0; -} - -static void dumpDbgBufs(const HwShip *my) -{ - int i, j, bufNr; - FILE *f; - char n[512]; - - strcpy(n, my->name); - strcat(n, ".dump"); - - f = fopen(n, "w"); - assert(f != NULL); - - for (j = 0, bufNr = my->currDbgBuf; j < my->nDbgBufs; j++, bufNr = (bufNr + 1 < my->nDbgBufs) ? bufNr + 1 : 0) { - for (i = 0; i < my->dbgBufLen; i++) { - if (i % 4 == 0) { /* newline and the offset in the subEvt */ - fprintf(f, "\n%08x:", i * sizeof(uint32_t)); - } - fprintf(f, " 0x%08x", my->dbgBuf[bufNr][i]); - } - fputc('\n', f); - } - - fclose(f); -} - -int conHwShip(HwShip *my, const char *name, const Param *param) -{ - unsigned long cardBase; - int paramWasFound; - - assert(my != NULL); - - strcpy(my->name, name); - - Param_getInt(param, my->name, "cardbase", ¶mWasFound, &cardBase); - if (!paramWasFound) { - syslog(LOG_ERR, "Parameter %s(cardbase) not found", my->name); - return -1; - } - my->cardBase = cardBase; /* BUGBUG see header */ - my->lvme = malloc(sizeof(LVme)); - if (0 > conLVme(my->lvme, cardBase, 0x400000UL, 0x39UL, LVL2_OFFSET, 4)) { - syslog(LOG_ERR, "%s on %p not found", my->name, cardBase); - return -1; - } - /* Select VME-accessible register of LVL2-controller */ - LVme_setW(my->lvme, LVL2_SEL_VMEREG, LVL2_SELMEM_VMEREG); - - my->currAddr = 0x7fffffff; - my->endOfData = 0; - - - my->dbgBufLen = sizeof(uint16_t) * LVL2_SIZE / sizeof(uint32_t); - my->nDbgBufs = 3; - my->dbgBuf[0] = my->dbgBuf0; - my->dbgBuf[1] = my->dbgBuf1; - my->dbgBuf[2] = my->dbgBuf2; - my->currDbgBuf = 0; - my->isDoomed = 0; - - return 0; -} - -void desHwShip(HwShip *my) -{ - desLVme(my->lvme); - free(my->lvme); -} - -void HwShip_requestBuffer(HwShip *my) -{ - int i; - - syslog(LOG_DEBUG, "wait for data"); - while ((LVme_getL(my->lvme, LVL2_ACCESS_VMEREG) >> 16 & 0xffff) <= 2) { -#if 1 - struct timespec tS, *t = &tS; - t->tv_sec = 0; - t->tv_nsec = 020000000; - nanosleep(t, NULL); -#endif - } - syslog(LOG_DEBUG, "data available"); - i = my->bankRequested == 1 ? 0 : 1; - LVme_setL(my->lvme, LVL2_ACCESS_VMEREG, i); - - assert(i == LVme_tstBitL(my->lvme, LVL2_ACCESS_VMEREG, 6)); - my->bankRequested = i; - my->currAddr = LVL2_OFFSET + 0x4; - - /* to indicate a buffer request state which is cleared by getEndOfData */ - my->endOfData = 0; -} - -void HwShip_getEndOfData(HwShip *my) -{ - void toDbgBuf(HwShip *my); - my->endOfData = LVme_getL(my->lvme, LVL2_OFFSET) - 2 + LVL2_OFFSET; -#ifdef SHIP_DEBUG - toDbgBuf(my); -#endif -} - -int HwShip_readSubEvt(HwShip *my, void *subEvt) -{ - int readSubEvtR; - unsigned long size; - unsigned long lastAddr; - - assert(my->bankRequested == bankConfirmed(my)); - assert(my->endOfData > 0); - assert(my->endOfData <= LVL2_OFFSET + sizeof(uint16_t) * LVL2_SIZE); - - size = LVme_getL(my->lvme, my->currAddr); - lastAddr = my->currAddr + size; - -#ifndef SHIP_DEBUG - assert(size <= HwShip_maxSubEvtSize(my)); -#else - if (my->isDoomed) { - dumpDbgBufs(my); - syslog(LOG_EMERG, "%s: was doomed in previous buffer, dump buffer again and abort", my->name); - abort(); - } - if (size >= HwShip_maxSubEvtSize(my)) { - dumpDbgBufs(my); - syslog(LOG_EMERG, "%s: corrupted subEvt, dump buffer and try one more", my->name); - my->currAddr = my->endOfData; - my->isDoomed = 1; - SubEvt_setDecoding(subEvt, 0x00020001); - SubEvt_setSize(subEvt, 0x10); - SubEvt_setId(subEvt, 399 | 0x80000000); - SubEvt_setTrigNr(subEvt, 0); - return 0; - } -#endif - - if (size <= HwShip_minSubEvtSize(my)) { - my->currAddr = lastAddr; - readSubEvtR = 1; - syslog(LOG_DEBUG, "subEvt: empty, skipped"); - } else { - uint32_t *data = (uint32_t *) subEvt; - - /* copy one sub evt from RC to memory */ - while (my->currAddr < lastAddr) { - *data++ = LVme_getL(my->lvme, my->currAddr); - my->currAddr += 4; - } - readSubEvtR = 0; -#ifndef NDEBUG - syslog(LOG_DEBUG, "subEvt: %s", SubEvt_2charP(subEvt)); -#endif - } - - return readSubEvtR; -} - -int HwShip_fillLBmaChain(HwShip *my, LBma *lbma, unsigned long virtOff) -{ - int fillLBmeChainR; - unsigned long size; - unsigned long lastAddr; - - assert(my->bankRequested == bankConfirmed(my)); - assert(my->endOfData > 0); - assert(my->endOfData <= LVL2_OFFSET + sizeof(uint16_t) * LVL2_SIZE); - - size = LVme_getL(my->lvme, my->currAddr); - lastAddr = my->currAddr + size; - -#ifndef SHIP_DEBUG - assert(size <= HwShip_maxSubEvtSize(my)); -#else - if (my->isDoomed) { - dumpDbgBufs(my); - syslog(LOG_EMERG, "%s: was doomed in previous buffer, dump buffer again and abort", my->name); - abort(); - } - if (size >= HwShip_maxSubEvtSize(my)) { - dumpDbgBufs(my); - syslog(LOG_EMERG, "%s: corrupted subEvt, dump buffer and try one more", my->name); - my->currAddr = my->endOfData; - my->isDoomed = 1; - SubEvt_setDecoding(subEvt, 0x00020001); - SubEvt_setSize(subEvt, 0x10); - SubEvt_setId(subEvt, 399 | 0x80000000); - SubEvt_setTrigNr(subEvt, 0); - return 0; - } -#endif - - if (size <= HwShip_minSubEvtSize(my)) { - fillLBmeChainR = 0; - } else { - if (0 > LBma_readChain(lbma, virtOff, my->currAddr + my->cardBase, size / 4, 0x3bUL)) { - fillLBmeChainR = -1; - } else { -#ifndef NDEBUG - syslog(LOG_DEBUG, "subEvt: %s", SubEvt_2charP(LVme_getPtrL(my->lvme, my->currAddr))); -#endif - fillLBmeChainR = size; - } - } - my->currAddr = lastAddr; - - return fillLBmeChainR; -} diff --git a/hadaq/hwship.h b/hadaq/hwship.h deleted file mode 100644 index e72827b..0000000 --- a/hadaq/hwship.h +++ /dev/null @@ -1,72 +0,0 @@ - -#ifndef HwShip_H -#define HwShip_H - -#undef SHIP_DEBUG - -#include - -#include -#include "ipc_basis.h" - -typedef struct HwShipS { - char name[12]; - LVme *lvme; - unsigned long cardBase; /* BUGBUG workaround for stupid lvme design */ - unsigned long currAddr; - int endOfData; - int bankRequested; - int currDbgBuf; - uint32_t dbgBuf0[sizeof(uint16_t) * LVL2_SIZE / sizeof(uint32_t)]; - uint32_t dbgBuf1[sizeof(uint16_t) * LVL2_SIZE / sizeof(uint32_t)]; - uint32_t dbgBuf2[sizeof(uint16_t) * LVL2_SIZE / sizeof(uint32_t)]; - size_t dbgBufLen; - uint32_t *dbgBuf[3]; - int nDbgBufs; - int isDoomed; -} - -HwShip; - - -int conHwShip(HwShip *my, const char *name, const Param *param); -void desHwShip(HwShip *my); - -static size_t HwShip_minSubEvtSize(const HwShip *my) -{ - return 16; -} - -static size_t HwShip_maxSubEvtSize(const HwShip *my) -{ - return 3088; -} - -void HwShip_requestBuffer(HwShip *my); - -static int HwShip_isEmpty(HwShip *my) -{ - return my->currAddr >= my->endOfData; -} - -int HwShip_readSubEvt(HwShip *my, void *subEvt); - -static int HwShip_isBufRequested(HwShip *my) -{ - return my->endOfData == 0; -} - -void HwShip_getEndOfData(HwShip *my); - -static int bankConfirmed(HwShip *my) -{ - return LVme_tstBitL(my->lvme, LVL2_ACCESS_VMEREG, 7); -} - -static int HwShip_isBusy(HwShip *my) -{ - return my->bankRequested != bankConfirmed(my); -} - -int HwShip_fillLBmaChain(HwShip *my, LBma *lbma, unsigned long virtOff); -#endif diff --git a/hadaq/hwshow.c b/hadaq/hwshow.c deleted file mode 100644 index a81904b..0000000 --- a/hadaq/hwshow.c +++ /dev/null @@ -1,267 +0,0 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwshow.c,v 6.36 2003-06-16 08:26:38 muench Exp $"; - -#define SHIP_BLT - -#define _POSIX_C_SOURCE 199309L -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include "subevt.h" -#include "hwship.h" - -struct HardwareS { - size_t maxSubEvtSize; - int nShips; - HwShip **ship; -#ifdef SHIP_BLT - LBma *lbma; - LVme_L *buf; -#endif -}; - -#include "hardware.h" - -size_t Hardware_maxSubEvtSize(const Hardware *my) -{ - return my->maxSubEvtSize; -} - -int Hardware_inSpill(const Hardware *my) -{ - return 0; -} - -Hardware *newHardware(const char *subsystem) -{ - Hardware *my; - Param paramS, *param = ¶mS; - int i; - const char *ss; - char cardsS[PARAM_MAX_ARRAY_LEN][PARAM_MAX_VALUE_LEN]; - char *cards[PARAM_MAX_ARRAY_LEN]; - int nCards; - - for (i = 0; i < PARAM_MAX_ARRAY_LEN; i++) { - cards[i] = cardsS[i]; - } - - if (strcmp(subsystem, "unknown") == 0) { - ss = "show"; - syslog(LOG_NOTICE, "Subsystem not set, defaulting to %s", ss); - } else { - ss = subsystem; - } - - if (0 > conSetupParam(param, getenv("DAQ_SETUP"))) { - syslog(LOG_ERR, "Construction of parameter source failed: %s", strerror(errno)); - return NULL; - } - if (0 > getCards(param, ss, "ipc", &nCards, cards)) { - syslog(LOG_ERR, "Retrieval of card list failed"); - return NULL; - } - my = malloc(sizeof(Hardware)); - my->ship = malloc(nCards * sizeof(HwShip *)); - my->nShips = nCards; - - my->maxSubEvtSize = SubEvt_hdrSize(); - - for (i = 0; i < my->nShips; i++) { - my->ship[i] = malloc(sizeof(HwShip)); - if (0 > conHwShip(my->ship[i], cards[i], param)) { - syslog(LOG_ERR, "Construction of card %s failed:%s", cards[i], strerror(errno)); - return NULL; - } - my->maxSubEvtSize += HwShip_maxSubEvtSize(my->ship[i]); - } - -#ifdef SHIP_BLT - my->lbma = malloc(sizeof(LBma)); - if (0 > conLBma(my->lbma, 0, Hardware_maxSubEvtSize(my), 0x3b)) { - syslog(LOG_ERR, "%s:%d:%s", __FILE__, __LINE__, strerror(errno)); - return NULL; - } - my->buf = LBma_getPtrL(my->lbma, 0); -#endif - - desParam(param); - return my; -} - -void deleteHardware(Hardware *my) -{ - int i; - -#ifdef SHIP_BLT - desLBma(my->lbma); - free(my->lbma); -#endif - for (i = 0; i < my->nShips; i++) { - desHwShip(my->ship[i]); - free(my->ship[i]); - } - - free(my->ship); - free(my); -} - -void Hardware_waitForTrigger(Hardware *my, void *subEvt) -{ - int i; - int nRequests = 0; - int nPoll = 0; - const int nPollMax = 60 / my->nShips; - - for (i = 0; i < my->nShips; i++) { - if (HwShip_isEmpty(my->ship[i])) { - HwShip_requestBuffer(my->ship[i]); - ++nRequests; - } - } - - do { - for (i = 0; i < my->nShips; i++) { - if (HwShip_isBufRequested(my->ship[i])) { - if (!HwShip_isBusy(my->ship[i])) { - HwShip_getEndOfData(my->ship[i]); - --nRequests; - } - } - } -#if 1 -/* -* This sleep prevents a tight loop which stops work on real -* time systems if the priority of readout is not lowered. -* When not using the sleep use option -p -2 for daq_readout. -*/ - if (nRequests == my->nShips && nPoll++ >= nPollMax) { - struct timespec tS, *t = &tS; - t->tv_sec = 0; - t->tv_nsec = 020000000; - nanosleep(t, NULL); - } -#endif - } while (nRequests); -} - -#ifdef SHIP_BLT -void Hardware_readout(Hardware *my, void *partEvt) -{ - static unsigned long trigNr = 0; - - int i; - void *subEvt; - int dataError; - unsigned trigTag; - unsigned long offset; - - /* prepare BMA chain by scanning all VME cards */ - if (0 > LBma_resetChain(my->lbma)) { - syslog(LOG_ERR, "%s:%d:%s", __FILE__, __LINE__, strerror(errno)); - } - offset = 0; - for (i = 0; i < my->nShips; i++) { - int size; - - size = HwShip_fillLBmaChain(my->ship[i], my->lbma, offset); - if (size > 0) { - offset += size + 0x7 & ~0x7; - } - } - assert(SubEvt_hdrSize() + offset <= Hardware_maxSubEvtSize(my)); - - /* read data via VME */ - if (0 > LBma_startChain(my->lbma)) { - syslog(LOG_ERR, "%s:%d:%s", __FILE__, __LINE__, strerror(errno)); - } - if (0 > LBma_waitChain(my->lbma)) { - syslog(LOG_ERR, "%s:%d:%s", __FILE__, __LINE__, strerror(errno)); - } - memcpy(SubEvt_data(partEvt), my->buf, offset); - - /* check consistency and fill crate event header */ - SubEvt_setSize(partEvt, SubEvt_hdrSize() + offset); - SubEvt_setDecoding(partEvt, SubEvtDecoding_SubEvts); - dataError = 0; - trigTag = 0x100; - for (subEvt = SubEvt_data(partEvt); subEvt < SubEvt_end(partEvt); subEvt = SubEvt_next(partEvt, subEvt)) { - if (SubEvt_dataError(subEvt)) { - dataError = 1; - } - if (trigTag > 0xff) { - trigTag = SubEvt_trigNr(subEvt) & 0xff; - } else { - if (trigTag != (SubEvt_trigNr(subEvt) & 0xff)) { - dataError = 1; - syslog(LOG_ERR, "(%s)Trigger tag mismatch: 0x%08x != 0x%08x", my->ship[i]->name, trigTag, SubEvt_trigNr(subEvt)); - } - } - } - SubEvt_setId(partEvt, 0); - if (dataError) { - SubEvt_setDataError(partEvt); - } - SubEvt_setTrigNr(partEvt, trigNr << 8 | trigTag); - - trigNr++; - - syslog(LOG_DEBUG, "partEvt: %s", SubEvt_2charP(partEvt)); -} - -#else -void Hardware_readout(Hardware *my, void *partEvt) -{ - int i; - int firstShip = -1; - void *subEvt = SubEvt_data(partEvt); - static unsigned long trigNr = 0; - unsigned trigTag; - int dataError; - - /* init partial event, necessary for SubEvt_next() */ - SubEvt_setDecoding(partEvt, SubEvtDecoding_SubEvts); - dataError = 0; - SubEvt_setId(partEvt, 0); - - /* read all ships, check for common trigger tag */ - for (i = 0; i < my->nShips; i++) { - if (HwShip_readSubEvt(my->ship[i], subEvt) == 0) { - if (SubEvt_dataError(subEvt)) { - dataError = 1; - } - if (firstShip < 0) { - trigTag = SubEvt_trigNr(subEvt) & 0xff; - firstShip = i; - } else { - if (trigTag != (SubEvt_trigNr(subEvt) & 0xff)) { - dataError = 1; - syslog(LOG_ERR, - "(%s)Trigger tag mismatch: 0x%08x (%d) != 0x%08x", - my->ship[i]->name, trigTag, firstShip, SubEvt_trigNr(subEvt)); - } - } - subEvt = SubEvt_next(partEvt, subEvt); - } - } - - if (dataError) { - SubEvt_setDataError(partEvt); - } - SubEvt_setTrigNr(partEvt, trigNr << 8 | trigTag); - SubEvt_setSize(partEvt, (char *) subEvt - (char *) partEvt); - trigNr++; - - assert(SubEvt_size(partEvt) <= Hardware_maxSubEvtSize(my)); - syslog(LOG_DEBUG, "partEvt: %s", SubEvt_2charP(partEvt)); -} - -#endif diff --git a/hadaq/hwsoft.c b/hadaq/hwsoft.c deleted file mode 100644 index c70ef2f..0000000 --- a/hadaq/hwsoft.c +++ /dev/null @@ -1,173 +0,0 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwsoft.c,v 6.29 2003-05-14 13:54:44 muench Exp $"; - - -#define _POSIX_C_SOURCE 199309L -#include -#include - -#include - -#include - -#include "subevt.h" - -struct HardwareS { - size_t maxSubEvtSize; -}; - -#include "hardware.h" - -size_t Hardware_maxSubEvtSize(const Hardware *my) -{ - return my->maxSubEvtSize; -} - -#include - -#include - - -int Hardware_inSpill(const Hardware *my) -{ - return 0; -} - -Hardware *newHardware(void) -{ - Hardware *my; - Param *param; - int paramWasFound; - unsigned long size; - - my = malloc(sizeof(Hardware)); - my->maxSubEvtSize = 2 * SubEvt_hdrSize() + 5004 * sizeof(uint32_t); - - param = malloc(sizeof(Param)); - conSetupParam(param, getenv("DAQ_SETUP")); - Param_getInt(param, "soft", "size", ¶mWasFound, &size); - if (!paramWasFound) { - syslog(LOG_WARNING, - "Parameter %s(%s) not found, defaulting to 0", "soft", "size"); - size = 0; - } - desParam(param); - return my; -} - -void deleteHardware(Hardware *my) -{ - free(my); -} - -void Hardware_waitForTrigger(Hardware *my, void *partEvt) -{ -#if 0 - struct timespec tS, *t = &tS; - - t->tv_sec = 0; - t->tv_nsec = 100000000; - nanosleep(t, NULL); -#endif -} - -void readoutTrig(void *subEvt) -{ - uint32_t *data; - uint32_t *first; - static uint8_t trigTag; - size_t size; - - SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData); - - data = SubEvt_data(subEvt); - first = data; - - if (trigTag % 2 == 0) { - *data++ = 0x1; - } else { - *data++ = 0x2; - } - - SubEvt_setSize(subEvt, (char *) data - (char *) subEvt); - SubEvt_setId(subEvt, SubEvtId_trigCode); - SubEvt_setTrigNr(subEvt, trigTag); - syslog(LOG_DEBUG, "subEvt: %s", SubEvt_2charP(subEvt)); - - trigTag++; -} - -void readoutSoft(void *subEvt) -{ - uint32_t *data; - uint32_t *first; - static uint8_t trigTag; - uint32_t id; - size_t size; - - SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData); - - data = SubEvt_data(subEvt); - first = data; - - *data++ = 0x55aa00FF; - *data++ = 0x55aa00FF; - *data++ = 0x55aa00FF; -#if 1 - data += (int) ((1000.0 * rand()) / RAND_MAX); - data += (int) ((1000.0 * rand()) / RAND_MAX); - data += (int) ((1000.0 * rand()) / RAND_MAX); - data += (int) ((1000.0 * rand()) / RAND_MAX); - data += (int) ((1000.0 * rand()) / RAND_MAX); -#endif - - size = (char *) data - (char *) subEvt; - id = SubEvtId_test1; -#if 1 - if (size > 5000) { - size = 5000; - id |= 0x80000000; - } -#endif - SubEvt_setSize(subEvt, size); - SubEvt_setId(subEvt, id); - SubEvt_setTrigNr(subEvt, trigTag); - syslog(LOG_DEBUG, "subEvt: %s", SubEvt_2charP(subEvt)); - - trigTag++; -} - -void Hardware_readout(Hardware *my, void *partEvt) -{ - void *subEvt = SubEvt_data(partEvt); - static uint32_t trigNr; - static uint8_t trigTag; - uint8_t trigCode; - int err = 0; - - SubEvt_setDecoding(partEvt, SubEvtDecoding_SubEvts); - - readoutTrig(subEvt); - if (SubEvt_dataError(subEvt)) { - err = 1; - } - if (trigTag > SubEvt_trigNr(subEvt)) { - trigNr++; - } - trigTag = SubEvt_trigNr(subEvt); - trigCode = SubEvt_dataValue(subEvt, 0); - subEvt = SubEvt_next(partEvt, subEvt); - - readoutSoft(subEvt); - if (SubEvt_dataError(subEvt)) { - err = 1; - } - subEvt = SubEvt_next(partEvt, subEvt); - - SubEvt_setId(partEvt, trigCode); - if (err) { - SubEvt_setDataError(partEvt); - } - SubEvt_setSize(partEvt, (char *) subEvt - (char *) partEvt); - SubEvt_setTrigNr(partEvt, (trigNr << 8) | trigTag); - syslog(LOG_DEBUG, "partEvt: %s", SubEvt_2charP(partEvt)); -} diff --git a/hadaq/hwtip.c b/hadaq/hwtip.c deleted file mode 100644 index 4b180c0..0000000 --- a/hadaq/hwtip.c +++ /dev/null @@ -1,308 +0,0 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtip.c,v 1.35 2003-07-09 16:21:03 hadaq Exp $"; - -#include -#include -#include - -#include -#include - -#include -#include - -#include - -#include - -#include "hwtip.h" - - -#define min(x,y) ( (x>y) ? y : x ) -#define max(x,y) ( (x>y) ? x : y ) - - -/* undef if you don't want PRINTOUT if there was an error in the tdc data, mt*/ -#define BUFFER_PRINTOUT_ENABLED - -static int ourVmeAccessOK; - -void sigbusHandler(int sig) -{ - struct timespec tS, *t = &tS; - - ourVmeAccessOK = 0; - t->tv_sec = 0; - t->tv_nsec = 20000000; - nanosleep(t, NULL); -} - - -#define TIP_BUFSIZE 0x40000 -int conHwTip(HwTip *my, const char *name, const Param *param) -{ - unsigned long cardBase; - int paramWasFound; - int i; - - assert(my != NULL); - - signal(SIGBUS, sigbusHandler); - strcpy(my->name, name); - - Param_getInt(param, my->name, "cardbase", ¶mWasFound, &cardBase); - if (!paramWasFound) { - syslog(LOG_WARNING, "Parameter %s(%s) not found, default = 0", my->name, "cardbase"); - cardBase = 0; - } - syslog(LOG_INFO, "conc cardbase %.8x", cardBase); - - my->lvme = (LVme *) malloc(sizeof(LVme)); - if (0 > conLVme(my->lvme, cardBase, 0x3000000UL, 0x09UL, 0, 0)) { - syslog(LOG_ERR, "HwTip on %p not found", cardBase); - return -1; - } - my->currAddr = 0x7fffffff; /* start at the end */ - my->bankRequested = 1; /* of the empty bank */ - my->endOfData = 0; - my->daqRq = _LVL2_PIPE2_RQ; - my->daqGr = _LVL2_PIPE2_GR; - my->fifo = MEMBASE + TIP_BUFSIZE; - - return 0; -} - -void desHwTip(HwTip *my) -{ - desLVme(my->lvme); - signal(SIGBUS, SIG_DFL); -} - -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 = 20000000; - nanosleep(t, NULL); -#endif - } - if (my->bankRequested == 0) { - my->bankRequested = 1; - my->daqRq = _LVL2_PIPE2_RQ; - my->daqGr = _LVL2_PIPE2_GR; - my->fifo = MEMBASE + TIP_BUFSIZE; - } else { - my->bankRequested = 0; - my->daqRq = _LVL2_PIPE1_RQ; - my->daqGr = _LVL2_PIPE1_GR; - my->fifo = MEMBASE; - } - - LVme_setBitL(my->lvme, CONFIG1BASE + CFG_MASTER_CONTROL, my->daqRq); - - my->currAddr = my->fifo + 0x4; -} - - - - -int HwTip_readSubEvt(HwTip *my, void *subEvt) -{ - -#define SUBHEADER_STATE (1) -#define TDC_HEADER_STATE (2) -#define TDC_DATA_STATE (3) -#define TDC_TRAILER_STATE (4) -#define LATCH_STATE (5) -#define IGNORE_ALL_STATE (6) - - - uint32_t *data = (uint32_t *) subEvt; - unsigned long currAddr = my->currAddr; - unsigned long header; - int size; - int byteSize; - int statusWord, crateNumber = 0xff; - int foundCBLTTrailerFlag = 0; - int foundCBLTHeaderFlag = 0; - int errorFlag = 0; - int calEvtFlag = 0; - unsigned long dataWord; - unsigned long tdcCounter = 0; - unsigned long tdcEventCounter, trigTag, evtC, subEvtHeader; - int arrayCounter = 0, i; - unsigned long presentState; - -#ifdef BUFFER_PRINTOUT_ENABLED - unsigned long tempArray[500]; -#endif - char str[200], buff[200]; - unsigned long lastGeo = 0, currentGeo; - unsigned long lastCrate = 0; - - header = LVme_getL(my->lvme, currAddr); - size = header & 0xfff; - byteSize = size << 2; - - my->currAddr += byteSize; - - if (byteSize > (TIP_BUFSIZE - my->currAddr + my->fifo)) { - syslog(LOG_ERR, "size too large! size: %.8x ", size); - size = (TIP_BUFSIZE - my->currAddr + my->fifo) >> 2; - header &= 0x80000000; - } - trigTag = ((header >> 16) & 0xff); - - calEvtFlag = ((header >> 24) & 0xf) != 0x9; - - presentState = TDC_HEADER_STATE; - - /* copy one sub evt from RC to memory */ - while (--size) { - - /* *data++ = LVme_getL(my->lvme, currAddr+=4); */ - dataWord = LVme_getL(my->lvme, currAddr += 4); - *data++ = dataWord; -#ifdef BUFFER_PRINTOUT_ENABLED - tempArray[arrayCounter++] = dataWord; -#endif - - statusWord = ((dataWord >> 24) & 0x6); - - - if (presentState == TDC_DATA_STATE) { - if (statusWord == 4) { - /* Trailer */ - presentState = TDC_TRAILER_STATE; - } - } - - if (presentState == TDC_HEADER_STATE) { - if (statusWord == 0) { - /* Ingo TIP Header */ - presentState = SUBHEADER_STATE; - } - } - - switch (presentState) { - case SUBHEADER_STATE: - presentState = IGNORE_ALL_STATE; - - break; - case TDC_HEADER_STATE: - tdcCounter++; - crateNumber = ((dataWord >> 16) & 0xff); - - if (lastCrate == 0) { - lastCrate = crateNumber; - } - - if (lastCrate != crateNumber) { - /* reset last Geo, if change of crate */ - lastGeo = 0; - } - - if (statusWord != 2) { - syslog(LOG_ERR, "status word of tdc not 2, for header it should be 2, header: %.8x, data: %.8x", header, dataWord); - errorFlag = 1; - } - if (foundCBLTHeaderFlag == 1) { - syslog(LOG_ERR, "header: %.8x, at least two headers came without a trailer, data: %.8x", header, dataWord); - errorFlag = 1; - } - - currentGeo = (dataWord >> 27) & 0x1f; - - if (lastGeo == 0) { - lastGeo = currentGeo - 1; - } - if (lastGeo >= currentGeo) { - syslog(LOG_ERR, - "header: %.8x, Geo not incremental, crate: %d data: %.8x, lastGeo %d, currentGeo %d", - header, crateNumber, dataWord, lastGeo, currentGeo); - errorFlag = 1; - } - - foundCBLTHeaderFlag = 1; - - presentState = TDC_DATA_STATE; - break; - - - case TDC_DATA_STATE: - /* data word, nothing to do..., but check for trailer */ - break; - - case TDC_TRAILER_STATE: - tdcEventCounter = dataWord & 0xffffff; - foundCBLTTrailerFlag = 1; - if (foundCBLTTrailerFlag == 1 && foundCBLTHeaderFlag == 0) { - syslog(LOG_ERR, "header: %.8x, trailer came before header! data: %.8x", header, dataWord); - errorFlag = 1; - } - evtC = (tdcEventCounter & 0xff); - - if ((tdcEventCounter & 0xff) != trigTag) { - /* if( (max(evtC, trigTag) - min(evtC, trigTag) >=2) && (max(evtC, trigTag) - min(evtC, trigTag) <= 0xfe )) { */ - syslog(LOG_ERR, - "header: %.8x, crate: %d, tdc_num: %d, tag (%.8x) != EvtCounter (%.8x), dataWord: %.8x ", - header, crateNumber, tdcCounter, trigTag, tdcEventCounter, dataWord); - errorFlag = 1; - } - - foundCBLTTrailerFlag = 0; - foundCBLTHeaderFlag = 0; - - presentState = TDC_HEADER_STATE; - break; - - case LATCH_STATE: - - break; - - case IGNORE_ALL_STATE: - break; - - } /* End switch */ - - - - /* TEST COUNTER */ -#if 0 - if ((dataWord & 0xf) != 0) { - syslog(LOG_ERR, "TEST: %.8x != 1", dataWord); - errorFlag = 1; - } -#endif - - - } - - - - -#ifdef BUFFER_PRINTOUT_ENABLED - if (errorFlag) { - str[0] = 0; - for (i = 0; i < arrayCounter; i++) { - sprintf(buff, "%.8x ", tempArray[i]); - strcpy((char *) ((unsigned int) str + strlen(str)), buff); - if (((i + 1) % 4) == 0) { - syslog(LOG_ERR, str); - str[0] = 0; - } - } - if ((i % 4)) { - syslog(LOG_ERR, str); - str[0] = 0; - } - } -#endif - - return header; - -} diff --git a/hadaq/hwtrig.c b/hadaq/hwtrig.c deleted file mode 100644 index 00b4c38..0000000 --- a/hadaq/hwtrig.c +++ /dev/null @@ -1,285 +0,0 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtrig.c,v 6.38 2003-07-09 16:13:09 hadaq Exp $"; - -#define _POSIX_C_SOURCE 199309L -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "subevt.h" -#include "hardware.h" - -#include "hwtip.h" - -/* Number of TOF crates */ -#define NCRATES 1 - -#define MU_EVT_COUNT 0x0e8014UL -#define MU_FIFO 0x0000UL -#define MU_FIFO_STATUS 0x0008UL - -struct HardwareS { - LVme *lvme0; - LVme *lvme4; - LVme *lvme6; - LVme_L evtCount; - LVme_L old_evtCount; - HwTip *tip; - size_t maxSubEvtSize; - int nConcs; -}; - -size_t Hardware_maxSubEvtSize(const Hardware *my) -{ - return my->maxSubEvtSize; -} - -int Hardware_inSpill(const Hardware *my) -{ - return 0; -} - -Hardware *newHardware(const char *subsystem) -{ - Hardware *my; - Param paramS, *param = ¶mS; - int i; - const char *ss; - char cardsS[PARAM_MAX_ARRAY_LEN][PARAM_MAX_VALUE_LEN]; - char *cards[PARAM_MAX_ARRAY_LEN]; - char mu[PARAM_MAX_VALUE_LEN]; - char conc[PARAM_MAX_VALUE_LEN]; - int nCards; - unsigned long cardBase; - int paramWasFound; - - for (i = 0; i < PARAM_MAX_ARRAY_LEN; i++) { - cards[i] = cardsS[i]; - } - - if (strcmp(subsystem, "unknown") == 0) { - ss = "trigconc"; - syslog(LOG_NOTICE, "Subsystem not set, defaulting to %s", ss); - } else { - ss = subsystem; - } - - if (0 > conSetupParam(param, getenv("DAQ_SETUP"))) { - syslog(LOG_ERR, "Construction of parameter source failed: %s", strerror(errno)); - return NULL; - } - if (0 > getCards(param, ss, "mu", &nCards, cards)) { - syslog(LOG_ERR, "Retrieval of card list failed"); - return NULL; - } - strcpy(mu, cards[0]); - if (0 > getCards(param, ss, "tip", &nCards, cards)) { - syslog(LOG_ERR, "Retrieval of card list failed"); - return NULL; - } - strcpy(conc, cards[0]); - - my = malloc(sizeof(Hardware)); - my->maxSubEvtSize = (SubEvt_hdrSize() + 2 * 500 * sizeof(uint16_t)) /* MU */ - +(NCRATES * (SubEvt_hdrSize() + 620 * sizeof(uint32_t))); /* CONC */ - my->nConcs = nCards; - - my->evtCount = 0; - my->old_evtCount = 0; - - Param_getInt(param, mu, "cardbase", ¶mWasFound, &cardBase); - if (!paramWasFound) { - syslog(LOG_ERR, "Parameter %s(cardbase) not found, default = 0", mu); - return NULL; - } - syslog(LOG_INFO, "MU cardbase %.8x", cardBase); - - my->lvme0 = malloc(sizeof(LVme)); - if (0 > conLVme(my->lvme0, cardBase, 0x100000UL, 0x09UL, 0, 0)) { - syslog(LOG_ERR, "MU on %p not found", cardBase); - return NULL; - } - my->lvme4 = malloc(sizeof(LVme)); - if (0 > conLVme(my->lvme4, cardBase + 0x4000000, 0x10000UL, 0x09UL, 0, 0)) { - syslog(LOG_ERR, "MU on %p not found", cardBase); - return NULL; - } - my->lvme6 = malloc(sizeof(LVme)); - if (0 > conLVme(my->lvme6, cardBase + 0x6000000, 0x10000UL, 0x09UL, 0, 0)) { - syslog(LOG_ERR, "MU on %p not found", cardBase); - return NULL; - } - if (my->nConcs > 0) { - my->tip = malloc(sizeof(HwTip)); - if (0 > conHwTip(my->tip, conc, param)) { - syslog(LOG_ERR, "Construction of card %s failed:%s", conc, strerror(errno)); - return NULL; - } - } - desParam(param); - return my; -} - -void deleteHardware(Hardware *my) -{ - if (my->nConcs > 0) { - desHwTip(my->tip); - free(my->tip); - } - desLVme(my->lvme6); - free(my->lvme6); - desLVme(my->lvme4); - free(my->lvme4); - desLVme(my->lvme0); - free(my->lvme0); - free(my); -} - -void Hardware_waitForTrigger(Hardware *my, void *partEvt) -{ - - syslog(LOG_DEBUG, "check if MU is ready"); - /* - only read the Matching Unit Count register, when all pending - events are processed. This is recommended, because it is very - "expensive" to read from an Sharc Register in the Matching Unit. - */ - - if (my->evtCount == my->old_evtCount) { - while ((my->old_evtCount = LVme_getL(my->lvme0, MU_EVT_COUNT)) == my->evtCount) { - /* wait for some time for not disturbing the DSP */ - struct timespec tS, *t = &tS; - t->tv_sec = 0; - t->tv_nsec = 20000000UL; - nanosleep(t, NULL); - - } - syslog(LOG_DEBUG, "evtCount: %d, oldEvtCount: %d", my->evtCount, my->old_evtCount); - } - my->evtCount++; - - if (my->nConcs > 0) { - syslog(LOG_DEBUG, "check if CONC is ready"); - - if (HwTip_isEmpty(my->tip)) { - HwTip_requestBuffer(my->tip); - while (HwTip_isBusy(my->tip)) { - /* wait for some time for not disturbing the DSP */ - struct timespec tS, *t = &tS; - t->tv_sec = 0; - t->tv_nsec = 20000000UL; - nanosleep(t, NULL); - } - HwTip_getEndOfData(my->tip); - } - } -} - -int readoutTrig(Hardware *my, void *subEvt) -{ - 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); - } - /* - 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 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; - *++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; - - while (data < dataEnd) { - *data++ = (uint16_t) LVme_getW(my->lvme4, MU_FIFO); - } - - syslog(LOG_DEBUG, "subEvt: %s", SubEvt_2charP(subEvt)); - - /* return trigger code = first MU data word */ - return *(uint16_t *) header; -} - -void Hardware_readout(Hardware *my, void *partEvt) -{ - void *subEvt = SubEvt_data(partEvt); - static unsigned long trigNr = 0; - unsigned trigTag; - int trigCode; - int i; - int dataError; - - SubEvt_setDecoding(partEvt, SubEvtDecoding_SubEvts); - dataError = 0; - - syslog(LOG_DEBUG, "read out MU"); - trigCode = readoutTrig(my, subEvt); - if (SubEvt_dataError(subEvt)) { - dataError = 1; - } - SubEvt_setId(partEvt, trigCode); - trigTag = SubEvt_trigNr(subEvt) & 0xff; - - subEvt = SubEvt_next(partEvt, subEvt); - - if (my->nConcs > 0) { - uint32_t *data = SubEvt_data(subEvt); - int header; - uint32_t *subEvtInfo; - - syslog(LOG_DEBUG, "read out CONC"); - SubEvt_setDecoding(subEvt, SubEvtDecoding_32bitData); - SubEvt_setId(subEvt, 0x19c); - SubEvt_setTrigNr(subEvt, trigTag); - - subEvtInfo = data++; /* leave space for an info word */ - - for (i = 0; i < NCRATES; i++) { - header = HwTip_readSubEvt(my->tip, data); - if (SubEvt_dataError(subEvt)) { - dataError = 1; - } - if (trigTag != ((header >> 16) & 0xff)) { - dataError = 1; - syslog(LOG_ERR, "(%s)Trigger tag mismatch: (crate: %d) 0x%08x (MU) != 0x%08x", - my->tip->name, i, trigTag, (header >> 16) & 0xff); - } - data += (header & 0xfff) - 1; - } - - *subEvtInfo = (header >> 16) | ((trigCode << 12) & 0xff000); - SubEvt_setSize(subEvt, (char *) data - (char *) subEvt); - - subEvt = SubEvt_next(partEvt, subEvt); - } - if (dataError) { - SubEvt_setDataError(partEvt); - } - SubEvt_setTrigNr(partEvt, trigNr << 8 | trigTag); - SubEvt_setSize(partEvt, (char *) subEvt - (char *) partEvt); - trigNr++; - - assert(SubEvt_size(partEvt) <= my->maxSubEvtSize); - - syslog(LOG_DEBUG, "partEvt: %s", SubEvt_2charP(partEvt)); -} diff --git a/hadaq/sam_defs.h b/hadaq/sam_defs.h deleted file mode 100644 index b283f8c..0000000 --- a/hadaq/sam_defs.h +++ /dev/null @@ -1,10 +0,0 @@ - -#ifndef SAM_DEFS_H -#define SAM_DEFS_H - -#define VMSR 0x8004 -#define KSR 0x0004 -#define CRAM 0x0000 -#define CRR 0x8000 - -#endif diff --git a/hadaq/tof_defs.h b/hadaq/tof_defs.h deleted file mode 100644 index 501156c..0000000 --- a/hadaq/tof_defs.h +++ /dev/null @@ -1,194 +0,0 @@ - -/**** Headerfile for TOF-IPU registers */ -/**** created: E.Lins 13-Jan-2000 */ - -/* $Id: tof_defs.h,v 1.6 2003-05-14 13:54:46 muench Exp $ */ -/* $Source: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/tof_defs.h,v $ */ - - -/****************************************************************/ - -/* Onboard components base addresses... */ - -/* the DSPs */ -#define SHARC1BASE 0x01000000 -#define SHARC2BASE 0x01200000 -#define SHARC3BASE 0x01400000 -#define SHARC4BASE 0x01600000 -#define SHARC5BASE 0x01800000 -#define SHARC6BASE 0x01a00000 - -/* the other stuff */ -#define MEMBASE 0x02000000 -#define MEMTOP 0x020f9fff - -#define SCV64BASE 0x02400000 -#define DISPBASE 0x02500000 -#define STATUSBASE 0x02600000 -#define FIFOBASE 0x02700000 -#define LINKBASE 0x02800000 - - - -/****************************************************************/ - -/* special purpose area in internal memory */ -/* DSP#1 */ -#define CONFIG1BASE (SHARC1BASE + 0x000a0000) -#define CONFIG2BASE (SHARC2BASE + 0x000a0000) -#define CONFIG3BASE (SHARC3BASE + 0x000a0000) -#define CONFIG4BASE (SHARC4BASE + 0x000a0000) -#define CONFIG5BASE (SHARC5BASE + 0x000a0000) -#define CONFIG6BASE (SHARC5BASE + 0x000a0000) - -/* register offsets (32bit words) in configbase area */ -#define CFG_MASTER_CONTROL 0x0000 -#define _START_TIP 0 -#define _LVL2_TRIG_ACTIVE 1 -#define _LVL2_LINK_ACTIVE 2 -#define _MU_LINK_ACTIVE 3 -#define _LVL2_PIPE1_RQ 4 -#define _LVL2_PIPE2_RQ 5 - -#define CFG_MASTER_STATUS 0x0004 -#define _LVL1_PIPE_FULL 0 -#define _LVL2_PIPE1_FULL 1 -#define _LVL2_PIPE2_FULL 2 -#define _LVL2_PIPE 3 -#define _LVL2_PIPE1_GR 4 -#define _LVL2_PIPE2_GR 5 - -#define CFG_DEBUG_CONTROL 0x0008 -#define _DEBUG_DUMP 3 - -#define CFG_LVL1_PIPE_SIZE 0x000c - -#define CFG_T_BEGIN_RUN 0x0010 -#define CFG_T_END_RUN 0x0014 -#define CFG_T_SPILL_ON 0x0018 -#define CFG_T_SPILL_OFF 0x001c - -#define CFG_TOTAL_EVENTS 0x0020 - - -/* number of vme modules to be rout */ -#define CFG_NOF_MODULES 0x002c - -/* declaration of vme modules toread out starts here */ -#define CFG_VME_MODULES 0x0030 -/* one vme module is described with ... words */ -#define CFG_SOURCE_ADDRESS 0x0 -#define CFG_BLT_FLAG 0x4 -#define CFG_CYCLE_COUNT 0x8 -#define CFG_DUMMY_WORD 0xc - -/* special purpose areas in external memory */ - -#define SNIFF1BASE (MEMBASE + 0x000fa000) -#define SNIFF1TOP (MEMBASE + 0x000faf00) -#define SNIFF2BASE (MEMBASE + 0x000fb000) -#define SNIFF2TOP (MEMBASE + 0x000fbf00) -#define SNIFF3BASE (MEMBASE + 0x000fc000) -#define SNIFF3TOP (MEMBASE + 0x000fcf00) -#define SNIFF4BASE (MEMBASE + 0x000fd000) -#define SNIFF4TOP (MEMBASE + 0x000fdf00) -#define SNIFF5BASE (MEMBASE + 0x000fe000) -#define SNIFF5TOP (MEMBASE + 0x000fef00) -#define SNIFF6BASE (MEMBASE + 0x000ff000) -#define SNIFF6TOP (MEMBASE + 0x000fff00) - -/****************************************************************/ - - - -#define LVL1_PIPE_BASE 0x00000000 - - -/* define bits of the XILINX internal status register STATUSBASE */ - -#define _KBERR 0 -#define _KHALT 1 -#define _VMEINT 2 - -#define _XGP1 4 -#define _XGP2 5 -#define _XGP3 6 -#define _XGSR 7 - -#define _START_MU 8 -#define _FIFOFULL 9 -#define _ADDRESSMATCH 10 -#define _KSIZE1 11 - - - -/* define the BUSYs */ -#define _LVL1_BUSY 4 -#define _LVL2_BUSY 5 - - - -/* TUNDRA internal registers */ - -#define DMALAR 0x00 -#define DMAVAR 0x04 -#define DMATC 0x08 -#define DCSR 0x0c -#define VMEBAR 0x10 -#define RXDATA 0x14 -#define RXADDR 0x18 -#define RXCTL 0x1c -#define BUSSEL 0x20 -#define IVECT 0x24 -#define APBR 0x28 -#define TXDATA 0x2c -#define TXADDR 0x30 -#define TXCTL 0x34 -#define LMFIFO 0x38 -#define MODE 0x3c -#define SA64BAR 0x40 -#define MA64BAR 0x44 -#define LAG 0x48 -#define DMAVTC 0x4c - -#define STAT0 0x80 -#define STAT1 0x84 -#define GENCTL 0x88 -#define VINT 0x8c -#define VREQ 0x90 -#define VARB 0x94 -#define ID 0x98 -#define CTL2 0x9c -#define I7S 0xa0 -#define LIS 0xa4 -#define I7E 0xa8 -#define LIE 0xac -#define VIE 0xb0 -#define IC10 0xb4 -#define IC32 0xb8 -#define IC54 0xbc -#define MISC 0xc0 -#define DLCT 0xc4 -#define DLST1 0xc8 -#define DLST2 0xcc -#define DLST3 0xd0 -#define MBOX0 0xd4 -#define MBOX1 0xd8 -#define MBOX2 0xdc -#define MBOX3 0xe0 - -/* DISPLAY registers */ - -#define DIGIT1 0x0c -#define DIGIT2 0x08 -#define DIGIT3 0x04 -#define DIGIT4 0x00 - -/* Trigger Codes */ - -#define T_NORMAL 0x01 -#define T_BEGIN 0x02 -#define T_END 0x03 -#define T_CALIB 0x04 -#define T_SPILLON 0x05 -#define T_SPILLOFF 0x06 -- 2.43.0