Applied Bernd's devAiSoft SMOO patch.

This commit is contained in:
Andrew Johnson
2009-04-09 15:03:09 +00:00
parent 134509a8ea
commit a8b20f07a8
2 changed files with 51 additions and 27 deletions

View File

@@ -70,12 +70,27 @@ static long init_record(aiRecord *prec)
static long read_ai(aiRecord *prec)
{
if (!dbGetLink(&prec->inp, DBR_DOUBLE, &prec->val, 0, 0)) {
if (prec->inp.type != CONSTANT)
prec->udf = FALSE;
double val;
if (prec->inp.type == CONSTANT)
return 2;
if (!dbGetLink(&prec->inp, DBR_DOUBLE, &val, 0, 0)) {
/* Apply smoothing algorithm */
if (prec->smoo != 0.0 && prec->dpvt)
prec->val = val * (1.00 - prec->smoo) + (prec->val * prec->smoo);
else
prec->val = val;
prec->udf = FALSE;
prec->dpvt = &devAiSoft; /* Any non-zero value */
if (prec->tsel.type == CONSTANT &&
prec->tse == epicsTimeEventDeviceTime)
dbGetTimeStamp(&prec->inp, &prec->time);
} else {
prec->dpvt = NULL;
}
return 2;
}