rec: update last/prev./old value fields after dset init_record

This must be done if init_record is allowed to change values
or monitors may not be posted when values change.
This commit is contained in:
Michael Davidsaver
2010-04-05 14:49:18 -04:00
committed by Michael Davidsaver
parent 6518adf901
commit b63e381fbe
15 changed files with 49 additions and 0 deletions

View File

@@ -210,6 +210,8 @@ static long init_record(aSubRecord *prec, int pass)
return S_db_BadSub;
}
}
strcpy(prec->onam, prec->snam);
prec->oval = prec->val;
return 0;
}

View File

@@ -145,6 +145,10 @@ static long init_record(void *precord,int pass)
}
return (status);
}
prec->mlst = prec->val;
prec->alst = prec->val;
prec->lalm = prec->val;
prec->oraw = prec->rval;
return(0);
}

View File

@@ -166,6 +166,11 @@ static long init_record(aoRecord *prec, int pass)
}
}
prec->oval = prec->pval = prec->val;
prec->mlst = prec->val;
prec->alst = prec->val;
prec->lalm = prec->val;
prec->oraw = prec->rval;
prec->orbv = prec->rbv;
return(0);
}

View File

@@ -110,6 +110,9 @@ static long init_record(biRecord *prec, int pass)
if( pdset->init_record ) {
if((status=(*pdset->init_record)(prec))) return(status);
}
prec->mlst = prec->val;
prec->lalm = prec->val;
prec->oraw = prec->rval;
return(0);
}

View File

@@ -177,6 +177,11 @@ static long init_record(boRecord *prec,int pass)
if(prec->val==0) prec->rval = 0;
else prec->rval = prec->mask;
} else prec->rval = (epicsUInt32)prec->val;
prec->mlst = prec->val;
prec->lalm = prec->val;
prec->oraw = prec->rval;
prec->orbv = prec->rbv;
return(status);
}

View File

@@ -198,6 +198,11 @@ static long init_record(calcoutRecord *prec, int pass)
prpvt->cbScheduled = 0;
if (pcalcoutDSET->init_record) pcalcoutDSET->init_record(prec);
prec->pval = prec->val;
prec->mlst = prec->val;
prec->alst = prec->val;
prec->lalm = prec->val;
prec->povl = prec->oval;
return 0;
}

View File

@@ -121,6 +121,9 @@ static long init_record(longinRecord *prec, int pass)
if( pdset->init_record ) {
if((status=(*pdset->init_record)(prec))) return(status);
}
prec->mlst = prec->val;
prec->alst = prec->val;
prec->lalm = prec->val;
return(0);
}

View File

@@ -117,6 +117,9 @@ static long init_record(longoutRecord *prec, int pass)
if( pdset->init_record ) {
if((status=(*pdset->init_record)(prec))) return(status);
}
prec->mlst = prec->val;
prec->alst = prec->val;
prec->lalm = prec->val;
return(0);
}

View File

@@ -158,6 +158,9 @@ static long init_record(mbbiDirectRecord *prec, int pass)
if((status=(*pdset->init_record)(prec))) return(status);
refresh_bits(prec, 0);
}
prec->mlst = prec->val;
prec->lalm = prec->val;
prec->oraw = prec->rval;
return(0);
}

View File

@@ -135,6 +135,9 @@ static long init_record(mbbiRecord *prec, int pass)
if((status=(*pdset->init_record)(prec))) return(status);
}
init_common(prec);
prec->mlst = prec->val;
prec->lalm = prec->val;
prec->oraw = prec->rval;
return(0);
}

View File

@@ -141,6 +141,10 @@ static long init_record(mbboDirectRecord *prec, int pass)
prec->udf = FALSE;
} else if (status == 2) status = 0;
}
prec->mlst = prec->val;
prec->lalm = prec->val;
prec->oraw = prec->rval;
prec->orbv = prec->rbv;
return(status);
}

View File

@@ -184,6 +184,10 @@ static long init_record(mbboRecord *prec, int pass)
init_common(prec);
/* convert val to rval */
convert(prec);
prec->mlst = prec->val;
prec->lalm = prec->val;
prec->oraw = prec->rval;
prec->orbv = prec->rbv;
return(0);
}

View File

@@ -119,6 +119,7 @@ static long init_record(stringinRecord *prec, int pass)
if( pdset->init_record ) {
if((status=(*pdset->init_record)(prec))) return(status);
}
strncpy(prec->oval,prec->val,sizeof(prec->val));
return(0);
}

View File

@@ -121,6 +121,7 @@ static long init_record(stringoutRecord *prec, int pass)
if( pdset->init_record ) {
if((status=(*pdset->init_record)(prec))) return(status);
}
strncpy(prec->oval,prec->val,sizeof(prec->val));
return(0);
}

View File

@@ -127,6 +127,9 @@ static long init_record(subRecord *prec, int pass)
recGblRecordError(S_db_BadSub, (void *)prec, "recSub(init_record)");
return S_db_BadSub;
}
prec->mlst = prec->val;
prec->alst = prec->val;
prec->lalm = prec->val;
return 0;
}