]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
After join with new-segment-and-reassembly branch
authorhades <hades>
Wed, 20 Sep 2000 13:52:32 +0000 (13:52 +0000)
committerhades <hades>
Wed, 20 Sep 2000 13:52:32 +0000 (13:52 +0000)
hadaq/Makefile
hadaq/hwsoft.c
hadaq/nettrans.c
hadaq/nettrans.h
hadaq/param.tcl
hadaq/pkt.c [deleted file]
hadaq/pkt.h [deleted file]

index dcb31c0412a29c5dc5b3e38995bafb8d26cfd4c6..979d1818672011c91ba4a1d1d64fc9a25d7eabbf 100644 (file)
@@ -32,13 +32,13 @@ DAQ_MEMNET_OBJS = memnet.o \
        worker.o \
        shmtrans.o semaphore.o hadtuqueue.o \
                psxshm.o mman.o \
-       nettrans.o pkt.o \
+       nettrans.o \
                hadtu.o
 DAQ_NETMEM_OBJS = netmem.o \
        worker.o \
        shmtrans.o semaphore.o hadtuqueue.o \
                psxshm.o mman.o \
-       nettrans.o pkt.o \
+       nettrans.o \
                hadtu.o
 DAQ_EVTBUILD_OBJS = evtbuild.o \
        worker.o \
@@ -166,14 +166,13 @@ memnet.o: memnet.c shmtrans.h semaphore.h psxshm.h hadtuqueue.h \
 mman.o: mman.c mman.h
 netmem.o: netmem.c worker.h psxshm.h nettrans.h hadtu.h shmtrans.h \
  semaphore.h hadtuqueue.h
-nettrans.o: nettrans.c grmblfx.h hadtu.h pkt.h worker.h psxshm.h \
+nettrans.o: nettrans.c grmblfx.h hadtu.h worker.h psxshm.h \
  nettrans.h
 online.o: online.c evt.h hadtu.h subevt.h online.h
 online_clnt.o: online_clnt.c online.h
 online_svc.o: online_svc.c online.h
 online_xdr.o: online_xdr.c online.h
 param.o: param.c param.h
-pkt.o: pkt.c pkt.h hadtu.h
 psxshm.o: psxshm.c mman.h psxshm.h
 rc.o: rc.c rc.h
 readout.o: readout.c grmblfx.h hardware.h shmtrans.h semaphore.h \
index 3abe546c4634e9e74cb66e73977e9a39f5958971..2de1b4639d9064ab09dca9386e19fe09fe2789ff 100644 (file)
@@ -31,7 +31,7 @@ Hardware *newHardware(void)
        Param *param;
 
        my = allocMem(sizeof(Hardware));
-       my->maxSubEvtSize = 3 * SubEvt_hdrSize() + 1001 * sizeof(UInt4);
+       my->maxSubEvtSize = 2 * SubEvt_hdrSize() + 5004 * sizeof(UInt4);
 
        param = allocMem(sizeof(Param));
        conParam(param);
@@ -47,7 +47,7 @@ void deleteHardware(Hardware *my)
 
 void Hardware_waitForTrigger(Hardware *my, void *partEvt)
 {
-#if 1
+#if 0
        struct timespec tS, *t = &tS;
 
        t->tv_sec = 0;
@@ -100,15 +100,16 @@ void readoutSoft(void *subEvt)
        data += (int) ((1000.0 * rand()) / RAND_MAX);
        data += (int) ((1000.0 * rand()) / RAND_MAX);
        data += (int) ((1000.0 * rand()) / RAND_MAX);
-       data += (int) ((1000.0 * rand()) / RAND_MAX);
 #endif
 
        size = (char *)data - (char *)subEvt;
        id = SubEvtId_test1;
+#if 0
        if (size > 1000) {
                size = 1000;
                id |= 0x80000000;
        }
+#endif
        SubEvt_setSize(subEvt, size);
        SubEvt_setId(subEvt, id);
        SubEvt_setTrigNr(subEvt, trigTag);
index 0351b25c8602950bc316dc10f8f49332d063b3fb..ec30ce1000db699e83116959613849e211f48546 100644 (file)
@@ -1,4 +1,4 @@
-static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/nettrans.c,v 6.15 2000-06-07 12:13:50 hades Exp $";
+static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/nettrans.c,v 6.16 2000-09-20 13:52:32 hades Exp $";
 
 #define _GNU_SOURCE
 #include <unistd.h>
@@ -20,7 +20,6 @@ static char rcsId[] = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/had
 #include <latm.h>
 
 #include "hadtu.h"
-#include "pkt.h"
 
 #include "worker.h"
 #include "nettrans.h"
@@ -190,7 +189,7 @@ int sendGeneric(NetTrans *my) {
 
        switch (my->type) {
        case NetTransType_atm:
-               retVal = LAtm_send(my->lAtm, my->pkt, Pkt_size(my->pkt));
+               retVal = LAtm_send(my->lAtm, my->pkt, my->pktSize);
                if (0 > retVal) {
                        LAtm_perror("LAtm_send");
                }
@@ -207,11 +206,11 @@ int sendGeneric(NetTrans *my) {
                        }
                }
 #endif
-               retVal = send(my->fd, my->pkt, Pkt_size(my->pkt), 0);
+               retVal = send(my->fd, my->pkt, my->pktSize, 0);
                break;
        }
 
-       if (retVal != Pkt_size(my->pkt)) {
+       if (retVal != my->pktSize) {
                retVal = -1;
        }
 
@@ -247,6 +246,8 @@ int recvGeneric(NetTrans *my) {
 
        if (0 > retVal) {
                msglog(LOG_DEBUG, "recvGeneric: %s\n", strerror(errno));
+       } else {
+               my->pktSize = retVal;
        }
        return retVal;
 }
@@ -269,8 +270,7 @@ NetTrans *NetTrans_create(const char *name, size_t bandwidth, Worker *worker)
                return NULL;
        }
 
-       my->pkt = NULL;
-       my->seqNr = 0;
+       my->pktSize = 0;
        my->offset = 0;
 
        my->pktsSent = NULL;
@@ -280,10 +280,12 @@ NetTrans *NetTrans_create(const char *name, size_t bandwidth, Worker *worker)
        my->pktsReceived = Worker_addStatistic(worker, buf);
        sprintf(buf, "%s_%s", name, "pktsDiscarded");
        my->pktsDiscarded = Worker_addStatistic(worker, buf);
-       sprintf(buf, "%s_%s", name, "msgsDiscarded");
-       my->msgsDiscarded = Worker_addStatistic(worker, buf);
        sprintf(buf, "%s_%s", name, "msgsReceived");
        my->msgsReceived = Worker_addStatistic(worker, buf);
+       sprintf(buf, "%s_%s", name, "msgsDiscarded");
+       my->msgsDiscarded = Worker_addStatistic(worker, buf);
+       sprintf(buf, "%s_%s", name, "bytesReceived");
+       my->bytesReceived = Worker_addStatistic(worker, buf);
 
        return my;
 }
@@ -291,8 +293,6 @@ NetTrans *NetTrans_create(const char *name, size_t bandwidth, Worker *worker)
 NetTrans *NetTrans_open(const char *name, size_t bandwidth, Worker *worker)
 {
        NetTrans *my;
-       char *vpi;
-       char *vci;
        char buf[80];
 
        my = allocMem(sizeof(NetTrans));
@@ -301,8 +301,7 @@ NetTrans *NetTrans_open(const char *name, size_t bandwidth, Worker *worker)
                return NULL;
        }
 
-       my->pkt = allocMem(my->mtuSize);
-       my->seqNr = 0;
+       my->pktSize = 0;
        my->offset = 0;
 
        sprintf(buf, "%s_%s", name, "pktsSent");
@@ -313,15 +312,15 @@ NetTrans *NetTrans_open(const char *name, size_t bandwidth, Worker *worker)
        my->bytesSent = Worker_addStatistic(worker, buf);
        my->pktsReceived = NULL;
        my->pktsDiscarded = NULL;
-       my->msgsDiscarded = NULL;
        my->msgsReceived = NULL;
+       my->msgsDiscarded = NULL;
+       my->bytesReceived = NULL;
 
        return my;
 }
 
 void NetTrans_close(NetTrans *my)
 {
-       freeMem(my->pkt);
        closeGeneric(my);
        freeMem(my);
 }
@@ -334,50 +333,40 @@ void NetTrans_remove(NetTrans *my)
 
 int NetTrans_send(NetTrans *my, void *hadTu)
 {
-       int i;
-       int msgIsComplete;
+       size_t pktSize;
 
-       Pkt_setDecoding(my->pkt, PktDecoding_default);
-       Pkt_setId(my->pkt, PktId_bom);
+       for (my->offset = 0; my->offset < HadTu_size(hadTu); my->offset += pktSize) {
+               my->pkt = hadTu + my->offset;
+               pktSize = min(my->mtuSize, HadTu_size(hadTu) - my->offset);
 
-       i = 0;
-       msgIsComplete = 0;
-       do {
-               size_t payload;
-
-               payload = min(my->mtuSize - Pkt_hdrSize(), HadTu_size(hadTu) - i);
-
-               memcpy(Pkt_data(my->pkt), (char *) hadTu + i, payload);
-               Pkt_setSize(my->pkt, payload + Pkt_hdrSize());
-
-               i += payload;
-               if (i == HadTu_size(hadTu)) {
-                       Pkt_setId(my->pkt, Pkt_id(my->pkt) | PktId_eom);
-                       msgIsComplete = 1;
-                       (*my->msgsSent)++;
+               /* we reserve pkts < 32 Byte for control messages */
+               if (pktSize < 32) {
+                       my->pktSize = 32;
+               } else {
+                       my->pktSize = pktSize;
                }
-               Pkt_setSeqNr(my->pkt, my->seqNr++);
 
                if (0 > sendGeneric(my)) {
                        return -1;
                }
                (*my->pktsSent)++;
-               (*my->bytesSent) += Pkt_size(my->pkt);
-               Pkt_setId(my->pkt, Pkt_id(my->pkt) & ~PktId_bom);
-       } while (!msgIsComplete);
+       }
+
+       /* mark the end of message */
+       my->pkt = hadTu;
+       my->pktSize = 24;
+
+       if (0 > sendGeneric(my)) {
+               return -1;
+       }
+       (*my->msgsSent)++;
+       (*my->bytesSent) += my->offset;
        return 0;
 }
 
 static int assembleMsg(NetTrans *my, void *hadTu, size_t size)
 {
        int retVal;
-       int i;
-       int pktIsOk;
-       UInt4 savedHdr[4];
-       UInt4 pktHdrSize;
-       UInt4 pktSize;
-       UInt4 pktId;
-       UInt4 pktSeqNr;
 
        /* BUGBUG quickhack for flushing the input data.  Properly in one of */
        /* the parent functions this should be handled, but this would need */
@@ -392,57 +381,26 @@ static int assembleMsg(NetTrans *my, void *hadTu, size_t size)
                freeMem(my->pkt);
                return 0;
        }
-       /* for in situ assembly of the pkts we receive the data "a little bit in
-     front of the beginning", save that data, and copy it back. CAUTION:
-     Pkt_hdrSize() bytes in front of hadTu must be accessible! */
-       pktHdrSize = Pkt_hdrSize();
-       assert(sizeof(savedHdr) >= pktHdrSize);
-
-       my->pkt = (char *) hadTu + my->offset - pktHdrSize;
-       memcpy(savedHdr, my->pkt, pktHdrSize);
 
+       my->pkt = hadTu + my->offset;
        if (0 > recvGeneric(my)) {
                abort();
        }
-       (*my->pktsReceived)++;
-       pktSize = Pkt_size(my->pkt);
-       pktId = Pkt_id(my->pkt);
-       pktSeqNr = Pkt_seqNr(my->pkt);
-       memcpy(my->pkt, savedHdr, pktHdrSize);
-       my->pkt = NULL;
-
-       if ((pktId & PktId_bom) != 0) { /* start of new msg */
-               if (my->offset != 0) {
-                       (*my->msgsDiscarded)++;
-                       (*my->pktsDiscarded)++;
-                       my->offset = 0;
-                       pktIsOk = 0;
-               } else {
-                       my->seqNr = pktSeqNr;
-                       pktIsOk = 1;
-               }
-       } else {
-               if (my->seqNr != pktSeqNr) {
-                       (*my->pktsDiscarded)++;
-                       my->offset = 0;
-                       pktIsOk = 0;
-               } else {
-                       pktIsOk = 1;
-               }
-       }
-       if (pktIsOk) {
-               my->seqNr++;
 
-               if ((pktId & PktId_eom) == 0) {
-                       my->offset += pktSize - pktHdrSize;;
+       if (my->pktSize != 24) {
+               my->offset += my->pktSize;
+               (*my->pktsReceived)++;
+               retVal = 0;
+       } else {
+               if (my->offset < HadTu_size(my->pkt) || memcmp(my->pkt, hadTu, 24)) {
+                       (*my->msgsDiscarded)++;
                        retVal = 0;
                } else {
                        (*my->msgsReceived)++;
-                       my->offset = 0;
+                       (*my->bytesReceived) += my->offset;
                        retVal = 1;
                }
-       } else {
-               retVal = 0;
+               my->offset = 0;
        }
        return retVal;
 }
index 42f706051b4a9abbbbcf8ff23e5ae215a48d17a0..2bd9e9886c2a8225e955bae8c98defdba244f013 100644 (file)
@@ -20,15 +20,16 @@ typedef struct NetTransS {
   size_t mtuSize;
   int fd;
   void *pkt;
-  UInt4 seqNr;
+  size_t pktSize;
   size_t offset;
   unsigned long *pktsSent;
   unsigned long *msgsSent;
   unsigned long *bytesSent;
   unsigned long *pktsReceived;
   unsigned long *pktsDiscarded;
-  unsigned long *msgsDiscarded;
   unsigned long *msgsReceived;
+  unsigned long *msgsDiscarded;
+  unsigned long *bytesReceived;
 } NetTrans;
 
 int NetTrans_invariant(const NetTrans *my);
index bb8db5ad51204c60687aa9db8affeb23c645d749..147d891e4571c40f96b8bdcf03807f50fb35f0b4 100644 (file)
@@ -1,10 +1,14 @@
 set evtbuild(file) ./daq_evtbuild
-set evtbuild(args) "daq_evtbuild -s 1 -a"
+set evtbuild(args) "daq_evtbuild -s 1 -m 1 -a"
+set netmem(file) ./daq_netmem
+set netmem(args) "daq_netmem -a -i UDP:0.0.0.0:3000 -m 1"
+set memnet(file) ./daq_memnet
+set memnet(args) "daq_memnet -a -o UDP:129.187.154.22:3000 -w 0"
 set readout(file) ./daq_readout
 set readout(args) "daq_readout -a"
 
 set sam0(cardbase) 0x9C000000
-set soft(size) 1024
+set soft(size) 10240
 
 set dtu(cardbase) 0x44100000
 
diff --git a/hadaq/pkt.c b/hadaq/pkt.c
deleted file mode 100644 (file)
index d680a0f..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-static char rcsId[] = "$Id: pkt.c,v 6.1 1999-08-31 10:37:24 muench Stab $";
-
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <time.h>
-#include <sys/types.h>
-
-#include "pkt.h"
-
-char *Pkt_2charP(const void *my)
-{
-       static char buf[132];
-
-       sprintf(buf, "size: 0x%08x\tdecoding: 0x%08x\tid: 0x%08x\tseqNr: 0x%08x",
-                       Pkt_size(my), Pkt_decoding(my), Pkt_id(my), Pkt_seqNr(my));
-
-       return buf;
-}
-
-void *newPkt(UInt4 decoding, UInt4 id, UInt4 seqNr)
-{
-       void *my;
-
-       my = allocMem(Pkt_hdrSize());
-
-       Pkt_setSize(my, Pkt_hdrSize());
-       Pkt_setDecoding(my, decoding);
-       Pkt_setId(my, id);
-       Pkt_setSeqNr(my, seqNr);
-
-       return my;
-}
-
-void deletePkt(void *my)
-{
-       freeMem(my);
-}
-
-void *Pkt_appendData(void *my, const void *data, size_t size)
-{
-
-       my = reallocMem(my, Pkt_paddedSize(my) + size);
-       memcpy(Pkt_end(my), data, size);
-       Pkt_setSize(my, Pkt_paddedSize(my) + size);
-
-       return my;
-}
diff --git a/hadaq/pkt.h b/hadaq/pkt.h
deleted file mode 100644 (file)
index 89f3d29..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#ifndef PKT_H
-#define PKT_H
-
-#include <hadesstd.h>
-
-#include "hadtu.h"
-
-enum PktId {
-  PktId_bom = 1,
-  PktId_eom = 2
-};
-
-enum PktDecoding {
-  PktDecoding_default = 98
-};
-
-#define Pkt_hdr HadTu_hdr
-#define Pkt_isSwapped HadTu_isSwapped
-#define Pkt_hdrValue HadTu_hdrValue
-#define Pkt_setHdrValue HadTu_setHdrValue
-#define Pkt_decoding HadTu_decoding
-#define Pkt_setDecoding HadTu_setDecoding
-#define Pkt_alignment HadTu_alignment
-#define Pkt_size HadTu_size
-#define Pkt_setSize HadTu_setSize
-#define Pkt_paddedSize HadTu_paddedSize
-#define Pkt_begin HadTu_begin
-#define Pkt_end HadTu_end
-#define Pkt_next HadTu_next
-
-static size_t Pkt_hdrLen(void);
-static size_t Pkt_hdrSize(void);
-static size_t Pkt_dataSize(const void *my);
-static void *Pkt_data(const void *my);
-
-static UInt4 Pkt_id(const void *my);
-static void Pkt_setId(void *my, UInt4 id);
-static UInt4 Pkt_seqNr(const void *my);
-static void Pkt_setSeqNr(void *my, UInt4 seqNr);
-
-char *Pkt_2charP(const void *my);
-
-void *newPkt(UInt4 decoding, UInt4 id, UInt4 seqNr);
-void deletePkt(void *my);
-void *Pkt_appendData(void *my, const void *data, size_t size);
-
-enum PktIdx {
-  PktIdx_size,
-  PktIdx_decoding,
-  PktIdx_id,
-  PktIdx_seqNr,
-  PktIdx_data
-};
-
-static size_t Pkt_hdrLen(void)
-{
-  return PktIdx_data;
-}
-
-static size_t Pkt_hdrSize(void)
-{
-  return Pkt_hdrLen() * sizeof(UInt4);
-}
-
-static size_t Pkt_dataSize(const void *my)
-{
-  return Pkt_size(my) - Pkt_hdrSize();
-}
-
-static void *Pkt_data(const void *my)
-{
-  return (void *) ((char *) my + Pkt_hdrSize());
-}
-
-static UInt4 Pkt_id(const void *my)
-{
-  return Pkt_hdrValue(my, PktIdx_id);
-}
-
-static void Pkt_setId(void *my, UInt4 id)
-{
-  Pkt_setHdrValue(my, PktIdx_id, id);
-}
-
-static UInt4 Pkt_seqNr(const void *my)
-{
-  return Pkt_hdrValue(my, PktIdx_seqNr);
-}
-
-static void Pkt_setSeqNr(void *my, UInt4 seqNr)
-{
-  Pkt_setHdrValue(my, PktIdx_seqNr, seqNr);
-}
-
-#endif