On Monday 23 August 2010 12:20:37 Till Straumann wrote:
>
> IIRC there are some widgets that use or could use information
> which is available via DBR_GR_xxx CA transfers but which
> do not properly track changes of the data attributes (such as units or
> limits).
>
> It looks like these attributes are only fetched when a connection is
> created and then cached by EDM.
The problem with trying to update those attributes with a monitor is
that the IOC never posts an event when the attribute value changes
(changing HOPR or LOPR as Wes is looking for doesn't mean that VAL
changed or the record was processed, so a regular monitor subscription
doesn't do what he wants). The EDM client code *could* explicitly
monitor the HOPR and LOPR fields itself, but that would be embedding
record-specific knowledge into a CA client which then wouldn't work
properly with a non-IOC CA server.
In R3.14.11 we added a new CA subscription event type called
DBE_PROPERTY (the others are DBE_ALARM, DBE_VALUE and DBE_ARCHIVE)
which the IOC will eventually post whenever an attribute value
changes. A CA client can therefore subscribe for DBE_PROPERTY events
from a channel using one of the DBR_GR_xxx types to get informed of
these kinds of changes.
However currently DBE_PROPERTY events only get generated when the menu
strings of a mbbi or mbbo record are changed; no other record types
post DBE_PROPERTY events, and it's not a trivial matter to add them.
We will need to extend the DBD file format and probably modify the
record interface to do this properly.
The point of adding DBE_PROPERTY events now was to allow CA client
programs to be modified to make use of this, i.e. replace the
ca_get_callback() of the DBR_GR_xxx data that they currently do at
connection time with a CA monitor of that same DBR_GR_xxx type for
DBE_PROPERTY updates. They will get one update whenever the channel
(re)connects to current IOCs, and in the future hopefully they'll get
sent more updates once we've added the necessary functionality to the
IOC database code.
- Andrew
--
The best FOSS code is written to be read by other humans -- Harald Welte