Subject: |
[Bug 1824277] Re: Regression in calcout setting constant links at runtime |
From: |
Ben Franksen via Core-talk <[email protected]> |
To: |
[email protected] |
Date: |
Thu, 25 Apr 2019 13:41:08 -0000 |
> As a result we *cannot* implement a generic solution for this in the
core IOC code (dbAccess.c).
If the link field can remember complicated stuff like which PV it points
to, plus flags (CPP, MS, whatever) then why can't it remember a single
numeric constant and use that constant as the data source when the
record calls dbGetLink()?
> Keeping that technique working is what this bug is all about
I am trying to understand your reservation here and failing. I have
never understood why in EPICS CONSTANT links can/should only be used
for/during initialization, nor why there is a different call to
initialize a field from a CONSTANT link instead of adding this
functionality to the regular dbGetLink function. Which is why I thought
fixing this bug would be a great opportunity to rectify that: get more
functionality, less record diversity, more orthogonality.
Just my 2 cents.
--
You received this bug notification because you are a member of EPICS
Core Developers, which is subscribed to EPICS Base.
Matching subscriptions: epics-core-list-subscription
https://bugs.launchpad.net/bugs/1824277
Title:
Regression in calcout setting constant links at runtime
Status in EPICS Base:
In Progress
Status in EPICS Base 7.0 series:
In Progress
Bug description:
With the 3.15 branch, writing a literal number to a calcout.INP[A-L]
field causes the corresponding [A-L] field to be set to that number.
This works because the calcout record marks the INP fields as
special(SPC_MOD) and the calcout::special() routine calls
recGblInitConstantLink() to initialize the corresponding [A-L] field
from the new link string. I suspect that a number of the synApps
record types (transform, scalc, acalc etc.) probably use this same
technique.
Keenan Lang reported that this doesn't currently work on the 7.0
branch; the value in the [A-L] field doesn't change, which I have
confirmed.
This use of special() to reinitialize constant links is unusual,
normally putting a literal into a link field after record
initialization has no effect, but someone who worked on the calcout
record discovered this way to get it to work.
I think I know what's going on and how to fix it (change
dbPutFieldLink() to call dbAddLink() before the second call to
dbPutSpecial()), but I need to check that this won't break other
cases.
To manage notifications about this bug go to:
https://bugs.launchpad.net/epics-base/+bug/1824277/+subscriptions
- Navigate by Date:
- Prev:
Re: ICALEPCS 2019 Contributions Timo Korhonen via Core-talk
- Next:
[Bug 1824277] Re: Regression in calcout setting constant links at runtime Andrew Johnson via Core-talk
- Index:
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:
[Bug 1824277] Re: Regression in calcout setting constant links at runtime Andrew Johnson via Core-talk
- Next:
[Bug 1824277] Re: Regression in calcout setting constant links at runtime Andrew Johnson via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
|