Experimental Physics and Industrial Control System
Jeff,
Where is the address assigned to the monitor subscription data structures?
I saw what you are disscussing in db_post_events() but I couldn't determine
where the address is stored when the monitor is registered.
Geoff
Jeff Hill wrote:
> Fritz,
>
> The CA clients can attach a channel to any field in the database.
> Likewise, CA clients can simultaneously enter monitor subscriptions for
> several different fields within a record. There is a list of monitor
> subscription data structures embedded in the dbCommon portion of every
> record in the database. When db_post_events() is called it steps through
> every entry in this list and compares its field address argument to the
> field address saved in the monitor subscription data structure. If the
> addresses are equal then a monitor update event is added to a queue
> maintained for the client that entered the subscription.
>
> The bottom line is that you may need to change your 2nd argument to
> db_post_events() so that it specifies the address of the field and not
> the address of your array data.
>
> I have updated the R3.14 dbEvent.h header file so that the second
> argument to db_post_events() is called pField and not pval. I checked
> the R3.14 application developers guide and it appears to have this
> argument correctly labeled.
>
> We could also consider changing db_post_events() so that if the
> SPC_DBADDR flag is set it will dispatch the monitor update if the 2nd
> argument matches either the address of the field or the address stored
> in the field.
>
> Jeff
>
> > -----Original Message-----
> > From: J. Frederick Bartlett ([email protected])
> > [mailto:[email protected]]
> > Sent: Friday, April 19, 2002 4:04 PM
> > To: [email protected]
> > Cc: [email protected]
> > Subject: How to handle EPICS monitors?
> >
> > I have encountered a problem with the use of EPICS monitors. I have
> > a generic record, which I wrote several years ago, that is a general
> > purpose interface to a MIL/STD1553B bus controller -- much in the
> > spirit of the generic VME record written by Mark Rivers. It is used
> > primarily for low-level diagnostic operations on the bus. Recently, I
> > have added monitor support to the record so that our diagnostic
> > routines, which operate as EPICS CA clients, could execute more
> > efficiently and with lower network traffic.
> >
> > I added the appropriate code to my record to call db_post_events for
> > the VAL field and for the STATUS field. The latter contains the
> > detailed, bit-encoded driver status for the last operation performed
> > by the record instance.
> >
> > To my considerable surprise, I found that the CA client received
> > monitor events for the STATUS field but not for the VAL field.
> > Suitable sprinkling of logMsg calls in the record module have
> > convinced me that db_post_events is being called correctly, i.e. with
> > the correct arguments, for both fields. The VAL field has one unusual
> > feature: the SPC_DBADDR property; and I suspect that this may be the
> > source of my problem.
> >
> > I have looked at the waveform record, which is similar to my record
> > in that the VAL field is used to access an array of values rather than
> > a single value. The waveform record places a monitor on the BPTR
> > field rather than the VAL field. However, since the BPTR field has the
> > DBF_NOACCESS type, I do not see how a CA client can connect a monitor.
> >
> > So, how should I handle the monitoring of a VAL (or any other) field
> > that has the SPC_DBADDR property?
> >
> > Fritz
- References:
- RE: How to handle EPICS monitors? Jeff Hill
- Navigate by Date:
- Prev:
Re: ca_test bus error on solaris-sparc-gnu + fix Till Straumann
- Next:
Re: How to handle EPICS monitors? Marty Kraimer
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
<2002>
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
RE: How to handle EPICS monitors? Jeff Hill
- Next:
Re: How to handle EPICS monitors? Marty Kraimer
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
<2002>
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024