-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/subevt.c,v 6.6 2001-11-18 11:56:21 hadaq Exp $";
+static char *rcsId = "$Header: /u/hadaq/CVS/hadaq/subevt.c,v 6.6 2001/11/18 11:5
+6:21 hadaq Exp $";
#include <stdlib.h>
#include "subevt.h"
-enum SubEvtIdx {
- SubEvtIdx_size,
- SubEvtIdx_decoding,
- SubEvtIdx_id,
- SubEvtIdx_trigNr,
- SubEvtIdx_data
-};
-
-size_t SubEvt_hdrLen(void)
-{
- return SubEvtIdx_data;
-}
-
-size_t SubEvt_hdrSize(void)
-{
- return SubEvt_hdrLen() * sizeof(uint32_t);
-}
-
-size_t SubEvt_dataSize(const void *my)
-{
- return SubEvt_size(my) - SubEvt_hdrSize();
-}
-
-void *SubEvt_data(const void *my)
-{
- return (void *) ((char *) my + SubEvt_hdrSize());
-}
-
uint32_t SubEvt_dataValue(const void *my, unsigned idx) {
- uint32_t val;
-
- switch (SubEvt_alignment(my)) {
- case 4:
- if (SubEvt_isSwapped(my)) {
- uint32_t tmp0;
- uint32_t tmp1;
-
- tmp0 = ((uint32_t *)SubEvt_data(my))[idx];
- ((char *) &tmp1)[0] = ((char *) &tmp0)[3];
- ((char *) &tmp1)[1] = ((char *) &tmp0)[2];
- ((char *) &tmp1)[2] = ((char *) &tmp0)[1];
- ((char *) &tmp1)[3] = ((char *) &tmp0)[0];
- val = tmp1;
- } else {
- val = ((uint32_t *)SubEvt_data(my))[idx];
- }
- break;
- case 2:
- if (SubEvt_isSwapped(my)) {
- uint16_t v;
- swab(((uint16_t *)SubEvt_data(my)) + idx, &v, 2);
- val = v;
- } else {
- val = ((uint16_t *)SubEvt_data(my))[idx];
- }
- break;
- default:
- val = ((uint8_t *)SubEvt_data(my))[idx];
- break;
- }
- return val;
-}
-
-uint32_t SubEvt_id(const void *my)
-{
- return SubEvt_hdrValue(my, SubEvtIdx_id);
-}
-
-uint32_t SubEvt_pureId(const void *my)
-{
- return SubEvt_hdrValue(my, SubEvtIdx_id) & 0x7fffffffU;
-}
-
-int SubEvt_dataError(const void *my)
-{
- return (SubEvt_hdrValue(my, SubEvtIdx_id) & 0x80000000) != 0;
-}
-
-void SubEvt_setId(void *my, uint32_t id)
-{
- SubEvt_setHdrValue(my, SubEvtIdx_id, id);
-}
-
-uint32_t SubEvt_trigNr(const void *my)
-{
- return SubEvt_hdrValue(my, SubEvtIdx_trigNr);
-}
-
-void SubEvt_setTrigNr(void *my, uint32_t trigNr)
-{
- SubEvt_setHdrValue(my, SubEvtIdx_trigNr, trigNr);
+ uint32_t val;
+
+ switch (SubEvt_alignment(my)) {
+ case 4:
+ if (SubEvt_isSwapped(my)) {
+ uint32_t tmp0;
+ uint32_t tmp1;
+
+ tmp0 = ((uint32_t *)SubEvt_data(my))[idx];
+ ((char *) &tmp1)[0] = ((char *) &tmp0)[3];
+ ((char *) &tmp1)[1] = ((char *) &tmp0)[2];
+ ((char *) &tmp1)[2] = ((char *) &tmp0)[1];
+ ((char *) &tmp1)[3] = ((char *) &tmp0)[0];
+ val = tmp1;
+ } else {
+ val = ((uint32_t *)SubEvt_data(my))[idx];
+ }
+ break;
+ case 2:
+ if (SubEvt_isSwapped(my)) {
+ uint16_t v;
+ swab(((uint16_t *)SubEvt_data(my)) + idx, &v, 2);
+ val = v;
+ } else {
+ val = ((uint16_t *)SubEvt_data(my))[idx];
+ }
+ break;
+ default:
+ val = ((uint8_t *)SubEvt_data(my))[idx];
+ break;
+ }
+ return val;
}
char *SubEvt_2charP(const void *my)
{
- static char buf[132];
+ static char buf[132];
- sprintf(buf, "size: 0x%08x\tdecoding: 0x%08x\tid: 0x%08x\ttrigNr: 0x%08x",
- SubEvt_size(my), SubEvt_decoding(my), SubEvt_id(my), SubEvt_trigNr(my));
+ sprintf(buf, "size: 0x%08x\tdecoding: 0x%08x\tid: 0x%08x\ttrigNr: 0x%08x",
+ SubEvt_size(my), SubEvt_decoding(my), SubEvt_id(my), SubEvt_trigNr(my));
- return buf;
+ return buf;
}
void *newSubEvt(uint32_t decoding, uint32_t id, uint32_t trigNr)
{
- void *my;
+ void *my;
- my = malloc(SubEvt_hdrSize());
+ my = malloc(SubEvt_hdrSize());
- SubEvt_setSize(my, SubEvt_hdrSize());
- SubEvt_setDecoding(my, decoding);
- SubEvt_setId(my, id);
- SubEvt_setTrigNr(my, trigNr);
+ SubEvt_setSize(my, SubEvt_hdrSize());
+ SubEvt_setDecoding(my, decoding);
+ SubEvt_setId(my, id);
+ SubEvt_setTrigNr(my, trigNr);
- return my;
+ return my;
}
void deleteSubEvt(void *my)
{
- free(my);
+ free(my);
}
void *SubEvt_appendData(void *my, const void *data, size_t size)
{
- my = realloc(my, SubEvt_paddedSize(my) + size);
- memcpy(SubEvt_end(my), data, size);
- SubEvt_setSize(my, SubEvt_paddedSize(my) + size);
+ my = realloc(my, SubEvt_paddedSize(my) + size);
+ memcpy(SubEvt_end(my), data, size);
+ SubEvt_setSize(my, SubEvt_paddedSize(my) + size);
- return my;
+ return my;
}
SubEvtId_start = 10,
SubEvtId_veto = 11,
SubEvtId_richPed = 12,
- SubEvtId_tofTest = 400,
+ SubEvtId_tofTest = 400,
SubEvtId_trigCode = 500,
SubEvtId_trigInfo = 501,
SubEvtId_slowTest = 600
#define SubEvt_end HadTu_end
#define SubEvt_next HadTu_next
-size_t SubEvt_hdrLen(void);
-size_t SubEvt_hdrSize(void);
-size_t SubEvt_dataSize(const void *my);
-void *SubEvt_data(const void *my);
+
+enum SubEvtIdx {
+ SubEvtIdx_size,
+ SubEvtIdx_decoding,
+ SubEvtIdx_id,
+ SubEvtIdx_trigNr,
+ SubEvtIdx_data
+};
+
+static size_t SubEvt_hdrLen(void)
+{
+ return SubEvtIdx_data;
+}
+
+static size_t SubEvt_hdrSize(void)
+{
+ return SubEvt_hdrLen() * sizeof(uint32_t);
+}
+
+static size_t SubEvt_dataSize(const void *my)
+{
+ return SubEvt_size(my) - SubEvt_hdrSize();
+}
+
+static void *SubEvt_data(const void *my)
+{
+ return (void *) ((char *) my + SubEvt_hdrSize());
+}
+
uint32_t SubEvt_dataValue(const void *my, unsigned idx);
char *SubEvt_2charP(const void *my);
-uint32_t SubEvt_id(const void *my);
-uint32_t SubEvt_pureId(const void *my);
-int SubEvt_dataError(const void *my);
-void SubEvt_setId(void *my, uint32_t id);
-uint32_t SubEvt_trigNr(const void *my);
-void SubEvt_setTrigNr(void *my, uint32_t trigNr);
+
+static uint32_t SubEvt_id(const void *my)
+{
+ return SubEvt_hdrValue(my, SubEvtIdx_id);
+}
+
+static uint32_t SubEvt_pureId(const void *my)
+{
+ return SubEvt_hdrValue(my, SubEvtIdx_id) & 0x7fffffffU;
+}
+
+static int SubEvt_dataError(const void *my)
+{
+ return (SubEvt_hdrValue(my, SubEvtIdx_id) & 0x80000000) != 0;
+}
+
+static void SubEvt_setId(void *my, uint32_t id)
+{
+ SubEvt_setHdrValue(my, SubEvtIdx_id, id);
+}
+
+static uint32_t SubEvt_trigNr(const void *my)
+{
+ return SubEvt_hdrValue(my, SubEvtIdx_trigNr);
+}
+
+static void SubEvt_setTrigNr(void *my, uint32_t trigNr)
+{
+ SubEvt_setHdrValue(my, SubEvtIdx_trigNr, trigNr);
+}
void *newSubEvt(uint32_t decoding, uint32_t id, uint32_t trigNr);
void deleteSubEvt(void *my);