-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/agent.c,v 6.12 2003-03-02 16:24:59 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/agent.c,v 6.13 2003-05-14 13:54:42 muench Exp $";
#define _GNU_SOURCE
#include <unistd.h>
+
+
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/ctrlctu.c,v 6.15 2003-03-02 16:24:59 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/ctrlctu.c,v 6.16 2003-05-14 13:54:42 muench Exp $";
#define _XOPEN_SOURCE
#define _POSIX_C_SOURCE 199506L
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evt.c,v 6.16 2003-04-25 12:15:16 muench Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evt.c,v 6.17 2003-05-14 13:54:42 muench Exp $";
#define _ANSI_C_SOURCE
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.63 2003-04-25 12:15:16 muench Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/evtbuild.c,v 6.64 2003-05-14 13:54:42 muench Exp $";
#define _POSIX_C_SOURCE 199309L
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/hadtu.c,v 6.5 2003-03-02 16:24:59 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/hadtu.c,v 6.6 2003-05-14 13:54:43 muench Exp $";
#define _ANSI_C_SOURCE
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/hadtuqueue.c,v 6.5 2003-03-02 16:24:59 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/hadtuqueue.c,v 6.6 2003-05-14 13:54:43 muench Exp $";
#define _ANSI_C_SOURCE
+
#ifndef HARDWARE_H
#define HARDWARE_H
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/hldread.c,v 6.7 2003-03-02 16:24:59 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/hldread.c,v 6.8 2003-05-14 13:54:43 muench Exp $";
#define _POSIX_C_SOURCE 199309L
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwrich.c,v 6.39 2003-03-02 16:25:00 hadaq Exp $";
+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 <unistd.h>
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwsam.c,v 6.18 2003-03-02 16:25:00 hadaq Exp $";
+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 <assert.h>
#include <string.h>
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwship.c,v 6.29 2002-10-25 06:49:53 hadaq Exp $";
-
-#undef SHIP_DEBUG
+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 <unistd.h>
#include <assert.h>
+#include <errno.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
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);
#endif
}
-#define SHIP_NODATASIZE 0x10
int HwShip_readSubEvt(HwShip *my, void *subEvt)
{
int readSubEvtR;
lastAddr = my->currAddr + size;
#ifndef SHIP_DEBUG
- assert(size < sizeof(uint32_t) * 0x1600); /* whereever the 0x1600 comes from */
+ 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 >= sizeof(uint32_t) * 0x1600) {
+ 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;
}
#endif
- if (size <= SHIP_NODATASIZE) {
+ if (size <= HwShip_minSubEvtSize(my)) {
my->currAddr = lastAddr;
readSubEvtR = 1;
syslog(LOG_DEBUG, "subEvt: empty, skipped");
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;
+}
#ifndef HwShip_H
#define HwShip_H
+#undef SHIP_DEBUG
+
#include <lvme.h>
#include <allParam.h>
typedef struct HwShipS {
char name[12];
LVme *lvme;
- int currAddr;
+ unsigned long cardBase; /* BUGBUG workaround for stupid lvme design */
+ unsigned long currAddr;
int endOfData;
int bankRequested;
int currDbgBuf;
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->bankRequested != bankConfirmed(my);
}
+int HwShip_fillLBmaChain(HwShip *my, LBma *lbma, unsigned long virtOff);
#endif
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwshow.c,v 6.33 2003-02-14 11:54:41 sailer Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwshow.c,v 6.34 2003-05-14 13:54:44 muench Exp $";
+
+#define SHIP_BLT
#define _POSIX_C_SOURCE 199309L
#include <unistd.h>
#include <syslog.h>
#include <allParam.h>
+#include <lvme.h>
#include "subevt.h"
#include "hwship.h"
size_t maxSubEvtSize;
int nShips;
HwShip **ship;
+#ifdef SHIP_BLT
+ LBma *lbma;
+ LVme_L *buf;
+#endif
};
#include "hardware.h"
my->ship = malloc(nCards * sizeof(HwShip *));
my->nShips = nCards;
-#if 0
- my->maxSubEvtSize = SubEvt_hdrSize() + (my->nShips * 1600 * sizeof(uint32_t));
-#endif
- my->maxSubEvtSize = SubEvt_hdrSize() + (my->nShips * 1900 * sizeof(uint32_t));
+ my->maxSubEvtSize = SubEvt_hdrSize();
for (i = 0; i < my->nShips; i++) {
my->ship[i] = malloc(sizeof(HwShip));
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 -1;
+ }
+ my->buf = LBma_getPtrL(my->lbma, 0);
+#endif
+
desParam(param);
return 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]);
}
+#ifdef SHIP_BLT
+void Hardware_readout(Hardware *my, void *partEvt)
+{
+ int i;
+ int firstShip = -1;
+ void *subEvt = SubEvt_data(my->buf);
+ static unsigned long trigNr = 0;
+ unsigned trigTag;
+ int dataError;
+ int size;
+
+ /* init partial event, necessary for SubEvt_next() */
+ SubEvt_setDecoding(my->buf, SubEvtDecoding_SubEvts);
+ dataError = 0;
+ SubEvt_setId(my->buf, 0);
+
+ for (i = 0; i < my->nShips; i++) {
+ if (0 > LBma_resetChain(my->lbma)) {
+ syslog(LOG_ERR, "%s:%d:%s", __FILE__, __LINE__, strerror(errno));
+ }
+ size = HwShip_fillLBmaChain(my->ship[i], my->lbma, (char *) subEvt - (char *) my->buf);
+ if (size > 0) {
+ subEvt = (char *) subEvt + (size + 0x7U & ~0x7U);
+ }
+ 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));
+ }
+ }
+
+ SubEvt_setTrigNr(my->buf, trigNr << 8 | trigTag);
+ SubEvt_setSize(my->buf, (char *) subEvt - (char *) my->buf);
+ trigNr++;
+
+ assert(SubEvt_size(my->buf) <= Hardware_maxSubEvtSize(my));
+
+ memcpy(partEvt, my->buf, SubEvt_size(my->buf));
+
+ syslog(LOG_DEBUG, "partEvt: %s", SubEvt_2charP(partEvt));
+}
+
+#else
void Hardware_readout(Hardware *my, void *partEvt)
{
int i;
SubEvt_setSize(partEvt, (char *) subEvt - (char *) partEvt);
trigNr++;
- assert(SubEvt_size(partEvt) <= my->maxSubEvtSize);
-#ifndef NDEBUG
+ assert(SubEvt_size(partEvt) <= Hardware_maxSubEvtSize(my));
syslog(LOG_DEBUG, "partEvt: %s", SubEvt_2charP(partEvt));
-#endif
}
+
+#endif
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwsoft.c,v 6.28 2003-03-02 16:25:00 hadaq Exp $";
+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
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtip.c,v 1.30 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtip.c,v 1.31 2003-05-14 13:54:44 muench Exp $";
#include <assert.h>
#include <string.h>
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtrig.c,v 6.36 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwtrig.c,v 6.37 2003-05-14 13:54:44 muench Exp $";
#define _POSIX_C_SOURCE 199309L
#include <unistd.h>
-T Mask
-T NetTrans
-T NetTransType
+-T OurArgs
-T Param
-T Pixmap
-T PsxShm
-T Tcl_VarTraceProc
-T Tcl_WaitForEventProc
-T TheArgs
--T OurArgs
-T TheStats
-T ThrArgs
-T Time
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/netmem.c,v 6.25 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/netmem.c,v 6.26 2003-05-14 13:54:44 muench Exp $";
#define _POSIX_C_SOURCE 199309L
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/nettrans.c,v 6.27 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/nettrans.c,v 6.28 2003-05-14 13:54:44 muench Exp $";
#define _GNU_SOURCE
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/online.c,v 6.8 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/online.c,v 6.9 2003-05-14 13:54:45 muench Exp $";
#define _GNU_SOURCE
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/rc.c,v 6.5 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/rc.c,v 6.6 2003-05-14 13:54:45 muench Exp $";
#include <stdlib.h>
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.26 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/readout.c,v 6.27 2003-05-14 13:54:45 muench Exp $";
#define _POSIX_C_SOURCE 199309L
#define SYSLOG_NAMES
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/shmtrans.c,v 6.8 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/shmtrans.c,v 6.9 2003-05-14 13:54:45 muench Exp $";
#define _POSIX_C_SOURCE 199309L
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/showevt.c,v 6.10 2003-03-10 13:22:26 muench Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/showevt.c,v 6.11 2003-05-14 13:54:45 muench Exp $";
#define _ANSI_C_SOURCE
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/sniff.c,v 6.9 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/sniff.c,v 6.10 2003-05-14 13:54:45 muench Exp $";
#define SYSLOG_NAMES
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/subevt.c,v 6.11 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/subevt.c,v 6.12 2003-05-14 13:54:45 muench Exp $";
#include <stdlib.h>
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/tclAppInit.c,v 6.5 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/tclAppInit.c,v 6.6 2003-05-14 13:54:45 muench Exp $";
/*
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/tcldaq.c,v 6.13 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/tcldaq.c,v 6.14 2003-05-14 13:54:45 muench Exp $";
#define _GNU_SOURCE
#include <unistd.h>
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/tkAppInit.c,v 6.5 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/tkAppInit.c,v 6.6 2003-05-14 13:54:46 muench Exp $";
/*
/**** Headerfile for TOF-IPU registers */
/**** created: E.Lins 13-Jan-2000 */
-/* $Id: tof_defs.h,v 1.5 2003-03-02 16:25:00 hadaq Exp $ */
+/* $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 $ */
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/worker.c,v 6.19 2003-03-02 16:25:00 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/worker.c,v 6.20 2003-05-14 13:54:46 muench Exp $";
#define _POSIX_C_SOURCE 199309L
#include <unistd.h>