Changed get_alarm_double() behaviour in analog records to return epicsNAN for limits with NO_ALARM severity
This commit is contained in:
@@ -12,6 +12,17 @@
|
||||
<h2 align="center">Changes between 3.14.10 and 3.14.11</h2>
|
||||
<!-- Insert new items below here ... -->
|
||||
|
||||
<h4>New behaviour of get_alarm_double() in analog records</h4>
|
||||
|
||||
<p>The behavior of get_alarm_double() in several record types, which
|
||||
have a value of type double and use alarm limits, has been changed.</p>
|
||||
|
||||
<p>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).</p>
|
||||
|
||||
<h4>New math constants epicsNAN and epicsINF</h4>
|
||||
|
||||
<p>Two new math constants have been added to epicsMath.h: <tt>epicsNAN</tt>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user