From 413102a4bca07bae097e10850f99b522e3b5e8a5 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Tue, 14 Nov 2017 10:49:56 -0600 Subject: [PATCH] pvif: more put bitset Better handling of put w/ compressed bitset --- pdbApp/pvif.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pdbApp/pvif.cpp b/pdbApp/pvif.cpp index 5ac64df..fe01d09 100644 --- a/pdbApp/pvif.cpp +++ b/pdbApp/pvif.cpp @@ -216,6 +216,7 @@ void attachAll(PVX& pvm, const pvd::PVStructurePtr& pv) // set field bit and all enclosing structure bits pvm.maskVALUEPut.set(fld->getFieldOffset()); } + pvm.maskVALUEPut.set(0); attachMeta(pvm, pv); } @@ -581,6 +582,7 @@ struct PVIFScalarNumeric : public PVIF pvmeta.maskPROPERTY.clear(); pvmeta.maskPROPERTY.set(bit); pvmeta.maskVALUEPut.clear(); + pvmeta.maskVALUEPut.set(0); pvmeta.maskVALUEPut.set(bit); } findNSMask(pvmeta, chan, pvalue); @@ -778,7 +780,10 @@ struct PVIFPlain : public PVIF virtual unsigned dbe(const epics::pvData::BitSet& mask) { - if(mask.get(fieldOffset)) + // TODO: figure out how to handle various intermidiate compressed + // bitSet and enclosing. + // Until then check only also for wildcard bit (0). + if(mask.get(fieldOffset) || mask.get(0)) return DBE_VALUE; return 0; }