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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Changing Asyn Port Driver paramList dynamically |
From: | "Paduan Donadio, Marcio via Tech-talk" <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Fri, 24 Jul 2020 17:08:18 +0000 |
Hi, Lucas. After talking with Mark Rivers I figured out that I was following an old R4-12 documentation without noticing. paramList, at that time, was a tiny class with only a few set of methods. Once I’ve opened the newest version of the paramList Doxigen I could see the createParam() method. (facepalm) Regarding the interface masks, Mark Rivers confirmed that it is not possible to change them after the constructor, but “the overhead in having an unused interface initialized in the asynPortDriver constructor is very low, so simply setting
all standard interfaces in the mask would be a work-around for this”. Thank you a lot for the answer. I have my IOC now running the way I intended. My best, Márcio From: Lucas Russo <lerwys at gmail.com> Hi Marcio, From Asyn version 4-31 onwards you don't need to specify the number of parameters in advance (see
https://epics-modules.github.io/master/asyn/R4-31/RELEASE_NOTES.html). You can just use createParam() and the c++ std::vector will handle this for you. So, in your child class
I believe you can just call createParam() as usual. You just need to call the father class method if the parameter ID does not belong to your class. Regarding specifying interfaces/masks I'm not sure if you can modify this after the father class has already initialized. Of course you can always pass these interface/interrupt mask parameters via the constructor, but I think that's not
what you want. You can also take a look at the QuadEM module that does more or less what you want, apparently:
https://github.com/epics-modules/quadEM/tree/master/quadEMApp/src drvQuadEM would be your father class and drvTetrAMM, drvNSLS_EM, etc would be your child classes. Hope this helps, Cheers, Lucas On Thu, Jul 23, 2020 at 12:16 AM Paduan Donadio, Marcio via Tech-talk <tech-talk at aps.anl.gov> wrote:
|