diff --git a/src/std/dev/devAoSoftCallback.c b/src/std/dev/devAoSoftCallback.c index 35c3f6fe2..c1fb72f13 100644 --- a/src/std/dev/devAoSoftCallback.c +++ b/src/std/dev/devAoSoftCallback.c @@ -54,17 +54,15 @@ static long write_ao(aoRecord *prec) struct link *plink = &prec->out; long status; - if(prec->pact) return(0); - if(plink->type!=CA_LINK) { - status = dbPutLink(plink,DBR_DOUBLE,&prec->oval,1); - return(status); - } - status = dbCaPutLinkCallback(plink,DBR_DOUBLE,&prec->oval,1, - dbCaCallbackProcess,plink); - if(status) { - recGblSetSevr(prec,LINK_ALARM,INVALID_ALARM); - return(status); - } - prec->pact = TRUE; - return(0); + if (prec->pact) + return 0; + + status = dbPutLinkAsync(plink, DBR_DOUBLE, &prec->oval, 1); + if (!status) + prec->pact = TRUE; + else if (status == S_db_noLSET) + status = dbPutLink(plink, DBR_DOUBLE, &prec->oval, 1); + + return status; } + diff --git a/src/std/dev/devBoSoftCallback.c b/src/std/dev/devBoSoftCallback.c index 4cdb51a29..ffb68e525 100644 --- a/src/std/dev/devBoSoftCallback.c +++ b/src/std/dev/devBoSoftCallback.c @@ -3,9 +3,8 @@ * 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. +* EPICS BASE is distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. \*************************************************************************/ /* devBoCallbackSoft.c */ @@ -54,17 +53,15 @@ static long write_bo(boRecord *prec) struct link *plink = &prec->out; long status; - if(prec->pact) return(0); - if(plink->type!=CA_LINK) { - status = dbPutLink(plink,DBR_USHORT,&prec->val,1); - return(status); - } - status = dbCaPutLinkCallback(plink,DBR_USHORT,&prec->val,1, - dbCaCallbackProcess,plink); - if(status) { - recGblSetSevr(prec,LINK_ALARM,INVALID_ALARM); - return(status); - } - prec->pact = TRUE; - return(0); + if (prec->pact) + return 0; + + status = dbPutLinkAsync(plink, DBR_USHORT, &prec->val, 1); + if (!status) + prec->pact = TRUE; + else if (status == S_db_noLSET) + status = dbPutLink(plink, DBR_USHORT, &prec->val, 1); + + return status; } + diff --git a/src/std/dev/devCalcoutSoftCallback.c b/src/std/dev/devCalcoutSoftCallback.c index 0552df826..94f9d4f99 100644 --- a/src/std/dev/devCalcoutSoftCallback.c +++ b/src/std/dev/devCalcoutSoftCallback.c @@ -48,17 +48,15 @@ static long write_calcout(calcoutRecord *prec) struct link *plink = &prec->out; long status; - if (prec->pact) return 0; - if (plink->type != CA_LINK) { + if (prec->pact) + return 0; + + status = dbPutLinkAsync(plink, DBR_DOUBLE, &prec->oval, 1); + if (!status) + prec->pact = TRUE; + else if (status == S_db_noLSET) status = dbPutLink(plink, DBR_DOUBLE, &prec->oval, 1); - return status; - } - status = dbCaPutLinkCallback(plink, DBR_DOUBLE, &prec->oval, 1, - dbCaCallbackProcess, plink); - if (status) { - recGblSetSevr(prec, LINK_ALARM, INVALID_ALARM); - return status; - } - prec->pact = TRUE; + return 0; } + diff --git a/src/std/dev/devLoSoftCallback.c b/src/std/dev/devLoSoftCallback.c index 2bc4a7e46..f211957b5 100644 --- a/src/std/dev/devLoSoftCallback.c +++ b/src/std/dev/devLoSoftCallback.c @@ -3,10 +3,10 @@ * 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. +* EPICS BASE is distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. \*************************************************************************/ + /* devLoSoftCallback.c */ /* * Author: Marty Kraimer @@ -51,17 +51,15 @@ static long write_longout(longoutRecord *prec) struct link *plink = &prec->out; long status; - if(prec->pact) return(0); - if(plink->type!=CA_LINK) { - status = dbPutLink(plink,DBR_LONG,&prec->val,1); - return(status); - } - status = dbCaPutLinkCallback(plink,DBR_LONG,&prec->val,1, - dbCaCallbackProcess,plink); - if(status) { - recGblSetSevr(prec,LINK_ALARM,INVALID_ALARM); - return(status); - } - prec->pact = TRUE; - return(0); + if (prec->pact) + return 0; + + status = dbPutLinkAsync(plink, DBR_LONG, &prec->val, 1); + if (!status) + prec->pact = TRUE; + else if (status == S_db_noLSET) + status = dbPutLink(plink, DBR_LONG, &prec->val, 1); + + return status; } + diff --git a/src/std/dev/devLsoSoftCallback.c b/src/std/dev/devLsoSoftCallback.c index 4ab7ead9d..616b27692 100644 --- a/src/std/dev/devLsoSoftCallback.c +++ b/src/std/dev/devLsoSoftCallback.c @@ -31,21 +31,17 @@ static long write_string(lsoRecord *prec) len = 1; } - if (plink->type != CA_LINK) - return dbPutLink(plink, dtyp, prec->val, len); + status = dbPutLinkAsync(plink, dtyp, prec->val, len); + if (!status) + prec->pact = TRUE; + else if (status == S_db_noLSET) + status = dbPutLink(plink, dtyp, prec->val, len); - status = dbCaPutLinkCallback(plink, dtyp, prec->val, len, - dbCaCallbackProcess, plink); - if (status) { - recGblSetSevr(prec, LINK_ALARM, INVALID_ALARM); - return status; - } - - prec->pact = TRUE; - return 0; + return status; } lsodset devLsoSoftCallback = { 5, NULL, NULL, NULL, NULL, write_string }; epicsExportAddress(dset, devLsoSoftCallback); + diff --git a/src/std/dev/devMbboDirectSoftCallback.c b/src/std/dev/devMbboDirectSoftCallback.c index 8c71ef77e..e64c3d41c 100644 --- a/src/std/dev/devMbboDirectSoftCallback.c +++ b/src/std/dev/devMbboDirectSoftCallback.c @@ -29,20 +29,13 @@ static long write_mbbo(mbboDirectRecord *prec) if (prec->pact) return 0; - if (plink->type != CA_LINK) { + status = dbPutLinkAsync(plink, DBR_USHORT, &prec->val, 1); + if (!status) + prec->pact = TRUE; + else if (status == S_db_noLSET) status = dbPutLink(plink, DBR_USHORT, &prec->val, 1); - return status; - } - status = dbCaPutLinkCallback(plink, DBR_USHORT, &prec->val, 1, - dbCaCallbackProcess, plink); - if (status) { - recGblSetSevr(prec, LINK_ALARM, INVALID_ALARM); - return status; - } - - prec->pact = TRUE; - return 0; + return status; } /* Create the dset for devMbboSoft */ diff --git a/src/std/dev/devMbboSoftCallback.c b/src/std/dev/devMbboSoftCallback.c index 705308163..fd5fe405a 100644 --- a/src/std/dev/devMbboSoftCallback.c +++ b/src/std/dev/devMbboSoftCallback.c @@ -3,10 +3,10 @@ * 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. +* EPICS BASE is distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. \*************************************************************************/ + /* devMbboSoftCallback.c */ /* * Author: Marty Kraimer @@ -50,17 +50,15 @@ static long write_mbbo(mbboRecord *prec) struct link *plink = &prec->out; long status; - if(prec->pact) return(0); - if(plink->type!=CA_LINK) { - status = dbPutLink(plink,DBR_USHORT,&prec->val,1); - return(status); - } - status = dbCaPutLinkCallback(plink,DBR_USHORT,&prec->val,1, - dbCaCallbackProcess,plink); - if(status) { - recGblSetSevr(prec,LINK_ALARM,INVALID_ALARM); - return(status); - } - prec->pact = TRUE; - return(0); + if (prec->pact) + return 0; + + status = dbPutLinkAsync(plink, DBR_USHORT, &prec->val, 1); + if (!status) + prec->pact = TRUE; + else if (status == S_db_noLSET) + status = dbPutLink(plink, DBR_USHORT, &prec->val, 1); + + return status; } + diff --git a/src/std/dev/devPrintfSoftCallback.c b/src/std/dev/devPrintfSoftCallback.c index 7f9314d9e..51fde605d 100644 --- a/src/std/dev/devPrintfSoftCallback.c +++ b/src/std/dev/devPrintfSoftCallback.c @@ -31,18 +31,13 @@ static long write_string(printfRecord *prec) len = 1; } - if (plink->type != CA_LINK) - return dbPutLink(plink, dtyp, prec->val, len); + status = dbPutLinkAsync(plink, dtyp, prec->val, len); + if (!status) + prec->pact = TRUE; + else if (status == S_db_noLSET) + status = dbPutLink(plink, dtyp, prec->val, len); - status = dbCaPutLinkCallback(plink, dtyp, prec->val, len, - dbCaCallbackProcess, plink); - if (status) { - recGblSetSevr(prec, LINK_ALARM, INVALID_ALARM); - return status; - } - - prec->pact = TRUE; - return 0; + return status; } printfdset devPrintfSoftCallback = { diff --git a/src/std/dev/devSoSoftCallback.c b/src/std/dev/devSoSoftCallback.c index a39e14b4d..df8c5d819 100644 --- a/src/std/dev/devSoSoftCallback.c +++ b/src/std/dev/devSoSoftCallback.c @@ -3,11 +3,10 @@ * 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. +* EPICS BASE is distributed subject to a Software License Agreement found +* in file LICENSE that is included with this distribution. \*************************************************************************/ -/* $Revision-Id$ */ + /* * Author: Marty Kraimer * Date: 04NOV2003 @@ -50,19 +49,15 @@ static long write_stringout(stringoutRecord *prec) struct link *plink = &prec->out; long status; - if (prec->pact) return 0; + if (prec->pact) + return 0; - if (plink->type != CA_LINK) { - return dbPutLink(plink, DBR_STRING, &prec->val, 1); - } + status = dbPutLinkAsync(plink, DBR_STRING, &prec->val, 1); + if (!status) + prec->pact = TRUE; + else if (status == S_db_noLSET) + status = dbPutLink(plink, DBR_STRING, &prec->val, 1); - status = dbCaPutLinkCallback(plink, DBR_STRING, &prec->val, 1, - dbCaCallbackProcess, plink); - if (status) { - recGblSetSevr(prec, LINK_ALARM, INVALID_ALARM); - return status; - } - - prec->pact = TRUE; - return 0; + return status; } +