use recGblSetSevrMsg()

This commit is contained in:
Michael Davidsaver
2020-03-30 21:32:15 -07:00
parent 892a361de7
commit d19586fdfd
5 changed files with 28 additions and 15 deletions

View File

@@ -523,7 +523,7 @@ long dbProcess(dbCommon *precord)
(precord->lcnt++ < MAX_LOCK) ||
(precord->sevr >= INVALID_ALARM)) goto all_done;
recGblSetSevr(precord, SCAN_ALARM, INVALID_ALARM);
recGblSetSevrMsg(precord, SCAN_ALARM, INVALID_ALARM, "Async in progress");
monitor_mask = recGblResetAlarms(precord);
monitor_mask |= DBE_VALUE|DBE_LOG;
pdbFldDes = pdbRecordType->papFldDes[pdbRecordType->indvalFlddes];

View File

@@ -313,10 +313,27 @@ long dbTryGetLink(struct link *plink, short dbrType, void *pbuffer,
return plset->getValue(plink, dbrType, pbuffer, pnRequest);
}
static
void setLinkAlarm(struct link* plink)
{
struct dbCommon *precord = plink->precord;
dbRecordType *rdes = precord->rdes;
const char* amsg = NULL;
short i;
for(i=0; i<rdes->no_links; i++) {
dbFldDes *fdes = rdes->papFldDes[rdes->link_ind[i]];
if((char*)plink - (char*)precord == fdes->offset) {
amsg = fdes->name;
}
}
recGblSetSevrMsg(precord, LINK_ALARM, INVALID_ALARM, "field %s", amsg);
}
long dbGetLink(struct link *plink, short dbrType, void *pbuffer,
long *poptions, long *pnRequest)
{
struct dbCommon *precord = plink->precord;
long status;
if (poptions && *poptions) {
@@ -328,7 +345,7 @@ long dbGetLink(struct link *plink, short dbrType, void *pbuffer,
if (status == S_db_noLSET)
return -1;
if (status)
recGblSetSevr(precord, LINK_ALARM, INVALID_ALARM);
setLinkAlarm(plink);
return status;
}
@@ -416,9 +433,7 @@ long dbPutLink(struct link *plink, short dbrType, const void *pbuffer,
status = plset->putValue(plink, dbrType, pbuffer, nRequest);
if (status) {
struct dbCommon *precord = plink->precord;
recGblSetSevr(precord, LINK_ALARM, INVALID_ALARM);
setLinkAlarm(plink);
}
return status;
}
@@ -443,9 +458,7 @@ long dbPutLinkAsync(struct link *plink, short dbrType, const void *pbuffer,
status = plset->putAsync(plink, dbrType, pbuffer, nRequest);
if (status) {
struct dbCommon *precord = plink->precord;
recGblSetSevr(precord, LINK_ALARM, INVALID_ALARM);
setLinkAlarm(plink);
}
return status;
}