allow support module name in info() tag
Gives the option of reducing the input link length and preventing runtime switching of module.
This commit is contained in:
@ -320,11 +320,19 @@ def processLink(name, lstr):
|
|||||||
"""Process the INP or OUT link
|
"""Process the INP or OUT link
|
||||||
|
|
||||||
Expects lstr to be "module arg1 arg2"
|
Expects lstr to be "module arg1 arg2"
|
||||||
|
if the 'pySupportMod' info tag is not given.
|
||||||
|
When it is, the link string is passed
|
||||||
|
to the module build() function without
|
||||||
|
processing.
|
||||||
|
|
||||||
Returns (callable, Record, "arg1 arg2")
|
Returns (Record, Support)
|
||||||
"""
|
"""
|
||||||
rec = getRecord(name)
|
rec = getRecord(name)
|
||||||
parts = lstr.split(None,1)
|
modname = rec.info('pySupportMod', None)
|
||||||
modname, args = parts[0], parts[1] if len(parts)>1 else None
|
if not modname:
|
||||||
|
parts = lstr.split(None,1)
|
||||||
|
modname, args = parts[0], parts[1] if len(parts)>1 else None
|
||||||
|
else:
|
||||||
|
args = lstr
|
||||||
mod = importmod(modname)
|
mod = importmod(modname)
|
||||||
return rec, mod.build(rec, args)
|
return rec, mod.build(rec, args)
|
||||||
|
@ -150,13 +150,22 @@ This support code can then be referenced from records. ::
|
|||||||
|
|
||||||
record(longin, "my:int:counter") {
|
record(longin, "my:int:counter") {
|
||||||
field(DTYP, "Python Device")
|
field(DTYP, "Python Device")
|
||||||
field(INP , "counter hello world")
|
field(INP , "@counter hello world")
|
||||||
}
|
}
|
||||||
|
|
||||||
The following will fail to associate. ::
|
The following will fail to associate. ::
|
||||||
|
|
||||||
record(longin, "my:int:counter") {
|
record(longin, "my:int:counter") {
|
||||||
field(DTYP, "Python Device")
|
field(DTYP, "Python Device")
|
||||||
field(INP , "counter do what I say")
|
field(INP , "@counter do what I say")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
If a shorter INP link string is necessary, or to prevent
|
||||||
|
runtime switching of modules, the module name may also
|
||||||
|
be given in the *pySupportMod* info() tag. ::
|
||||||
|
|
||||||
|
record(longin, "my:int:counter") {
|
||||||
|
field(DTYP, "Python Device")
|
||||||
|
field(INP , "@hello world")
|
||||||
|
info("pySupportMod", "counter")
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user