Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017 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
<== Date ==> <== Thread ==>

Subject: Re: C++ multi threaded application.
From: Michael Davidsaver <mdavidsaver@gmail.com>
To: Ralph Lange <ralph.lange@gmx.de>, EPICS Tech Talk <tech-talk@aps.anl.gov>
Date: Wed, 6 Sep 2017 11:01:15 -0500
On 09/06/2017 03:26 AM, Ralph Lange wrote:
> Ciao Giacomo,
> 
> On Wed, Sep 6, 2017 at 10:02 AM, Giacomo S.
> <giacomo.strangolino@elettra.eu <mailto:giacomo.strangolino@elettra.eu>>
> wrote:
> 
>     A typical graphical interface wants to put in evidence warning or alarm
>     values (for example, in a gauge you want yellow or red bands or you may
>     want coloured stripes on the background of a plot in the alarm or
>     warning sections), so, in this case I may be interested in two kind of
>     subscriptions:
> 
>     - the DBE_PROPERTY to get alarms. LO/HI thresholds, display and so on...
>     - the DBE_VALUE to get value changes.
> 
> 
> Well, almost. Typically, you would subscribe
> 
>   * to the full structure (DBR_CTRL_...) using the DBE_PROPERTY flag to
>     get updates on the limits and thresholds,

My current thinking of rules for subscribing with DBE_PROPERTY, based on
the native type:

* DBF_STRING - Don't bother, there is no display/control meta-data
* DBF_ENUM - Subscribe w/ DBR_GR_ENUM
* all numeric - Subscribe w/ DBR_CTLR_DOUBLE

With DBF_ENUM there is also the option of forcing the server to convert
to DBF_STRING or DBF_INT.

For DBE_VALUE, attempt to promote the native type using
dbf_type_to_DBR_TIME()

>   * to a small value/status(/timestamp) structure (DBR_STS_... or
>     DBR_TIME_...) using DBE_VALUE | DBE_ALARM to get value and status
>     updates (with timestamps).
> 
> 
>     It would be very useful to me a kind of documentation where this is
>     described.
>     I'll have a look at your link now.
> 
> 
> Other than the Channel Access Reference Manual (available on the EPICS
> web site, e.g. http://www.aps.anl.gov/epics/base/R3-15/5.php), the CA
> client example (makeBaseApp template), the CA command line tools (that
> you already found) and the training slides that Andrew pointed out, I
> don't know of any CA client usage documentation. Sorry!

I'm hesitant to mention this as the code isn't complete or as thoroughly
tested as I like.  (eg. DBF_ENUM isn't handled correctly)  But it is the
only example I have of managing dual subscriptions to get all time as
well as display/control meta-data.

https://github.com/mdavidsaver/epics-base/blob/integration-20170906/src/std/link/lnkCa.c#L259

References:
C++ multi threaded application. Giacomo S.
Re: C++ multi threaded application. Andrew Johnson
Re: C++ multi threaded application. Giacomo S.
Re: C++ multi threaded application. Giacomo S.
Re: C++ multi threaded application. Andrew Johnson
Re: C++ multi threaded application. Giacomo S.
Re: C++ multi threaded application. Ralph Lange

Navigate by Date:
Prev: Re: C++ multi threaded application. Andrew Johnson
Next: StreamDevice hexa checksum in lowercase characters Paduan Donadio, Marcio
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
Navigate by Thread:
Prev: RE: C++ multi threaded application. Mark Rivers
Next: Re: C++ multi threaded application. Andrew Johnson
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
ANJ, 06 Sep 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·