-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwshow.c,v 6.5 2000-05-27 06:01:48 hades Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwshow.c,v 6.6 2000-05-28 14:44:39 hades Exp $";
#define _POSIX_C_SOURCE 199309L
#include <unistd.h>
}
my = allocMem(sizeof(Hardware));
- my->maxSubEvtSize = SubEvt_hdrSize() + (1600 * sizeof(UInt4));
+ my->maxSubEvtSize = SubEvt_hdrSize() + (NSHIPS * 1600 * sizeof(UInt4));
my->shipToRead = 0;
for (i = 0; i < NSHIPS; i++) {
void Hardware_waitForTrigger(Hardware *my, void *subEvt)
{
- if (HwShip_isEmpty(my->ship[my->shipToRead])) {
- HwShip_requestBuffer(my->ship[my->shipToRead]);
- while (HwShip_isBusy(my->ship[my->shipToRead])) {
-#if 1
- struct timespec tS, *t = &tS;
- t->tv_sec = 0;
- t->tv_nsec = 020000000;
- nanosleep(t, NULL);
-#endif
- }
- }
}
-void Hardware_readout(Hardware *my, void *subEvt)
+void Hardware_readout(Hardware *my, void *partEvt)
{
- HwShip_readSubEvt(my->ship[my->shipToRead], subEvt);
- if (++my->shipToRead == NSHIPS ) {
- my->shipToRead = 0;
+ void *subEvt = SubEvt_data(partEvt);
+
+ SubEvt_setDecoding(partEvt, SubEvtDecoding_SubEvts);
+
+ for (my->shipToRead = 0; my->shipToRead < NSHIPS; my->shipToRead++) {
+ if (HwShip_isEmpty(my->ship[my->shipToRead])) {
+ HwShip_requestBuffer(my->ship[my->shipToRead]);
+ while (HwShip_isBusy(my->ship[my->shipToRead])) {
+#if 0
+/*
+ * 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.
+*/
+ struct timespec tS, *t = &tS;
+ t->tv_sec = 0;
+ t->tv_nsec = 020000000;
+ nanosleep(t, NULL);
+#endif
+ }
+ }
+ HwShip_readSubEvt(my->ship[my->shipToRead], subEvt);
+ SubEvt_setTrigNr(partEvt, SubEvt_trigNr(subEvt));
+ subEvt = SubEvt_next(partEvt, subEvt);
}
+
+ SubEvt_setSize(partEvt, (char *)subEvt - (char *)partEvt);
+ SubEvt_setId(partEvt, 0);
+ msglog(LOG_DEBUG, "partEvt: %s\n", SubEvt_2charP(partEvt));
}