From bc81744d8f712a166ef956678fde62a2ed6a38ee Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Tue, 10 Feb 2004 14:52:46 +0000 Subject: [PATCH] add ascar --- src/as/asCa.c | 37 +++++++++++++++++++++++++++++++++++++ src/as/asCa.h | 1 + src/iocsh/asTestRegister.c | 17 +++++++++++++++++ 3 files changed, 55 insertions(+) diff --git a/src/as/asCa.c b/src/as/asCa.c index d99de94c0..3c1cee4b1 100644 --- a/src/as/asCa.c +++ b/src/as/asCa.c @@ -259,3 +259,40 @@ void epicsShareAPI asCaStop(void) if(asCaDebug) printf("asCaStop done\n"); epicsMutexUnlock(asCaTaskLock); } + +int epicsShareAPI ascar(int level) +{ + ASG *pasg; + int n=0,nbad=0; + enum channel_state state; + + pasg = (ASG *)ellFirst(&pasbase->asgList); + while(pasg) { + ASGINP *pasginp; + pasginp = (ASGINP *)ellFirst(&pasg->inpList); + while(pasginp) { + CAPVT *pcapvt = (CAPVT *)pasginp->capvt; + chid chid = pcapvt->chid; + pcapvt = pasginp->capvt; + ++n; + state = ca_state(chid); + if(state!=cs_conn) ++nbad; + if(level>1 || (level==1 && state!=cs_conn)) { + printf("connected:"); + if(state==cs_never_conn) printf("never "); + else if(state==cs_prev_conn) printf("prev "); + else if(state==cs_conn) printf("yes "); + else if(state==cs_closed) printf("closed"); + else printf("unknown"); + printf(" read:%s write:%s", + (ca_read_access(chid) ? "yes" : "no "), + (ca_write_access(chid) ? "yes" : "no ")); + printf(" %s %s\n", ca_name(chid),ca_host_name(chid)); + } + pasginp = (ASGINP *)ellNext((ELLNODE *)pasginp); + } + pasg = (ASG *)ellNext((ELLNODE *)pasg); + } + printf("%d channels %d not connected\n",n,nbad); + return(0); +} diff --git a/src/as/asCa.h b/src/as/asCa.h index 9d9e6753c..587602c8b 100644 --- a/src/as/asCa.h +++ b/src/as/asCa.h @@ -20,6 +20,7 @@ extern "C" { epicsShareFunc void epicsShareAPI asCaStart(void); epicsShareFunc void epicsShareAPI asCaStop(void); +epicsShareFunc int epicsShareAPI ascar(int level); epicsShareExtern int asCaDebug; #ifdef __cplusplus diff --git a/src/iocsh/asTestRegister.c b/src/iocsh/asTestRegister.c index 4c1bb251a..13fa36719 100644 --- a/src/iocsh/asTestRegister.c +++ b/src/iocsh/asTestRegister.c @@ -17,6 +17,7 @@ #include #include "asDbLib.h" +#include "asCa.h" #define epicsExportSharedSymbols #include "iocsh.h" #include "asTestRegister.h" @@ -103,6 +104,20 @@ static void astacCallFunc(const iocshArgBuf *args) astac(args[0].sval,args[1].sval,args[2].sval); } +/* ascar */ +static const iocshArg ascarArg0 = { "level",iocshArgInt}; +static const iocshArg * const ascarArgs[1] = {&ascarArg0}; +static const iocshFuncDef ascarFuncDef = {"ascar",1,ascarArgs}; +static void ascarCallFunc(const iocshArgBuf *args) +{ + ascar(args[0].ival); +} + +static int * const pasCaDebug = &asCaDebug; +static struct iocshVarDef vardefs[] = { + {"asCaDebug", iocshArgInt,(void *)&asCaDebug}, + {0,iocshArgInt,0} +}; void epicsShareAPI asTestRegister(void) { @@ -115,4 +130,6 @@ void epicsShareAPI asTestRegister(void) iocshRegister(&asprulesFuncDef,asprulesCallFunc); iocshRegister(&aspmemFuncDef,aspmemCallFunc); iocshRegister(&astacFuncDef,astacCallFunc); + iocshRegister(&ascarFuncDef,ascarCallFunc); + iocshRegisterVariable(vardefs); }