Newer
Older
record(bo, "$(P)$(CRLID):EnergySelect") {
field(DESC, "energy selection")
field(DTYP, "Soft Channel")
field(ZNAM, "Mono")
field(ONAM, "Local")
field(VAL, "1")
field(FLNK, "$(P)$(CRLID):EnergyCalc")
record(ao, "$(P)$(CRLID):EnergyLocal") {
field(DESC, "local energy")
field(VAL, "12.398")
field(PREC, "4")
field(EGU, "keV")
field(FLNK, "$(P)$(CRLID):EnergyCalc")
record(ao, "$(P)$(CRLID):EnergyBeamline") {
field(DESC, "beamline energy")
field(DOL, "$(KEV) CP")
field(OMSL, "closed_loop")
field(PREC, "4")
field(EGU, "keV")
field(FLNK, "$(P)$(CRLID):EnergyCalc")
record(calcout, "$(P)$(CRLID):EnergyCalc"){
field(DESC, "Energy select calc")
field(SCAN, "Passive")
field(INPA, "$(P)$(CRLID):EnergySelect.RVAL")
field(INPB, "$(P)$(CRLID):EnergyBeamline")
field(INPC, "$(P)$(CRLID):EnergyLocal")
field(OUT, "$(P)$(CRLID):energy PP")
field(PREC, "4")
field(SCAN, "Passive")
}
record(ao, "$(P)$(CRLID):energy"){
mwyman
committed
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateE(VAL)")
field(FLNK, "$(P)$(CRLID):recalc_table.PROC CA")
mwyman
committed
}
record(ai, "$(P)$(CRLID):energy_RBV"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('updated_E')")
field(SCAN, "I/O Intr")
field(PREC, "5")
}
record(ao, "$(P)$(CRLID):focalSize"){
mwyman
committed
field(EGU, "m")
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateFsize(VAL)")
mwyman
committed
}
record(calcout, "$(P)$(CRLID):fSize_twk_up"){
field(INPA, "$(P)$(CRLID):sortedIndex_RBV")
field(CALC, "MIN(A+1,2**$(NUM)-1)")
field(OUT, "$(P)$(CRLID):sortedIndex PP")
mwyman
committed
}
record(calcout, "$(P)$(CRLID):fSize_twk_dn"){
field(INPA, "$(P)$(CRLID):sortedIndex_RBV")
field(CALC, "MAX(0,A-1)")
field(OUT, "$(P)$(CRLID):sortedIndex PP")
mwyman
committed
}
record(ao, "$(P)$(CRLID):slitSize_H"){
mwyman
committed
field(EGU, "m")
field(DOL, "$(SLITH) CP")
field(OMSL, "closed_loop")
mwyman
committed
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateSlitSize(VAL, 'hor')")
field(FLNK, "$(P)$(CRLID):recalc_table.PROC CA")
record(ai, "$(P)$(CRLID):slitSize_H_RBV"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('updated_slitSize_H')")
field(SCAN, "I/O Intr")
mwyman
committed
}
record(ao, "$(P)$(CRLID):slitSize_V"){
mwyman
committed
field(EGU, "m")
field(DOL, "$(SLITV) CP")
field(OMSL, "closed_loop")
mwyman
committed
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateSlitSize(VAL, 'vert')")
field(FLNK, "$(P)$(CRLID):recalc_table.PROC CA")
}
record(ai, "$(P)$(CRLID):slitSize_V_RBV"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('updated_slitSize_V')")
field(SCAN, "I/O Intr")
}
record(bo, "$(P)$(CRLID):recalc_enable"){
field(DESC, "Lookup table calc enable")
field(SCAN, "Passive")
field(ZNAM, "Disabled")
# Not sure this would work -- how to get a PV to simply trigger code?
record(bo, "$(P)$(CRLID):recalc_table"){
field(DTYP, "pydev")
field(OUT, "@$(OBJ).construct_lookup_table()")
field(FLNK, "$(P)$(CRLID):refind_config.PROC CA")
field(SDIS, "$(P)$(CRLID):recalc_enable")
}
# Not sure this would work -- how to get a PV to simply trigger code?
record(bo, "$(P)$(CRLID):refind_config"){
field(DTYP, "pydev")
field(OUT, "@$(OBJ).find_config()")
}
record(bo, "$(P)$(CRLID):thickerr_flag"){
field(DTYP, "pydev")
field(ZNAM, "Off")
field(ONAM, "On")
mwyman
committed
field(OUT, "@$(OBJ).setThickerrFlag(VAL)")
field(FLNK, "$(P)$(CRLID):recalc_table.PROC CA")
record(bi, "$(P)$(CRLID):thickerr_flag_RBV"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('updated_thickerr_Flag')")
field(SCAN, "I/O Intr")
mwyman
committed
}
record(longin, "$(P)$(CRLID):lenses") {
mwyman
committed
field(DTYP, "pydev")
mwyman
committed
field(SCAN, "I/O Intr")
field(FLNK, "$(P)$(CRLID):lens_decode.PROC CA")
mwyman
committed
}
record(transform, "$(P)$(CRLID):lens_decode"){
field(INPA, "$(P)$(CRLID):lenses PP")
mwyman
committed
field(CLCB, "A % 2")
field(CLCC, "(A >> 1) % 2")
field(CLCD, "(A >> 2) % 2")
field(CLCE, "(A >> 3) % 2")
field(CLCF, "(A >> 4) % 2")
field(CLCG, "(A >> 5) % 2")
field(CLCH, "(A >> 6) % 2")
field(CLCI, "(A >> 7) % 2")
field(CLCJ, "(A >> 8) % 2")
field(CLCK, "(A >> 9) % 2")
# field(CLCL, "(A >> 10) % 2")
# field(CLCM, "(A >> 11) % 2")
mwyman
committed
}
record(calcout, "$(P)$(CRLID):lens_encode"){
field(OUT, "$(P)$(CRLID):lensConfig_BW PP")
field(CALC, "A+B*2+C*4+D*8+E*16+F*32+G*64+H*128+I*256+J*512")
mwyman
committed
}
record(calcout, "$(P)$(CRLID):lens_RBV_encode"){
field(OUT, "$(P)$(CRLID):lensConfig_RBV PP")
field(CALC, "A+B*2+C*4+D*8+E*16+F*32+G*64+H*128+I*256+J*512")
}
record(longin, "$(P)$(CRLID):lensConfig_RBV") {
record(longout, "$(P)$(CRLID):lensConfig_BW") {
mwyman
committed
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateConfig(VAL)")
mwyman
committed
}
record(ai, "$(P)$(CRLID):fSize_actual"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_fSize')")
field(SCAN, "I/O Intr")
field(PREC, "5")
}
record(longout, "$(P)$(CRLID):sortedIndex") {
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateIndex(VAL)")
}
record(longin, "$(P)$(CRLID):sortedIndex_RBV") {
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_index')")
field(SCAN, "I/O Intr")
}
record(longout, "$(P)$(CRLID):previewIndex") {
mwyman
committed
field(OUT, "@$(OBJ).getPreviewFocalSize(VAL)")
record(ai, "$(P)$(CRLID):fSize_preview"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_preview')")
field(SCAN, "I/O Intr")
field(PREC, "6")
}
record(bo, "$(P)$(CRLID):verbosity"){
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateVerbosity(VAL)")
field(ZNAM, "Off")
field(ONAM, "On")
record(waveform, "$(P)$(CRLID):fSizes"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_lookupTable')")
field(SCAN, "I/O Intr")
field(PREC, "6")
field(FTVL, "DOUBLE")
field(NELM, "$(ELEM)")
}
record(waveform, "$(P)$(CRLID):invF_indices"){
mwyman
committed
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_invFind_list')")
mwyman
committed
field(SCAN, "I/O Intr")
field(PREC, "6")
field(FTVL, "DOUBLE")
field(NELM, "$(ELEM)")
}
record(waveform, "$(P)$(CRLID):invF"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_invF_list')")
field(SCAN, "I/O Intr")
field(PREC, "6")
field(FTVL, "DOUBLE")
field(NELM, "$(ELEM)")
}
record(waveform, "$(P)$(CRLID):configs"){
field(SCAN, "I/O Intr")
field(PREC, "6")
field(FTVL, "LONG")
field(NELM, "$(ELEM)")
}
# The commented out records below were meant to replicate the lock feature used
# in filter control. BL staff indicated not required but kept in case needed.
# Will also have to update python code (in/out masks, culled tables/indices need
# to be uncommented).
# MW 2024.09.04
#!record(calcout, "$(P)$(CRLID):outMask_encode"){
#! field(OUT, "$(P)$(CRLID):outMask PP")
#! field(CALC, "A+B*2+C*4+D*8+E*16+F*32+G*64+H*128+I*256+J*512")
#!}
#!
#!record(longout, "$(P)$(CRLID):outMask") {
#! field(DTYP, "pydev")
#! field(DESC, "Fixed-out lens mask")
mwyman
committed
#! field(OUT, "@$(OBJ).setOutMask(VAL)")
#!record(calcout, "$(P)$(CRLID):inMask_encode"){
#! field(OUT, "$(P)$(CRLID):inMask PP")
#! field(CALC, "A+B*2+C*4+D*8+E*16+F*32+G*64+H*128+I*256+J*512")
#!}
#!
#!record(longout, "$(P)$(CRLID):inMask") {
#! field(DTYP, "pydev")
#! field(DESC, "Fixed-in lens mask")
mwyman
committed
#! field(OUT, "@$(OBJ).setInMask(VAL)")
#!record(longin, "$(P)$(CRLID):inMask_RBV") {
#! field(DTYP, "pydev")
#! field(INP, "@pydev.iointr('new_inMask')")
#! field(SCAN, "I/O Intr")
#!}
#!
#!record(longin, "$(P)$(CRLID):outMask_RBV") {
#! field(DTYP, "pydev")
#! field(INP, "@pydev.iointr('new_outMask')")
#! field(SCAN, "I/O Intr")
#!}
#! record(waveform, "$(P)$(CRLID):fSizes_culled"){
#! field(DTYP, "pydev")
#! field(INP, "@pydev.iointr('new_culledTable')")
#! field(SCAN, "I/O Intr")
#! field(PREC, "6")
#! field(FTVL, "DOUBLE")
#! field(NELM, "$(ELEM)")
#! }
#! record(waveform, "$(P)$(CRLID):configs_culled"){