-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/subevt.c,v 6.14 2010-06-16 14:45:05 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/subevt.c,v 6.15 2010-06-18 11:19:19 hadaq Exp $";
#include <stdio.h>
#include <stdlib.h>
return val;
}
-uint32_t SubEvt_errBit(const void *my)
+unsigned SubEvt_nrOfDataWords(const void *my)
{
unsigned i;
- uint32_t val;
if (SubEvt_decoding(my) == SubEvtDecoding_32bitData) {
i = SubEvt_dataSize(my) / sizeof(uint32_t) - 1;
-
- val = SubEvt_dataValue(my, i);
} else if (SubEvt_decoding(my) == SubEvtDecoding_16bitData) {
i = SubEvt_dataSize(my) / sizeof(uint16_t) - 1;
-
- val = SubEvt_dataValue(my, i);
} else if (SubEvt_decoding(my) == SubEvtDecoding_8bitData) {
i = SubEvt_dataSize(my) / sizeof(uint8_t) - 1;
-
- val = SubEvt_dataValue(my, i);
} else {
fprintf(stderr, " Unknown decoding: %i\n", SubEvt_decoding(my));
}
+ return i;
+}
+
+uint32_t SubEvt_errBit(const void *my)
+{
+ unsigned i;
+ uint32_t val;
+
+ i = SubEvt_nrOfDataWords(my);
+
+ val = SubEvt_dataValue(my, i);
+
return val;
}
{
unsigned i;
uint32_t val;
- unsigned wordNumber = -1;
+ unsigned wordNr = -1;
+ /* Define debug word for the RICH */
if (SubEvt_id(my) == 0x00008300UL || SubEvt_id(my) == 0x00008310UL || SubEvt_id(my) == 0x00008320UL) {
- wordNumber = 2;
+ wordNr = 2;
}
- if (SubEvt_decoding(my) == SubEvtDecoding_32bitData) {
- i = SubEvt_dataSize(my) / sizeof(uint32_t) - 1;
- } else if (SubEvt_decoding(my) == SubEvtDecoding_16bitData) {
- i = SubEvt_dataSize(my) / sizeof(uint16_t) - 1;
- } else if (SubEvt_decoding(my) == SubEvtDecoding_8bitData) {
- i = SubEvt_dataSize(my) / sizeof(uint8_t) - 1;
- } else {
- fprintf(stderr, " Unknown decoding: %i\n", SubEvt_decoding(my));
- }
+ i = SubEvt_nrOfDataWords(my);
- if (wordNumber == -1) {
+ if (wordNr == -1) {
val = 0;
- } else if (i > wordNumber) {
- val = SubEvt_dataValue(my, wordNumber - 1);
+ } else if (i > wordNr) {
+ val = SubEvt_dataValue(my, wordNr - 1);
} else {
val = 0;
}
return val;
}
+uint32_t SubEvt_trigType(const void *my, uint32_t wordNr, uint32_t bitmask, uint32_t bitshift)
+{
+ unsigned i;
+ uint32_t trigType;
+ uint32_t val;
+
+ i = SubEvt_nrOfDataWords(my);
+
+ if (i > wordNr) {
+ val = SubEvt_dataValue(my, wordNr - 1);
+ } else {
+ return 0;
+ }
+
+ return (val & bitmask) >> bitshift;
+}
+
char *SubEvt_2charP(const void *my)
{
static char buf[132];