rec: Fix problem with NAN in MLST/ALST fields
If MLST or ALST became NAN the associated monitor would never trigger. Now a NAN will cause it to always trigger.
This commit is contained in:
@@ -13,6 +13,12 @@
|
||||
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
<h4>Problem with NAN values in MLST/ALST fields</h4>
|
||||
|
||||
<p>The ai, ao, calc, calcout, dfanout, sel and sub record types could stop
|
||||
posting monitors if they got NAN values in their MLST or ALST fields. A change
|
||||
has been included so this should no longer be the case.</p>
|
||||
|
||||
<h4>MacOS build defaults changed</h4>
|
||||
|
||||
<p>The default build settings for darwin-x86 targets have been changed to match
|
||||
|
||||
@@ -385,7 +385,7 @@ static void monitor(aiRecord *prec)
|
||||
/* check for value change */
|
||||
delta = prec->mlst - prec->val;
|
||||
if(delta<0.0) delta = -delta;
|
||||
if (delta > prec->mdel) {
|
||||
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
|
||||
/* post events for value change */
|
||||
monitor_mask |= DBE_VALUE;
|
||||
/* update last value monitored */
|
||||
@@ -395,7 +395,7 @@ static void monitor(aiRecord *prec)
|
||||
/* check for archive change */
|
||||
delta = prec->alst - prec->val;
|
||||
if(delta<0.0) delta = -delta;
|
||||
if (delta > prec->adel) {
|
||||
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
|
||||
/* post events on value field for archive change */
|
||||
monitor_mask |= DBE_LOG;
|
||||
/* update last archive value monitored */
|
||||
|
||||
@@ -484,7 +484,7 @@ static void monitor(aoRecord *prec)
|
||||
/* check for value change */
|
||||
delta = prec->mlst - prec->val;
|
||||
if(delta<0.0) delta = -delta;
|
||||
if (delta > prec->mdel) {
|
||||
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
|
||||
/* post events for value change */
|
||||
monitor_mask |= DBE_VALUE;
|
||||
/* update last value monitored */
|
||||
@@ -493,7 +493,7 @@ static void monitor(aoRecord *prec)
|
||||
/* check for archive change */
|
||||
delta = prec->alst - prec->val;
|
||||
if(delta<0.0) delta = -delta;
|
||||
if (delta > prec->adel) {
|
||||
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
|
||||
/* post events on value field for archive change */
|
||||
monitor_mask |= DBE_LOG;
|
||||
/* update last archive value monitored */
|
||||
|
||||
@@ -310,7 +310,7 @@ static void monitor(calcRecord *prec)
|
||||
/* check for value change */
|
||||
delta = prec->mlst - prec->val;
|
||||
if (delta < 0.0) delta = -delta;
|
||||
if (delta > prec->mdel) {
|
||||
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
|
||||
/* post events for value change */
|
||||
monitor_mask |= DBE_VALUE;
|
||||
/* update last value monitored */
|
||||
@@ -319,7 +319,7 @@ static void monitor(calcRecord *prec)
|
||||
/* check for archive change */
|
||||
delta = prec->alst - prec->val;
|
||||
if (delta < 0.0) delta = -delta;
|
||||
if (delta > prec->adel) {
|
||||
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
|
||||
/* post events on value field for archive change */
|
||||
monitor_mask |= DBE_LOG;
|
||||
/* update last archive value monitored */
|
||||
|
||||
@@ -209,7 +209,7 @@ static long init_record(calcoutRecord *prec, int pass)
|
||||
static long process(calcoutRecord *prec)
|
||||
{
|
||||
rpvtStruct *prpvt = prec->rpvt;
|
||||
int doOutput = 0;
|
||||
int doOutput;
|
||||
|
||||
if (!prec->pact) {
|
||||
prec->pact = TRUE;
|
||||
@@ -231,21 +231,22 @@ static long process(calcoutRecord *prec)
|
||||
doOutput = 1;
|
||||
break;
|
||||
case calcoutOOPT_On_Change:
|
||||
if (fabs(prec->pval - prec->val) > prec->mdel) doOutput = 1;
|
||||
doOutput = ! (fabs(prec->pval - prec->val) <= prec->mdel);
|
||||
break;
|
||||
case calcoutOOPT_Transition_To_Zero:
|
||||
if ((prec->pval != 0.0) && (prec->val == 0.0)) doOutput = 1;
|
||||
doOutput = ((prec->pval != 0.0) && (prec->val == 0.0));
|
||||
break;
|
||||
case calcoutOOPT_Transition_To_Non_zero:
|
||||
if ((prec->pval == 0.0) && (prec->val != 0.0)) doOutput = 1;
|
||||
doOutput = ((prec->pval == 0.0) && (prec->val != 0.0));
|
||||
break;
|
||||
case calcoutOOPT_When_Zero:
|
||||
if (prec->val == 0.0) doOutput = 1;
|
||||
doOutput = (prec->val == 0.0);
|
||||
break;
|
||||
case calcoutOOPT_When_Non_zero:
|
||||
if (prec->val != 0.0) doOutput = 1;
|
||||
doOutput = (prec->val != 0.0);
|
||||
break;
|
||||
default:
|
||||
doOutput = 0;
|
||||
break;
|
||||
}
|
||||
prec->pval = prec->val;
|
||||
@@ -584,7 +585,7 @@ static void monitor(calcoutRecord *prec)
|
||||
/* check for value change */
|
||||
delta = prec->mlst - prec->val;
|
||||
if (delta<0.0) delta = -delta;
|
||||
if (delta > prec->mdel) {
|
||||
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
|
||||
/* post events for value change */
|
||||
monitor_mask |= DBE_VALUE;
|
||||
/* update last value monitored */
|
||||
@@ -593,7 +594,7 @@ static void monitor(calcoutRecord *prec)
|
||||
/* check for archive change */
|
||||
delta = prec->alst - prec->val;
|
||||
if (delta<0.0) delta = -delta;
|
||||
if (delta > prec->adel) {
|
||||
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
|
||||
/* post events on value field for archive change */
|
||||
monitor_mask |= DBE_LOG;
|
||||
/* update last archive value monitored */
|
||||
|
||||
@@ -267,7 +267,7 @@ static void monitor(dfanoutRecord *prec)
|
||||
/* check for value change */
|
||||
delta = prec->mlst - prec->val;
|
||||
if(delta<0) delta = -delta;
|
||||
if (delta > prec->mdel) {
|
||||
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
|
||||
/* post events for value change */
|
||||
monitor_mask |= DBE_VALUE;
|
||||
/* update last value monitored */
|
||||
@@ -276,7 +276,7 @@ static void monitor(dfanoutRecord *prec)
|
||||
/* check for archive change */
|
||||
delta = prec->alst - prec->val;
|
||||
if(delta<0) delta = -delta;
|
||||
if (delta > prec->adel) {
|
||||
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
|
||||
/* post events on value field for archive change */
|
||||
monitor_mask |= DBE_LOG;
|
||||
/* update last archive value monitored */
|
||||
|
||||
@@ -300,7 +300,7 @@ static void monitor(selRecord *prec)
|
||||
/* check for value change */
|
||||
delta = prec->mlst - prec->val;
|
||||
if(delta<0.0) delta = -delta;
|
||||
if (delta > prec->mdel) {
|
||||
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
|
||||
/* post events for value change */
|
||||
monitor_mask |= DBE_VALUE;
|
||||
/* update last value monitored */
|
||||
@@ -309,7 +309,7 @@ static void monitor(selRecord *prec)
|
||||
/* check for archive change */
|
||||
delta = prec->alst - prec->val;
|
||||
if(delta<0.0) delta = -delta;
|
||||
if (delta > prec->adel) {
|
||||
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
|
||||
/* post events on value field for archive change */
|
||||
monitor_mask |= DBE_LOG;
|
||||
/* update last archive value monitored */
|
||||
|
||||
@@ -353,7 +353,7 @@ static void monitor(subRecord *prec)
|
||||
/* check for value change */
|
||||
delta = prec->val - prec->mlst;
|
||||
if (delta < 0.0) delta = -delta;
|
||||
if (delta > prec->mdel) {
|
||||
if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
|
||||
/* post events for value change */
|
||||
monitor_mask |= DBE_VALUE;
|
||||
/* update last value monitored */
|
||||
@@ -362,7 +362,7 @@ static void monitor(subRecord *prec)
|
||||
/* check for archive change */
|
||||
delta = prec->val - prec->alst;
|
||||
if (delta < 0.0) delta = -delta;
|
||||
if (delta > prec->adel) {
|
||||
if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
|
||||
/* post events on value field for archive change */
|
||||
monitor_mask |= DBE_LOG;
|
||||
/* update last archive value monitored */
|
||||
|
||||
Reference in New Issue
Block a user