do {
ourVmeAccessOK = 1;
+ retVal = LVme_getL(my, offset);
retVal = LVme_getL(my, offset);
retVal = LVme_getL(my, offset);
retVal = LVme_getL(my, offset);
retVal = LVme_getL(my, offset);
retVal = LVme_getL(my, offset);
retVal = LVme_getL(my, offset);
- retVal = LVme_getL(my, offset);
+
} while (!ourVmeAccessOK);
if (oldOff != offset && oldWord == retVal) {
msglog(LOG_ERR, "wird twice: 0x%08x on 0x%08x\n", retVal, offset);
return retVal;
}
+static void berrSetL(LVme * my, unsigned long offset, LVme_L v)
+{
+
+ do {
+ ourVmeAccessOK = 1;
+ LVme_setL(my, offset, v);
+ LVme_setL(my, offset, v);
+ LVme_setL(my, offset, v);
+ LVme_setL(my, offset, v);
+ LVme_setL(my, offset, v);
+ LVme_setL(my, offset, v);
+ LVme_setL(my, offset, v);
+ LVme_setL(my, offset, v);
+ LVme_setL(my, offset, v);
+ LVme_setL(my, offset, v);
+
+ } while (!ourVmeAccessOK);
+}
+
static int bankRequested(HwTip * my)
{
UInt2 val;
}
my->currAddr = 0xffffffff; /* start at the end */
my->bankRequested = 1; /* of the empty bank */
- my->pipeFull = 2;
- my->daqRq = 1;
- my->daqGr = 13;
+ my->pipeFull = LVL2_PIPE2_FULL;
+ my->daqRq = LVL2_DAQ2_RQ;
+ my->daqGr = LVL2_DAQ2_GR;
my->fifo = LVL2_PIPE2_BASE;
return 0;
void HwTip_requestBuffer(HwTip * my)
{
- LVme_clrBitL(my->lvme, EXT_DAQ, my->daqRq);
+ {
+ LVme_L v;
+
+ v = berrGetL(my->lvme, EXT_DAQ);
+ berrSetL(my->lvme, EXT_DAQ, v & ~my->daqRq);
+ }
- while (LVme_tstBitL(my->lvme, EXT_STATUS, my->daqGr)) {
+ while (berrGetL(my->lvme, EXT_STATUS) & my->daqGr) {
#if 1
struct timespec tS, *t = &tS;
t->tv_sec = 0;
}
if (my->bankRequested == 0) {
my->bankRequested = 1;
- my->pipeFull = 2;
- my->daqRq = 1;
- my->daqGr = 13;
+ my->pipeFull = LVL2_PIPE2_FULL;
+ my->daqRq = LVL2_DAQ2_RQ;
+ my->daqGr = LVL2_DAQ2_GR;
my->fifo = LVL2_PIPE2_BASE;
} else {
my->bankRequested = 0;
- my->pipeFull = 1;
- my->daqRq = 0;
- my->daqGr = 12;
+ my->pipeFull = LVL2_PIPE1_FULL;
+ my->daqRq = LVL2_DAQ1_RQ;
+ my->daqGr = LVL2_DAQ1_GR;
my->fifo = LVL2_PIPE1_BASE;
}
msglog(LOG_DEBUG, "wait for data\n");
- while (!LVme_tstBitL(my->lvme, EXT_STATUS, my->pipeFull)) {
+ while (!(berrGetL(my->lvme, EXT_STATUS) & my->pipeFull)) {
#if 1
struct timespec tS, *t = &tS;
t->tv_sec = 0;
#endif
}
msglog(LOG_DEBUG, "data available\n");
- LVme_setBitL(my->lvme, EXT_DAQ, my->daqRq);
+ {
+ LVme_L v;
+
+ v = berrGetL(my->lvme, EXT_DAQ);
+ berrSetL(my->lvme, EXT_DAQ, v | my->daqRq);
+ }
#if 0
{
#endif
my->currAddr = my->fifo + 0x8;
+ while (!(berrGetL(my->lvme, EXT_STATUS) & my->daqGr)) {
+ }
my->pipeSize = berrGetL(my->lvme, my->fifo);
}
int HwTip_isBusy(HwTip * my)
{
- return !LVme_tstBitL(my->lvme, EXT_STATUS, my->daqGr);
+ return !(berrGetL(my->lvme, EXT_STATUS) & my->daqGr);
}
int HwTip_isEmpty(HwTip * my)
size_t size;
UInt1 trigTag;
+ if(berrGetL(my->lvme, my->fifo) == 0) {
+ msglog(LOG_ERR, "pipesize = 0\n");
+ }
+
size = berrGetL(my->lvme, my->currAddr);
msglog(LOG_DEBUG, "size: 0x%08x\n", size);
if (size > 0x60) {