]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
Running
authorhades <hades>
Sun, 28 May 2000 10:34:52 +0000 (10:34 +0000)
committerhades <hades>
Sun, 28 May 2000 10:34:52 +0000 (10:34 +0000)
hadaq/hwtip.c
hadaq/hwtip.h
hadaq/startacq
hadaq/stopacq

index 4cd14ca202986341e4d8d3a205f26792f5772cd1..cf5329ba07436b1623b3f90c9668ea86a6ab539d 100644 (file)
@@ -34,6 +34,7 @@ static LVme_L berrGetL(LVme * my, unsigned long offset)
 
        do {
                ourVmeAccessOK = 1;
+               retVal = LVme_getL(my, offset);
                retVal = LVme_getL(my, offset);
                retVal = LVme_getL(my, offset);
                retVal = LVme_getL(my, offset);
@@ -43,7 +44,7 @@ static LVme_L berrGetL(LVme * my, unsigned long 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);
@@ -53,6 +54,25 @@ static LVme_L berrGetL(LVme * my, unsigned long 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;
@@ -95,9 +115,9 @@ int conHwTip(HwTip * my, const char *name, const Param *param)
        }
        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;
@@ -112,9 +132,14 @@ void desHwTip(HwTip * my)
 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;
@@ -124,19 +149,19 @@ void HwTip_requestBuffer(HwTip * my)
        }
        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;
@@ -145,7 +170,12 @@ void HwTip_requestBuffer(HwTip * my)
 #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
        {
@@ -161,12 +191,14 @@ void HwTip_requestBuffer(HwTip * my)
 #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)
@@ -181,6 +213,10 @@ int HwTip_readSubEvt(HwTip * my, void *subEvt)
        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) {
index 84930e148f4396c2c72ba70117da0231b4dd978e..f9e15c9a370868270a863b39c9dc99a7fd74c3e7 100644 (file)
@@ -12,6 +12,7 @@ typedef struct HwTipS {
   unsigned trigNr;
   unsigned long bankRequested;
   unsigned long pipeFull;
+  unsigned long pipeSize;
   unsigned long daqRq;
   unsigned long daqGr;
   unsigned long fifo;
index 872a75676e1b25af9df34a2ee9e1c30bbb18cb7f..a67848b35de8898420722a3d6c22f16937d52103 100644 (file)
@@ -1,10 +1,9 @@
 :
-./daq_evtbuild -p -1 -s 3 -v notice &
+./daq_evtbuild -p -1 -s 1 -v notice &
 echo $! >evtbuild.pid
 sleep 1;
-./daq_readout -p -2 -v notice &
+./daq_readout -p -2 -v info &
 echo $! >readout.pid
-sleep 1;
-./daq_ctrlctu -v notice &
-echo $! >ctrlctu.pid
+sleep 1
+dtuctrl -t ctu start
 exit 0
index e9ec51b143e7f4464453104aa525c8eaffcd36c9..090b2ed21ae906342f0aab95fbd40a0516058328 100644 (file)
@@ -1,7 +1,5 @@
 :
-kill $(cat ctrlctu.pid)
-rm ctrlctu.pid
-sleep 1
+dtuctrl -t ctu stop
 sleep 1
 kill $(cat readout.pid)
 rm readout.pid