add ascar

This commit is contained in:
Marty Kraimer
2004-02-10 14:52:46 +00:00
parent 29335e7672
commit bc81744d8f
3 changed files with 55 additions and 0 deletions

View File

@@ -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);
}

View File

@@ -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

View File

@@ -17,6 +17,7 @@
#include <ctype.h>
#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);
}