db: don't set record INVALID if fetching SIML fails
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user