From: hadaq Date: Fri, 29 Oct 2010 09:21:56 +0000 (+0000) Subject: errbitstat added. Sergey. X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=586b1cf2a9c69a351c261bd24dbe2225e964f7cf;p=daqdata.git errbitstat added. Sergey. --- diff --git a/ebctrl/ioc/ebctrlApp/src/Makefile b/ebctrl/ioc/ebctrlApp/src/Makefile index 22812a7..365428c 100644 --- a/ebctrl/ioc/ebctrlApp/src/Makefile +++ b/ebctrl/ioc/ebctrlApp/src/Makefile @@ -43,6 +43,7 @@ ebctrl_DBD += genrunid.dbd ebctrl_DBD += writerunid.dbd ebctrl_DBD += errbit1.dbd ebctrl_DBD += errbit2.dbd +ebctrl_DBD += errbitstat.dbd ebctrl_DBD += trignr1.dbd ebctrl_DBD += trignr2.dbd ebctrl_DBD += portnr1.dbd @@ -63,6 +64,7 @@ ebctrl_SRCS += genrunid.c ebctrl_SRCS += writerunid.c ebctrl_SRCS += errbit1.c ebctrl_SRCS += errbit2.c +ebctrl_SRCS += errbitstat.c ebctrl_SRCS += trignr1.c ebctrl_SRCS += trignr2.c ebctrl_SRCS += portnr1.c diff --git a/ebctrl/ioc/ebctrlApp/src/errbitstat.c b/ebctrl/ioc/ebctrlApp/src/errbitstat.c new file mode 100644 index 0000000..004857e --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/errbitstat.c @@ -0,0 +1,120 @@ +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "worker.h" + +int errbitstatDebug; + +long errbitstat_init( struct genSubRecord *pgsub ) +{ + return(0); +} + +long errbitstat_proc( struct genSubRecord *pgsub ) +{ + uint32_t *out[10]; + unsigned long tmp; + int i; + + out[0] = (uint32_t *)pgsub->vala; /* errbit pattern 0 */ + out[1] = (uint32_t *)pgsub->valb; /* errbit pattern 1 */ + out[2] = (uint32_t *)pgsub->valc; /* errbit pattern 2 */ + out[3] = (uint32_t *)pgsub->vald; /* errbit pattern 3 */ + out[4] = (uint32_t *)pgsub->vale; /* errbit pattern 4 */ + out[5] = (uint32_t *)pgsub->valf; /* errbit statistics 0 */ + out[6] = (uint32_t *)pgsub->valg; /* errbit statistics 1 */ + out[7] = (uint32_t *)pgsub->valh; /* errbit statistics 2 */ + out[8] = (uint32_t *)pgsub->vali; /* errbit statistics 3 */ + out[9] = (uint32_t *)pgsub->valj; /* errbit statistics 4 */ + + for( i=0; i<10; i++ ) + *out[i] = 0; + + char buf[_POSIX_PATH_MAX]; + sprintf( buf, "%s%s", "daq_evtbuild", getenv("EBNUM") ); + + /* + * *************** error bit patterns *************** + */ + + for (i = 0; i < 5; i++) { + char name[100]; + sprintf(name, "errBitPtrn%d", i); + + if( Worker_getStatistic( buf, name, &tmp ) == -1) { + *out[i] = 0; + if(errbitstatDebug) + printf(" errbitstat.c: Worker_getStatistic failed for %s!\n", name); + } + else{ + *out[i] = (uint32_t)tmp; + + if(errbitstatDebug) + printf(" errbitstat.c: %s = %lu\n", name, tmp); + } + } + + /* + * *************** nrOfMsgs and status of EB *************** + */ + + uint32_t nrOfMsgs = 0; + + if( Worker_getStatistic( buf, "nrOfMsgs", &tmp ) == -1) { + nrOfMsgs = 0; + if(errbitstatDebug) + printf(" errbitstat.c: Worker_getStatistic failed for nrOfMsgs!\n"); + } + else { + nrOfMsgs = (uint32_t)tmp; /* nrOfMsgs */ + } + + /* + * *************** error bit statictics *************** + */ + int j; + + for( i=0; i<5; i++ ){ + for( j=0; j errbitstat.c: Worker_getStatistic failed for %s!\n", name); + } + else { + *out[i+5] = (uint32_t)tmp; /* nrOfMsgs */ + + if(errbitstatDebug) + printf(" errbitstat.c: %s = %lu\n", name, tmp); + + out[i+5]++; + } + } + } + +return(0); +} + +/* Register these symbols for use by IOC code: */ + +epicsExportAddress(int, errbitstatDebug); +epicsRegisterFunction(errbitstat_init); +epicsRegisterFunction(errbitstat_proc); + + diff --git a/ebctrl/ioc/ebctrlApp/src/errbitstat.dbd b/ebctrl/ioc/ebctrlApp/src/errbitstat.dbd new file mode 100644 index 0000000..eebecfd --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/errbitstat.dbd @@ -0,0 +1,3 @@ +variable(errbitstatDebug) +function(errbitstat_init) +function(errbitstat_proc) \ No newline at end of file