diff --git a/src/ioc/db/dbLink.c b/src/ioc/db/dbLink.c index c90dcb3df..d3e73267d 100644 --- a/src/ioc/db/dbLink.c +++ b/src/ioc/db/dbLink.c @@ -291,22 +291,29 @@ long dbGetNelements(const struct link *plink, long *nelements) return plset->getElements(plink, nelements); } -long dbGetLink(struct link *plink, short dbrType, void *pbuffer, - long *poptions, long *pnRequest) +long dbTryGetLink(struct link *plink, short dbrType, void *pbuffer, + long *poptions, long *pnRequest) { - struct dbCommon *precord = plink->precord; lset *plset = plink->lset; - long status; if (poptions && *poptions) { - printf("dbGetLink: Use of poptions no longer supported\n"); + printf("dbTryGetLink: Use of poptions no longer supported\n"); *poptions = 0; } if (!plset || !plset->getValue) return -1; - status = plset->getValue(plink, dbrType, pbuffer, pnRequest); + return plset->getValue(plink, dbrType, pbuffer, pnRequest); +} + +long dbGetLink(struct link *plink, short dbrType, void *pbuffer, + long *poptions, long *pnRequest) +{ + struct dbCommon *precord = plink->precord; + long status; + + status = dbTryGetLink(plink, dbrType, pbuffer, poptions, pnRequest); if (status) recGblSetSevr(precord, LINK_ALARM, INVALID_ALARM); return status; diff --git a/src/ioc/db/dbLink.h b/src/ioc/db/dbLink.h index ad4ac2f45..006def2a0 100644 --- a/src/ioc/db/dbLink.h +++ b/src/ioc/db/dbLink.h @@ -100,6 +100,8 @@ epicsShareFunc long dbLoadLinkArray(struct link *, short dbrType, void *pbuffer, epicsShareFunc long dbGetNelements(const struct link *plink, long *nelements); epicsShareFunc int dbIsLinkConnected(const struct link *plink); /* 0 or 1 */ epicsShareFunc int dbGetLinkDBFtype(const struct link *plink); +epicsShareFunc long dbTryGetLink(struct link *, short dbrType, void *pbuffer, + long *options, long *nRequest); epicsShareFunc long dbGetLink(struct link *, short dbrType, void *pbuffer, long *options, long *nRequest); epicsShareFunc long dbGetControlLimits(const struct link *plink, double *low, diff --git a/src/ioc/db/recGbl.c b/src/ioc/db/recGbl.c index 29d7a2d46..0e44d986b 100644 --- a/src/ioc/db/recGbl.c +++ b/src/ioc/db/recGbl.c @@ -403,8 +403,8 @@ long recGblGetSimm(struct dbCommon *pcommon, epicsEnum16 *psscn, long status; recGblSaveSimm(*psscn, poldsimm, *psimm); - status = dbGetLink(psiml, DBR_USHORT, psimm, 0, 0); - if (status) return status; + status = dbTryGetLink(psiml, DBR_USHORT, psimm, 0, 0); + if (status && !pcommon->nsev) pcommon->nsta = LINK_ALARM; recGblCheckSimm(pcommon, psscn, *poldsimm, *psimm); return 0; }