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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Fw: asynDriver - update record (timestamp), on no change |
From: | Ralph Lange via Tech-talk <[email protected]> |
To: | EPICS Tech Talk <[email protected]> |
Date: | Fri, 1 Mar 2019 16:46:15 +0100 |
Does this mean that the records with unchanged data but new timestamps
will post monitors to subscribed clients on each 'update'? That would
potentially introduce a lot of unnecessary/unwanted CA traffic.
--- rod.
On 2/28/19 11:15 AM, Mark Rivers via Tech-talk wrote:
>
>
>
> ________________________________
> From: Mark Rivers
> Sent: Thursday, February 28, 2019 12:35 PM
> To: Joao Afonso
> Subject: Re: asynDriver - update record (timestamp), on no change
>
>
> Your proposed hack is indeed the workaround for now. It would be nice to add another way to do this, perhaps forceParamCallback(addr, param).
>
>
> Mark
>
>
>
>
> ________________________________
> From: [email protected] <[email protected]> on behalf of Joao Afonso via Tech-talk <[email protected]>
> Sent: Thursday, February 28, 2019 11:16 AM
> To: [email protected]
> Subject: asynDriver - update record (timestamp), on no change
>
> Hello,
>
> I have an asyn driver IOC that periodically receives new data, updates the parameters (and timestamps), and runs the callbacks for the "I/O Intr" records.
>
> It has an extra thread that runs something like this:
>
> while(1)
> {
> int value = wait_for_data();
> setIntegerParam(dev_addr, param_id, value)
> updateTimeStamp();
> callParamCallbacks(dev_addr);
> }
>
> However, 'callParamCallbacks' will not update the record timestamp if the value received keeps being the same.
> From what I understand, this is the intended behaviour of asynDriver - no updates if data is the same -, but I would like to know if there a way to enforce it (to update the record timestamp)?
>
> One possible solution I think will work is to update the parameter with a random value first, to trigger the 'new data' flag, but it feels like an hack...
>
> Example:
> setIntegerParam(dev_addr, param_id, 0)
> setIntegerParam(dev_addr, param_id, value)
>
>
> Thank you,
> Joao Afonso
>