diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index 32314d431..484edbbc6 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -12,6 +12,17 @@
The behavior of get_alarm_double() in several record types, which +have a value of type double and use alarm limits, has been changed.
+ +The old behaviour (always returning the current settings of the alarm +limits fields) has been changed to returning epicsNAN (not-a-number) +if the severity of the corresponding limit is NO_ALARM. +This allows CA clients to suppress displaying of unused limits +(e.g. at bargraphs).
+Two new math constants have been added to epicsMath.h: epicsNAN diff --git a/src/makeBaseApp/top/exampleApp/src/xxxRecord.c b/src/makeBaseApp/top/exampleApp/src/xxxRecord.c index 199cf1f79..e0fae685c 100644 --- a/src/makeBaseApp/top/exampleApp/src/xxxRecord.c +++ b/src/makeBaseApp/top/exampleApp/src/xxxRecord.c @@ -187,10 +187,10 @@ static long get_alarm_double(DBADDR *paddr,struct dbr_alDouble *pad) int fieldIndex = dbGetFieldIndex(paddr); if(fieldIndex == xxxRecordVAL) { - pad->upper_alarm_limit = prec->hihi; - pad->upper_warning_limit = prec->high; - pad->lower_warning_limit = prec->low; - pad->lower_alarm_limit = prec->lolo; + pad->upper_alarm_limit = prec->hhsv ? prec->hihi : epicsNAN; + pad->upper_warning_limit = prec->hsv ? prec->high : epicsNAN; + pad->lower_warning_limit = prec->lsv ? prec->low : epicsNAN; + pad->lower_alarm_limit = prec->llsv ? prec->lolo : epicsNAN; } else recGblGetAlarmDouble(paddr,pad); return(0); } diff --git a/src/rec/aiRecord.c b/src/rec/aiRecord.c index bf07eae48..f1de6e55a 100644 --- a/src/rec/aiRecord.c +++ b/src/rec/aiRecord.c @@ -271,10 +271,10 @@ static long get_alarm_double(DBADDR *paddr,struct dbr_alDouble *pad) int fieldIndex = dbGetFieldIndex(paddr); if(fieldIndex == aiRecordVAL) { - pad->upper_alarm_limit = prec->hihi; - pad->upper_warning_limit = prec->high; - pad->lower_warning_limit = prec->low; - pad->lower_alarm_limit = prec->lolo; + pad->upper_alarm_limit = prec->hhsv ? prec->hihi : epicsNAN; + pad->upper_warning_limit = prec->hsv ? prec->high : epicsNAN; + pad->lower_warning_limit = prec->lsv ? prec->low : epicsNAN; + pad->lower_alarm_limit = prec->llsv ? prec->lolo : epicsNAN; } else recGblGetAlarmDouble(paddr,pad); return(0); } diff --git a/src/rec/aoRecord.c b/src/rec/aoRecord.c index a92af1dca..87e934cb3 100644 --- a/src/rec/aoRecord.c +++ b/src/rec/aoRecord.c @@ -328,10 +328,10 @@ static long get_alarm_double(DBADDR *paddr, struct dbr_alDouble *pad) aoRecord *prec=(aoRecord *)paddr->precord; if(paddr->pfield==(void *)&prec->val){ - pad->upper_alarm_limit = prec->hihi; - pad->upper_warning_limit = prec->high; - pad->lower_warning_limit = prec->low; - pad->lower_alarm_limit = prec->lolo; + pad->upper_alarm_limit = prec->hhsv ? prec->hihi : epicsNAN; + pad->upper_warning_limit = prec->hsv ? prec->high : epicsNAN; + pad->lower_warning_limit = prec->lsv ? prec->low : epicsNAN; + pad->lower_alarm_limit = prec->llsv ? prec->lolo : epicsNAN; } else recGblGetAlarmDouble(paddr,pad); return(0); } diff --git a/src/rec/calcRecord.c b/src/rec/calcRecord.c index 2f6f13b21..aa2178054 100644 --- a/src/rec/calcRecord.c +++ b/src/rec/calcRecord.c @@ -233,10 +233,10 @@ static long get_alarm_double(DBADDR *paddr, struct dbr_alDouble *pad) calcRecord *prec = (calcRecord *)paddr->precord; if (paddr->pfield == (void *)&prec->val) { - pad->upper_alarm_limit = prec->hihi; - pad->upper_warning_limit = prec->high; - pad->lower_warning_limit = prec->low; - pad->lower_alarm_limit = prec->lolo; + pad->upper_alarm_limit = prec->hhsv ? prec->hihi : epicsNAN; + pad->upper_warning_limit = prec->hsv ? prec->high : epicsNAN; + pad->lower_warning_limit = prec->lsv ? prec->low : epicsNAN; + pad->lower_alarm_limit = prec->llsv ? prec->lolo : epicsNAN; } else { recGblGetAlarmDouble(paddr, pad); } diff --git a/src/rec/calcoutRecord.c b/src/rec/calcoutRecord.c index 263065d6d..cac7268b6 100644 --- a/src/rec/calcoutRecord.c +++ b/src/rec/calcoutRecord.c @@ -442,10 +442,10 @@ static long get_alarm_double(DBADDR *paddr, struct dbr_alDouble *pad) calcoutRecord *prec = (calcoutRecord *)paddr->precord; if (paddr->pfield == (void *)&prec->val) { - pad->upper_alarm_limit = prec->hihi; - pad->upper_warning_limit = prec->high; - pad->lower_warning_limit = prec->low; - pad->lower_alarm_limit = prec->lolo; + pad->upper_alarm_limit = prec->hhsv ? prec->hihi : epicsNAN; + pad->upper_warning_limit = prec->hsv ? prec->high : epicsNAN; + pad->lower_warning_limit = prec->lsv ? prec->low : epicsNAN; + pad->lower_alarm_limit = prec->llsv ? prec->lolo : epicsNAN; } else { recGblGetAlarmDouble(paddr, pad); } diff --git a/src/rec/dfanoutRecord.c b/src/rec/dfanoutRecord.c index 2a5ab1c53..899fbf941 100644 --- a/src/rec/dfanoutRecord.c +++ b/src/rec/dfanoutRecord.c @@ -193,10 +193,10 @@ static long get_alarm_double(DBADDR *paddr,struct dbr_alDouble *pad) if(fieldIndex == dfanoutRecordVAL) { - pad->upper_alarm_limit = prec->hihi; - pad->upper_warning_limit = prec->high; - pad->lower_warning_limit = prec->low; - pad->lower_alarm_limit = prec->lolo; + pad->upper_alarm_limit = prec->hhsv ? prec->hihi : epicsNAN; + pad->upper_warning_limit = prec->hsv ? prec->high : epicsNAN; + pad->lower_warning_limit = prec->lsv ? prec->low : epicsNAN; + pad->lower_alarm_limit = prec->llsv ? prec->lolo : epicsNAN; } else recGblGetAlarmDouble(paddr,pad); return(0); } diff --git a/src/rec/selRecord.c b/src/rec/selRecord.c index b0ef08ca5..e8f20f052 100644 --- a/src/rec/selRecord.c +++ b/src/rec/selRecord.c @@ -232,10 +232,10 @@ static long get_alarm_double(DBADDR *paddr, struct dbr_alDouble *pad) selRecord *prec=(selRecord *)paddr->precord; if(paddr->pfield==(void *)&prec->val ){ - pad->upper_alarm_limit = prec->hihi; - pad->upper_warning_limit = prec->high; - pad->lower_warning_limit = prec->low; - pad->lower_alarm_limit = prec->lolo; + pad->upper_alarm_limit = prec->hhsv ? prec->hihi : epicsNAN; + pad->upper_warning_limit = prec->hsv ? prec->high : epicsNAN; + pad->lower_warning_limit = prec->lsv ? prec->low : epicsNAN; + pad->lower_alarm_limit = prec->llsv ? prec->lolo : epicsNAN; } else recGblGetAlarmDouble(paddr,pad); return(0); } diff --git a/src/rec/subRecord.c b/src/rec/subRecord.c index c665c9b59..a2e5e6703 100644 --- a/src/rec/subRecord.c +++ b/src/rec/subRecord.c @@ -271,10 +271,10 @@ static long get_alarm_double(DBADDR *paddr, struct dbr_alDouble *pad) int fieldIndex = dbGetFieldIndex(paddr); if (fieldIndex == subRecordVAL) { - pad->upper_alarm_limit = prec->hihi; - pad->upper_warning_limit = prec->high; - pad->lower_warning_limit = prec->low; - pad->lower_alarm_limit = prec->lolo; + pad->upper_alarm_limit = prec->hhsv ? prec->hihi : epicsNAN; + pad->upper_warning_limit = prec->hsv ? prec->high : epicsNAN; + pad->lower_warning_limit = prec->lsv ? prec->low : epicsNAN; + pad->lower_alarm_limit = prec->llsv ? prec->lolo : epicsNAN; } else { recGblGetAlarmDouble(paddr, pad); }