-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwrace.c,v 6.20 2002-10-09 15:41:21 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/Attic/hwrace.c,v 6.21 2002-10-15 18:15:29 hadaq Exp $";
#define _POSIX_C_SOURCE 199309L
Param_getInt(param, my->name, "cardbase", ¶mWasFound, &cardBase);
if (!paramWasFound) {
syslog(LOG_WARNING,
- "Parameter %s(%s) not found, default = 0", my->name, "cardbase");
+ "Parameter %s(%s) not found, default = 0", my->name, "cardbase");
cardBase = 0;
}
-
my->rc = malloc(sizeof(Rc));
if (0 > conRc(my->rc, "rc", cardBase)) {
#define RACE_NODATASIZE 0x10
int HwRace_readSubEvt(HwRace *my, void *subEvt)
{
- uint32_t * data = (uint32_t *) subEvt;
+ uint32_t *data = (uint32_t *) subEvt;
int lastAddr;
int currAddr;
int size;
lastAddr = my->currAddr + size;
/* align my->currAddr to next page */
- if ((lastAddr & 0xff) != 0) {
- my->currAddr = ((lastAddr >> RCPAGEBITSHIFT) + 1)<< RCPAGEBITSHIFT;
- } else {
- my->currAddr = lastAddr;
- }
- if (size <= RACE_NODATASIZE) return 0;
+ my->currAddr = lastAddr + (RCPAGESIZE - 1) & ~(RCPAGESIZE - 1);
- /* copy one sub evt from RC to memory */
- *data++ = size;
- while ((currAddr+=4) < lastAddr) {
- *data++ = Rc_readMem(my->rc, currAddr);
+ if (size <= RACE_NODATASIZE) {
+ size = 0;
+ } else {
+ /* copy one sub evt from RC to memory */
+ *data++ = size;
+ while ((currAddr += 4) < lastAddr) {
+ *data++ = Rc_readMem(my->rc, currAddr);
+ }
+ syslog(LOG_DEBUG, "subEvt: %s", SubEvt_2charP(subEvt));
}
-#ifndef NDEBUG
- syslog(LOG_DEBUG, "subEvt: %s", SubEvt_2charP(subEvt));
-#endif
return size;
}
+
#ifndef HwRace_H
#define HwRace_H
#include <allParam.h>
typedef struct HwRaceS {
- char name[12];
- Rc * rc;
- LVme_L * buf;
- int currAddr;
- int endOfData;
-} HwRace;
+ char name[12];
+ Rc *rc;
+ LVme_L *buf;
+ int currAddr;
+ int endOfData;
+}
-#define RCPAGEBITSHIFT 8
-#define RCPAGESIZE (1 << RCPAGEBITSHIFT)
+HwRace;
+
+#define RCPAGESIZE 0x100U
int conHwRace(HwRace *my, const char *name, const Param *param);
int HwRace_readSubEvt(HwRace *my, void *subEvt);
-static int HwRace_isBufRequested(HwRace *my) {
+static int HwRace_isBufRequested(HwRace *my)
+{
return my->currAddr == 0;
}
static void HwRace_getEndOfData(HwRace *my)
{
- my->endOfData = (Rc_getPages(my->rc) << RCPAGEBITSHIFT);
+ my->endOfData = Rc_getPages(my->rc) * RCPAGESIZE;
}
#endif