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: asyn: what if a driver wants to force callbacks? |
From: | Torsten Bögershausen <[email protected]> |
To: | <[email protected]> |
Date: | Thu, 26 May 2016 07:52:59 +0200 |
To my knowledge, there is no update. In our driver, we do it like this: /* If not moving, trigger a record processing at low rate */ if (!nowMoving) setDoubleParam(pC_->motorPosition_, newPositionInSteps + 1); setDoubleParam(pC_->motorPosition_, newPositionInSteps); And I added a test case: https://github.com/EuropeanSpallationSource/MCAG_Base_Project/blob/master/epics/test/500_DLY-STOP.py Out of curiosity: Which kind of device are you using ? On 25/05/16 23:50, Ford, Christopher wrote:
Hi, In 2015 there was some discussion on Tech-Talk about how to force a callback for a parameter that had not changed values. Mark Rivers suggested a work-around, as shown below. I wonder if anyone has an update on the situation since then? Has any other method appeared? Or did you have success with the work-around? Thanks, -Chris Ford, SLAC On16 Nov 2015 Mark Rivers writes:If a driver wants to force a callback there is a method that does not require any changes to the base classes, e.g. exposing statusChanged_ as protected or adding a new isMotorRecordnowFilterButAlwaysProcess_ flag. The driver simply needs to set a parameter to a different value from present and then back to its current value, for example setDoubleParam(pC_->motorPosition_(position+1.); setDoubleParam(pC_->motorPosition_(position); callParamCallbacks();