--- /dev/null
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+
+#include <dbDefs.h>
+#include <registryFunction.h>
+#include <subRecord.h>
+#include <epicsExport.h>
+#include <genSubRecord.h>
+#include <stringinRecord.h>
+
+#include "worker.h"
+
+int errbit2Debug;
+
+long errbit2_init( struct genSubRecord *pgsub )
+{
+ return(0);
+}
+
+long errbit2_proc( struct genSubRecord *pgsub )
+{
+ int shift = 21;
+ uint32_t *out[21];
+ unsigned long tmp;
+ unsigned long nrOfMsgs = 0;
+ int i;
+
+ out[0] = (uint32_t *)pgsub->vala; /* errbit1 */
+ out[1] = (uint32_t *)pgsub->valb; /* errbit2 */
+ out[2] = (uint32_t *)pgsub->valc; /* errbit3 */
+ out[3] = (uint32_t *)pgsub->vald; /* ... */
+ out[4] = (uint32_t *)pgsub->vale;
+ out[5] = (uint32_t *)pgsub->valf;
+ out[6] = (uint32_t *)pgsub->valg;
+ out[7] = (uint32_t *)pgsub->valh;
+ out[8] = (uint32_t *)pgsub->vali;
+ out[9] = (uint32_t *)pgsub->valj;
+ out[10] = (uint32_t *)pgsub->valk;
+ out[11] = (uint32_t *)pgsub->vall;
+ out[12] = (uint32_t *)pgsub->valm;
+ out[13] = (uint32_t *)pgsub->valn;
+ out[14] = (uint32_t *)pgsub->valo;
+ out[15] = (uint32_t *)pgsub->valp;
+ out[16] = (uint32_t *)pgsub->valq;
+ out[17] = (uint32_t *)pgsub->valr;
+ out[18] = (uint32_t *)pgsub->vals;
+ out[19] = (uint32_t *)pgsub->valt;
+ out[20] = (uint32_t *)pgsub->valu;
+
+ for( i=0; i<21; i++ )
+ *out[i] = 0;
+
+ char buf[_POSIX_PATH_MAX];
+ sprintf( buf, "%s%s", "daq_evtbuild", getenv("EBNUM") );
+
+ if( Worker_getStatistic( buf, "nrOfMsgs", &nrOfMsgs ) == -1) {
+ if(errbit2Debug)
+ printf("<E> errbit.c: Worker_getStatistic failed for nrOfMsgs!\n");
+ }
+
+ char errbitbuf[100];
+
+ for( i=shift; i<nrOfMsgs; i++ ) {
+ sprintf( errbitbuf, "errBit%d", i );
+
+ if( Worker_getStatistic( buf, errbitbuf, &tmp ) == -1) {
+
+ if(errbit2Debug)
+ printf("<E> errbit.c: Worker_getStatistic failed for %s!\n", errbitbuf);
+ }
+ else{
+ *out[i-shift] = (uint32_t)tmp;
+
+ if(errbit2Debug)
+ printf("<I> errbit.c: Worker_getStatistic::%s = %lu\n", errbitbuf, tmp);
+ }
+ }
+
+ return(0);
+}
+
+/* Register these symbols for use by IOC code: */
+
+epicsExportAddress(int, errbit2Debug);
+epicsRegisterFunction(errbit2_init);
+epicsRegisterFunction(errbit2_proc);