From dabcf893f7170325a22fd830a6caeec7048ba923 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sun, 3 Oct 2021 00:53:35 -0500 Subject: [PATCH] mbboDirect: Fix initialization from VAL vs. B* --- .../database/src/std/rec/mbboDirectRecord.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/modules/database/src/std/rec/mbboDirectRecord.c b/modules/database/src/std/rec/mbboDirectRecord.c index d3067f7c7..511f4b58b 100644 --- a/modules/database/src/std/rec/mbboDirectRecord.c +++ b/modules/database/src/std/rec/mbboDirectRecord.c @@ -139,7 +139,24 @@ static long init_record(struct dbCommon *pcommon, int pass) status = 0; } - bitsFromVAL(prec); + if (!prec->udf) + bitsFromVAL(prec); + else { + /* Did user set any of the B0-B1F fields? */ + epicsUInt8 *pBn = &prec->b0; + epicsUInt32 val = 0, bit = 1; + int i; + + for (i = 0; i < NUM_BITS; i++, bit <<= 1) + if (*pBn++) + val |= bit; + + if (val) { /* Yes! */ + prec->val = val; + prec->udf = FALSE; + } + } + prec->mlst = prec->val; prec->oraw = prec->rval; prec->orbv = prec->rbv;