From: hadaq Date: Mon, 5 May 2008 15:01:19 +0000 (+0000) Subject: new records added. X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=c70f4e3ba8379182962aea35b8ec7dc7b0a0673c;p=daqdata.git new records added. Sergey Yurevich. 05.05.2008 --- diff --git a/ebctrl/ioc/bin/linux-x86/ebctrl b/ebctrl/ioc/bin/linux-x86/ebctrl index 91069f3..7c5444a 100755 Binary files a/ebctrl/ioc/bin/linux-x86/ebctrl and b/ebctrl/ioc/bin/linux-x86/ebctrl differ diff --git a/ebctrl/ioc/db/evtbuild.db b/ebctrl/ioc/db/evtbuild.db index b39319d..f36c927 100644 --- a/ebctrl/ioc/db/evtbuild.db +++ b/ebctrl/ioc/db/evtbuild.db @@ -23,6 +23,8 @@ record(genSub,"HAD:$(eb)") { field(FTF,"LONG") field(FTG,"LONG") field(FTH,"LONG") + field(FTI,"LONG") + field(FTJ,"LONG") field(FTVA,"LONG") field(FTVB,"LONG") field(FTVC,"LONG") @@ -31,6 +33,8 @@ record(genSub,"HAD:$(eb)") { field(FTVF,"LONG") field(FTVG,"LONG") field(FTVH,"LONG") + field(FTVI,"LONG") + field(FTVJ,"LONG") field(NOA,"50") field(NOB,"50") field(NOC,"50") @@ -39,6 +43,8 @@ record(genSub,"HAD:$(eb)") { field(NOF,"50") field(NOG,"50") field(NOH,"50") + field(NOI,"50") + field(NOJ,"50") field(NOVA,"1") field(NOVB,"1") field(NOVC,"1") @@ -47,6 +53,8 @@ record(genSub,"HAD:$(eb)") { field(NOVF,"1") field(NOVG,"100") field(NOVH,"1") + field(NOVI,"1") + field(NOVJ,"1") field(OUTA,"HAD:$(eb):nrOfMsgs PP NMS") field(OUTB,"HAD:$(eb):byteWrit PP NMS") field(OUTC,"HAD:$(eb):evtsComp PP NMS") @@ -55,6 +63,8 @@ record(genSub,"HAD:$(eb)") { field(OUTF,"HAD:$(eb):evtsTagErr PP NMS") field(OUTG,"HAD:$(eb):evtbuildBuff PP NMS") field(OUTH,"HAD:$(eb):status PP NMS") + field(OUTI,"HAD:$(eb):evtsCompletePS PP NMS") + field(OUTJ,"HAD:$(eb):bytesWrittenPS PP NMS") } record(longin,"HAD:$(eb):nrOfMsgs") { @@ -98,6 +108,18 @@ record(longin,"HAD:$(eb):status") field(SCAN,"Passive") field(INP,"Constant") } +record(longin,"HAD:$(eb):evtsCompletePS") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") +} +record(longin,"HAD:$(eb):bytesWrittenPS") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") +} record(waveform,"HAD:$(eb):evtbuildBuff") { field(DTYP,"Soft Channel") diff --git a/ebctrl/ioc/dbd/ebctrl.dbd b/ebctrl/ioc/dbd/ebctrl.dbd index ebabb25..c0fc8da 100644 --- a/ebctrl/ioc/dbd/ebctrl.dbd +++ b/ebctrl/ioc/dbd/ebctrl.dbd @@ -13309,6 +13309,8 @@ device(xxx,CONSTANT,devXxxSoft,"SoftChannel") registrar(asSub) function(evtbuild_init) function(evtbuild_proc) +function(netmem_init) +function(netmem_proc) function(genRunId_init) function(genRunId_proc) function(writeRunId_init) @@ -13316,5 +13318,6 @@ function(writeRunId_proc) variable(asCaDebug,int) variable(dbRecordsOnceOnly,int) variable(evtbuildDebug,int) +variable(netmemDebug,int) variable(genrunidDebug,int) variable(writerunidDebug,int) diff --git a/ebctrl/ioc/ebctrlApp/Db/Makefile b/ebctrl/ioc/ebctrlApp/Db/Makefile index e1ceb99..4bd02a7 100644 --- a/ebctrl/ioc/ebctrlApp/Db/Makefile +++ b/ebctrl/ioc/ebctrlApp/Db/Makefile @@ -11,6 +11,7 @@ include $(TOP)/configure/CONFIG # Create and install (or just install) # databases, templates, substitutions like this DB += evtbuild.db +DB += netmem.db DB += user.substitutions DB += userHost.substitutions diff --git a/ebctrl/ioc/ebctrlApp/Db/evtbuild.db b/ebctrl/ioc/ebctrlApp/Db/evtbuild.db index b39319d..f36c927 100755 --- a/ebctrl/ioc/ebctrlApp/Db/evtbuild.db +++ b/ebctrl/ioc/ebctrlApp/Db/evtbuild.db @@ -23,6 +23,8 @@ record(genSub,"HAD:$(eb)") { field(FTF,"LONG") field(FTG,"LONG") field(FTH,"LONG") + field(FTI,"LONG") + field(FTJ,"LONG") field(FTVA,"LONG") field(FTVB,"LONG") field(FTVC,"LONG") @@ -31,6 +33,8 @@ record(genSub,"HAD:$(eb)") { field(FTVF,"LONG") field(FTVG,"LONG") field(FTVH,"LONG") + field(FTVI,"LONG") + field(FTVJ,"LONG") field(NOA,"50") field(NOB,"50") field(NOC,"50") @@ -39,6 +43,8 @@ record(genSub,"HAD:$(eb)") { field(NOF,"50") field(NOG,"50") field(NOH,"50") + field(NOI,"50") + field(NOJ,"50") field(NOVA,"1") field(NOVB,"1") field(NOVC,"1") @@ -47,6 +53,8 @@ record(genSub,"HAD:$(eb)") { field(NOVF,"1") field(NOVG,"100") field(NOVH,"1") + field(NOVI,"1") + field(NOVJ,"1") field(OUTA,"HAD:$(eb):nrOfMsgs PP NMS") field(OUTB,"HAD:$(eb):byteWrit PP NMS") field(OUTC,"HAD:$(eb):evtsComp PP NMS") @@ -55,6 +63,8 @@ record(genSub,"HAD:$(eb)") { field(OUTF,"HAD:$(eb):evtsTagErr PP NMS") field(OUTG,"HAD:$(eb):evtbuildBuff PP NMS") field(OUTH,"HAD:$(eb):status PP NMS") + field(OUTI,"HAD:$(eb):evtsCompletePS PP NMS") + field(OUTJ,"HAD:$(eb):bytesWrittenPS PP NMS") } record(longin,"HAD:$(eb):nrOfMsgs") { @@ -98,6 +108,18 @@ record(longin,"HAD:$(eb):status") field(SCAN,"Passive") field(INP,"Constant") } +record(longin,"HAD:$(eb):evtsCompletePS") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") +} +record(longin,"HAD:$(eb):bytesWrittenPS") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") +} record(waveform,"HAD:$(eb):evtbuildBuff") { field(DTYP,"Soft Channel") diff --git a/ebctrl/ioc/ebctrlApp/Db/netmem.db b/ebctrl/ioc/ebctrlApp/Db/netmem.db new file mode 100644 index 0000000..6fd5014 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/Db/netmem.db @@ -0,0 +1,121 @@ +record(genSub,"HAD:$(eb):netmem") { + field(DESC,"General Subroutine Record") + field(SCAN,"1 second") + field(PINI,"NO") + field(PHAS,"0") + field(EVNT,"0") + field(DISV,"1") + field(LFLG,"IGNORE") + field(EFLG,"ALWAYS") + field(SDIS,"0.0000000000000000e+00") + field(DISS,"NO_ALARM") + field(PRIO,"LOW") + field(FLNK,"0.000000000000000e+00") + field(SUBL,"0.0000000000000000e+00") + field(BRSV,"NO_ALARM") + field(INAM,"netmem_init") + field(SNAM,"netmem_proc") + field(FTA,"LONG") + field(FTB,"LONG") + field(FTC,"LONG") + field(FTD,"LONG") + field(FTE,"LONG") + field(FTF,"LONG") + field(FTG,"LONG") + field(FTH,"LONG") + field(FTVA,"LONG") + field(FTVB,"LONG") + field(FTVC,"LONG") + field(FTVD,"LONG") + field(FTVE,"LONG") + field(FTVF,"LONG") + field(FTVG,"LONG") + field(FTVH,"LONG") + field(NOA,"50") + field(NOB,"50") + field(NOC,"50") + field(NOD,"50") + field(NOE,"50") + field(NOF,"50") + field(NOG,"50") + field(NOH,"50") + field(NOVA,"1") + field(NOVB,"100") + field(NOVC,"100") + field(NOVD,"100") + field(NOVE,"100") + field(NOVF,"100") + field(NOVG,"100") + field(NOVH,"100") + field(OUTA,"HAD:$(eb):netmem:nrOfMsgs PP NMS") + field(OUTB,"HAD:$(eb):netmem:buff PP NMS") + field(OUTC,"HAD:$(eb):netmem:pktsReceived PP NMS") + field(OUTD,"HAD:$(eb):netmem:msgsReceived PP NMS") + field(OUTE,"HAD:$(eb):netmem:pktsDiscarded PP NMS") + field(OUTF,"HAD:$(eb):netmem:msgsDiscarded PP NMS") + field(OUTG,"HAD:$(eb):netmem:bytesReceived PP NMS") + field(OUTH,"HAD:$(eb):netmem:bytesReceivedPS PP NMS") +} +record(longin,"HAD:$(eb):netmem:nrOfMsgs") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") +} +record(waveform,"HAD:$(eb):netmem:buff") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") + field(NELM,"100") + field(FTVL,"LONG") +} +record(waveform,"HAD:$(eb):netmem:pktsReceived") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") + field(NELM,"100") + field(FTVL,"LONG") +} +record(waveform,"HAD:$(eb):netmem:msgsReceived") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") + field(NELM,"100") + field(FTVL,"LONG") +} +record(waveform,"HAD:$(eb):netmem:pktsDiscarded") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") + field(NELM,"100") + field(FTVL,"LONG") +} +record(waveform,"HAD:$(eb):netmem:msgsDiscarded") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") + field(NELM,"100") + field(FTVL,"LONG") +} +record(waveform,"HAD:$(eb):netmem:bytesReceived") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") + field(NELM,"100") + field(FTVL,"LONG") +} +record(waveform,"HAD:$(eb):netmem:bytesReceivedPS") +{ + field(DTYP,"Soft Channel") + field(SCAN,"Passive") + field(INP,"Constant") + field(NELM,"100") + field(FTVL,"LONG") +} + diff --git a/ebctrl/ioc/ebctrlApp/src/Makefile b/ebctrl/ioc/ebctrlApp/src/Makefile index 46985d5..5f0c118 100644 --- a/ebctrl/ioc/ebctrlApp/src/Makefile +++ b/ebctrl/ioc/ebctrlApp/src/Makefile @@ -38,6 +38,7 @@ ebctrl_DBD += base.dbd ebctrl_DBD += xxxSupport.dbd ebctrl_DBD += genSubRecord.dbd ebctrl_DBD += evtbuild.dbd +ebctrl_DBD += netmem.dbd ebctrl_DBD += genrunid.dbd ebctrl_DBD += writerunid.dbd @@ -49,6 +50,7 @@ ebctrl_SRCS_vxWorks += -nil- # Add locally compiled object code ebctrl_SRCS += genSubRecord.c ebctrl_SRCS += evtbuild.c +ebctrl_SRCS += netmem.c ebctrl_SRCS += genrunid.c ebctrl_SRCS += writerunid.c diff --git a/ebctrl/ioc/ebctrlApp/src/evtbuild.c b/ebctrl/ioc/ebctrlApp/src/evtbuild.c index b0a9baa..8a2385c 100644 --- a/ebctrl/ioc/ebctrlApp/src/evtbuild.c +++ b/ebctrl/ioc/ebctrlApp/src/evtbuild.c @@ -23,14 +23,16 @@ long evtbuild_proc( struct genSubRecord *pgsub ) unsigned long *temp; int i; - out[0] = (unsigned long *)pgsub->vala; - out[1] = (unsigned long *)pgsub->valb; - out[2] = (unsigned long *)pgsub->valc; - out[3] = (unsigned long *)pgsub->vald; - out[4] = (unsigned long *)pgsub->vale; - out[5] = (unsigned long *)pgsub->valf; - out[6] = (unsigned long *)pgsub->valg; - out[7] = (unsigned long *)pgsub->valh; + out[0] = (unsigned long *)pgsub->vala; /* nrOfMsgs */ + out[1] = (unsigned long *)pgsub->valb; /* bytesWritten */ + out[2] = (unsigned long *)pgsub->valc; /* evtsComplete */ + out[3] = (unsigned long *)pgsub->vald; /* evtsDiscarded */ + out[4] = (unsigned long *)pgsub->vale; /* evtsDataError */ + out[5] = (unsigned long *)pgsub->valf; /* evtsTagError */ + out[6] = (unsigned long *)pgsub->valg; /* evtbuildBuff */ + out[7] = (unsigned long *)pgsub->valh; /* status */ + out[8] = (unsigned long *)pgsub->vali; /* evtsCompletePS */ + out[8] = (unsigned long *)pgsub->valj; /* bytesWrittenPS */ for( i=0; i<7; i++ ) *out[i] = 0; @@ -73,16 +75,24 @@ long evtbuild_proc( struct genSubRecord *pgsub ) if( Worker_getStatistic( "daq_evtbuild", buf, out[6] ) == -1) { if(evtbuildDebug) - printf("Worker_getStatistic failed for %s!\n", buf); + printf("evtbuild.c: Worker_getStatistic failed for %s!\n", buf); } else { if(evtbuildDebug) - printf("%s = %lu\n", buf, *out[6]); + printf("evtbuild.c, %s = %lu\n", buf, *out[6]); out[6]++; } } + if( Worker_getStatistic( "daq_evtbuild", "evtsCompletePS", out[8] ) == -1) + if(evtbuildDebug) + printf("Worker_getStatistic failed for evtsCompletePS!\n"); + + if( Worker_getStatistic( "daq_evtbuild", "bytesWrittenPS", out[9] ) == -1) + if(evtbuildDebug) + printf("Worker_getStatistic failed for bytesWrittenPS!\n"); + return(0); } diff --git a/ebctrl/ioc/ebctrlApp/src/netmem.c b/ebctrl/ioc/ebctrlApp/src/netmem.c new file mode 100644 index 0000000..74f272a --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/netmem.c @@ -0,0 +1,167 @@ +#include +#include + +#include +#include +#include +#include +#include + +#include "worker.h" + +int netmemDebug; + +long netmem_init( struct genSubRecord *pgsub ) +{ + return(0); +} + +long netmem_proc( struct genSubRecord *pgsub ) +{ + + unsigned long *out[2]; + int i; + + out[0] = (unsigned long *)pgsub->vala; /* number of sources */ + out[1] = (unsigned long *)pgsub->valb; /* daq_netmem buff fill levels */ + out[2] = (unsigned long *)pgsub->valc; /* pktsReceived */ + out[3] = (unsigned long *)pgsub->vald; /* msgsReceived */ + out[4] = (unsigned long *)pgsub->vale; /* pktsDiscarded */ + out[5] = (unsigned long *)pgsub->valf; /* msgsDiscarded */ + out[6] = (unsigned long *)pgsub->valg; /* bytesReceived */ + out[7] = (unsigned long *)pgsub->valh; /* bytesReceivedPS */ + + for( i=0; i<2; i++ ) + *out[1] = 0; + + if( Worker_getStatistic( "daq_evtbuild", "nrOfMsgs", out[0] ) == -1) { + if(netmemDebug) + printf("netmem.c: Worker_getStatistic failed for nrOfMsgs!\n"); + } + else { + if(netmemDebug) + printf("netmem.c: Worker_getStatistic::nrOfMsgs = %lu\n", (*out[0])); + } + + char buf[100]; + for( i=0; i<(*out[0]); i++ ) { + + sprintf( buf, "netmemBuff%d", i ); + + if( Worker_getStatistic( "daq_netmem", buf, out[1] ) == -1) { + if(netmemDebug) + printf("netmem.c: Worker_getStatistic failed for %s!\n", buf); + } + else { + if(netmemDebug) + printf("netmem.c: %s = %lu\n", buf, *out[1]); + + out[1]++; + } + } + + for( i=0; i<(*out[0]); i++ ) { + + sprintf( buf, "pktsReceived%d", i ); + + if( Worker_getStatistic( "daq_netmem", buf, out[2] ) == -1) { + if(netmemDebug) + printf("netmem.c: Worker_getStatistic failed for %s!\n", buf); + } + else { + if(netmemDebug) + printf("netmem.c: %s = %lu\n", buf, *out[2]); + + out[2]++; + } + } + + for( i=0; i<(*out[0]); i++ ) { + + sprintf( buf, "msgsReceived%d", i ); + + if( Worker_getStatistic( "daq_netmem", buf, out[3] ) == -1) { + if(netmemDebug) + printf("netmem.c: Worker_getStatistic failed for %s!\n", buf); + } + else { + if(netmemDebug) + printf("netmem.c: %s = %lu\n", buf, *out[3]); + + out[3]++; + } + } + + for( i=0; i<(*out[0]); i++ ) { + + sprintf( buf, "pktsDiscarded%d", i ); + + if( Worker_getStatistic( "daq_netmem", buf, out[4] ) == -1) { + if(netmemDebug) + printf("netmem.c: Worker_getStatistic failed for %s!\n", buf); + } + else { + if(netmemDebug) + printf("netmem.c: %s = %lu\n", buf, *out[4]); + + out[4]++; + } + } + + for( i=0; i<(*out[0]); i++ ) { + + sprintf( buf, "msgsDiscarded%d", i ); + + if( Worker_getStatistic( "daq_netmem", buf, out[5] ) == -1) { + if(netmemDebug) + printf("netmem.c: Worker_getStatistic failed for %s!\n", buf); + } + else { + if(netmemDebug) + printf("netmem.c: %s = %lu\n", buf, *out[5]); + + out[5]++; + } + } + + for( i=0; i<(*out[0]); i++ ) { + + sprintf( buf, "bytesReceived%d", i ); + + if( Worker_getStatistic( "daq_netmem", buf, out[6] ) == -1) { + if(netmemDebug) + printf("netmem.c: Worker_getStatistic failed for %s!\n", buf); + } + else { + if(netmemDebug) + printf("netmem.c: %s = %lu\n", buf, *out[6]); + + out[6]++; + } + } + + for( i=0; i<(*out[0]); i++ ) { + + sprintf( buf, "bytesReceivedPS%d", i ); + + if( Worker_getStatistic( "daq_netmem", buf, out[7] ) == -1) { + if(netmemDebug) + printf("netmem.c: Worker_getStatistic failed for %s!\n", buf); + } + else { + if(netmemDebug) + printf("netmem.c: %s = %lu\n", buf, *out[7]); + + out[7]++; + } + } + + + return(0); +} + +/* Register these symbols for use by IOC code: */ + +epicsExportAddress(int, netmemDebug); +epicsRegisterFunction(netmem_init); +epicsRegisterFunction(netmem_proc); diff --git a/ebctrl/ioc/ebctrlApp/src/netmem.dbd b/ebctrl/ioc/ebctrlApp/src/netmem.dbd new file mode 100644 index 0000000..34a6685 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/netmem.dbd @@ -0,0 +1,3 @@ +variable(netmemDebug) +function(netmem_init) +function(netmem_proc) \ No newline at end of file diff --git a/ebctrl/ioc/ebctrlApp/src/writerunid.c b/ebctrl/ioc/ebctrlApp/src/writerunid.c index 6e4cf4f..836e351 100644 --- a/ebctrl/ioc/ebctrlApp/src/writerunid.c +++ b/ebctrl/ioc/ebctrlApp/src/writerunid.c @@ -42,6 +42,7 @@ long writeRunId_proc( struct subRecord *psub ) else printf(" writerunid.c: check: Worker_getStatistic runId = %lu\n", runId_check); } + return(0); } diff --git a/ebctrl/ioc/iocBoot/iocebctrl/st.cmd b/ebctrl/ioc/iocBoot/iocebctrl/st.cmd index 25e36ea..b6d6435 100644 --- a/ebctrl/ioc/iocBoot/iocebctrl/st.cmd +++ b/ebctrl/ioc/iocBoot/iocebctrl/st.cmd @@ -14,9 +14,11 @@ ebctrl_registerRecordDeviceDriver(pdbbase) ## Load record instances dbLoadTemplate "db/userHost.substitutions" dbLoadRecords("db/evtbuild.db","eb=eb01") +dbLoadRecords("db/netmem.db","eb=eb01") ## Set this to see messages from mySub var evtbuildDebug 0 +var netmemDebug 1 var genrunidDebug 1 var writerunidDebug 1 diff --git a/ebctrl/ioc/lib/linux-x86/libxxxSupport.a b/ebctrl/ioc/lib/linux-x86/libxxxSupport.a index 5edb3a5..bae92fb 100644 Binary files a/ebctrl/ioc/lib/linux-x86/libxxxSupport.a and b/ebctrl/ioc/lib/linux-x86/libxxxSupport.a differ