From ef4d5401631cad3cc7a47f373f918cdbcfd26f6f Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Wed, 24 Mar 2010 15:12:51 -0400 Subject: 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. --- src/rec/aSubRecord.c | 2 ++ src/rec/aiRecord.c | 4 ++++ src/rec/aoRecord.c | 5 +++++ src/rec/biRecord.c | 3 +++ src/rec/boRecord.c | 5 +++++ src/rec/calcoutRecord.c | 5 +++++ src/rec/longinRecord.c | 3 +++ src/rec/longoutRecord.c | 3 +++ src/rec/mbbiDirectRecord.c | 3 +++ src/rec/mbbiRecord.c | 3 +++ src/rec/mbboDirectRecord.c | 4 ++++ src/rec/mbboRecord.c | 4 ++++ src/rec/stringinRecord.c | 1 + src/rec/stringoutRecord.c | 1 + src/rec/subRecord.c | 3 +++ 15 files changed, 49 insertions(+), 0 deletions(-) diff --git a/src/rec/aSubRecord.c b/src/rec/aSubRecord.c index 77eb6c5..f3c5ce4 100644 --- a/src/rec/aSubRecord.c +++ b/src/rec/aSubRecord.c @@ -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; } diff --git a/src/rec/aiRecord.c b/src/rec/aiRecord.c index f1de6e5..6cb440f 100644 --- a/src/rec/aiRecord.c +++ b/src/rec/aiRecord.c @@ -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); } diff --git a/src/rec/aoRecord.c b/src/rec/aoRecord.c index d896b49..33bfc47 100644 --- a/src/rec/aoRecord.c +++ b/src/rec/aoRecord.c @@ -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); } diff --git a/src/rec/biRecord.c b/src/rec/biRecord.c index 7a6251f..8192bee 100644 --- a/src/rec/biRecord.c +++ b/src/rec/biRecord.c @@ -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); } diff --git a/src/rec/boRecord.c b/src/rec/boRecord.c index b0c8897..96381ff 100644 --- a/src/rec/boRecord.c +++ b/src/rec/boRecord.c @@ -176,6 +176,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); } diff --git a/src/rec/calcoutRecord.c b/src/rec/calcoutRecord.c index 2a1a4fb..f49c699 100644 --- a/src/rec/calcoutRecord.c +++ b/src/rec/calcoutRecord.c @@ -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; } diff --git a/src/rec/longinRecord.c b/src/rec/longinRecord.c index 830e411..56904d1 100644 --- a/src/rec/longinRecord.c +++ b/src/rec/longinRecord.c @@ -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); } diff --git a/src/rec/longoutRecord.c b/src/rec/longoutRecord.c index 2a3b87a..1de82e3 100644 --- a/src/rec/longoutRecord.c +++ b/src/rec/longoutRecord.c @@ -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); } diff --git a/src/rec/mbbiDirectRecord.c b/src/rec/mbbiDirectRecord.c index 86b88b5..51ee7de 100644 --- a/src/rec/mbbiDirectRecord.c +++ b/src/rec/mbbiDirectRecord.c @@ -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); } diff --git a/src/rec/mbbiRecord.c b/src/rec/mbbiRecord.c index ed29ce1..ae7b741 100644 --- a/src/rec/mbbiRecord.c +++ b/src/rec/mbbiRecord.c @@ -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); } diff --git a/src/rec/mbboDirectRecord.c b/src/rec/mbboDirectRecord.c index ec12881..83a89fa 100644 --- a/src/rec/mbboDirectRecord.c +++ b/src/rec/mbboDirectRecord.c @@ -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); } diff --git a/src/rec/mbboRecord.c b/src/rec/mbboRecord.c index afaeecf..74ae040 100644 --- a/src/rec/mbboRecord.c +++ b/src/rec/mbboRecord.c @@ -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); } diff --git a/src/rec/stringinRecord.c b/src/rec/stringinRecord.c index 6bb98b4..dc5fde6 100644 --- a/src/rec/stringinRecord.c +++ b/src/rec/stringinRecord.c @@ -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); } diff --git a/src/rec/stringoutRecord.c b/src/rec/stringoutRecord.c index 41b0d68..a1c3f90 100644 --- a/src/rec/stringoutRecord.c +++ b/src/rec/stringoutRecord.c @@ -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); } diff --git a/src/rec/subRecord.c b/src/rec/subRecord.c index 61f4606..1950976 100644 --- a/src/rec/subRecord.c +++ b/src/rec/subRecord.c @@ -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; } -- 1.6.3.3