add ascar
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user