diff --git a/src/dev/softDev/devCalcoutSoft.c b/src/dev/softDev/devCalcoutSoft.c new file mode 100644 index 000000000..08a5f0a10 --- /dev/null +++ b/src/dev/softDev/devCalcoutSoft.c @@ -0,0 +1,54 @@ +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* devCalcoutSoft.c */ + +/* + * Author: Marty Kraimer + * Date: 05DEC2003 + */ + +#include +#include +#include + +#include "alarm.h" +#include "dbDefs.h" +#include "dbAccess.h" +#include "recGbl.h" +#include "recSup.h" +#include "devSup.h" +#include "link.h" +#include "special.h" +#include "calcoutRecord.h" +#include "epicsExport.h" + +static long write(); +struct { + long number; + DEVSUPFUN report; + DEVSUPFUN init; + DEVSUPFUN init_record; + DEVSUPFUN get_ioint_info; + DEVSUPFUN write; + DEVSUPFUN special_linconv; +}devCalcoutSoft={ + 6, + NULL, + NULL, + NULL, + NULL, + write, + NULL}; +epicsExportAddress(dset,devCalcoutSoft); + +static long write(calcoutRecord *pcalcout) +{ + return dbPutLink(&pcalcout->out,DBR_DOUBLE, &pcalcout->oval,1); +} diff --git a/src/dev/softDev/devCalcoutSoftCallback.c b/src/dev/softDev/devCalcoutSoftCallback.c new file mode 100644 index 000000000..a47957cbd --- /dev/null +++ b/src/dev/softDev/devCalcoutSoftCallback.c @@ -0,0 +1,69 @@ +/*************************************************************************\ +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* National Laboratory. +* Copyright (c) 2002 The Regents of the University of California, as +* Operator of Los Alamos National Laboratory. +* EPICS BASE Versions 3.13.7 +* and higher are distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. +\*************************************************************************/ +/* devCalcoutSoftCallback.c */ + +/* + * Author: Marty Kraimer + * Date: 05DEC2003 + */ + +#include +#include +#include + +#include "alarm.h" +#include "dbDefs.h" +#include "dbAccess.h" +#include "recGbl.h" +#include "recSup.h" +#include "devSup.h" +#include "link.h" +#include "special.h" +#include "calcoutRecord.h" +#include "epicsExport.h" + +static long write(); +struct { + long number; + DEVSUPFUN report; + DEVSUPFUN init; + DEVSUPFUN init_record; + DEVSUPFUN get_ioint_info; + DEVSUPFUN write; + DEVSUPFUN special_linconv; +}devCalcoutSoftCallback={ + 6, + NULL, + NULL, + NULL, + NULL, + write, + NULL}; +epicsExportAddress(dset,devCalcoutSoftCallback); + +static long write(calcoutRecord *pcalcout) +{ + struct link *plink = &pcalcout->out; + long status; + + if(pcalcout->pact) return(0); + if(plink->type!=CA_LINK) { + status = dbPutLink(plink,DBR_DOUBLE,&pcalcout->oval,1); + return(status); + } + status = dbCaPutLinkCallback(plink,DBR_DOUBLE,&pcalcout->oval,1, + (dbCaCallback)dbCaCallbackProcess,plink); + if(status) { + recGblSetSevr(pcalcout,LINK_ALARM,INVALID_ALARM); + return(status); + } + pcalcout->pact = TRUE; + return(0); +}