]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
Extended. Sergey.
authorhadaq <hadaq>
Wed, 18 Aug 2010 09:38:30 +0000 (09:38 +0000)
committerhadaq <hadaq>
Wed, 18 Aug 2010 09:38:30 +0000 (09:38 +0000)
ebctrl/ioc/ebctrlApp/src/errbit2.c [new file with mode: 0644]

diff --git a/ebctrl/ioc/ebctrlApp/src/errbit2.c b/ebctrl/ioc/ebctrlApp/src/errbit2.c
new file mode 100644 (file)
index 0000000..683ca5c
--- /dev/null
@@ -0,0 +1,88 @@
+#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);