Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Select the source field for the energy
record(bo, "$(P)CRL$(N):EnergySelect") {
field(DESC, "energy selection")
field(DTYP, "Soft Channel")
field(ZNAM, "Mono")
field(ONAM, "Local")
field(VAL, "1")
field(FLNK, "$(P)CRL$(N):EnergyCalc")
}
# The local energy
record(ao, "$(P)CRL$(N):EnergyLocal") {
field(DESC, "local energy")
field(VAL, "12.398")
field(PREC, "4")
field(EGU, "keV")
field(FLNK, "$(P)CRL$(N):EnergyCalc")
}
# The beamline energy
record(ao, "$(P)CRL$(N):EnergyBeamline") {
field(DESC, "beamline energy")
field(DOL, "$(KEV) CP")
field(OMSL, "closed_loop")
field(PREC, "4")
field(EGU, "keV")
field(FLNK, "$(P)CRL$(N):EnergyCalc")
}
# Calculate the energy to be used
record(calcout, "$(P)CRL$(N):EnergyCalc"){
field(DESC, "Energy select calc")
field(SCAN, "Passive")
field(INPA, "$(P)CRL$(N):EnergySelect.RVAL")
field(INPB, "$(P)CRL$(N):EnergyBeamline")
field(INPC, "$(P)CRL$(N):EnergyLocal")
field(CALC, "(A==0)?B:C")
field(OUT, "$(P)CRL$(N):energy PP")
field(PREC, "4")
field(SCAN, "Passive")
}
mwyman
committed
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateE(VAL)")
field(FLNK, "$(P)CRL$(N):recalc_table.PROC CA")
mwyman
committed
}
record(ai, "$(P)CRL$(N):energy_RBV"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('updated_E')")
field(SCAN, "I/O Intr")
field(PREC, "5")
}
mwyman
committed
field(EGU, "m")
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateFsize(VAL)")
mwyman
committed
}
record(calcout, "$(P)CRL$(N):fSize_twk_up"){
field(INPA, "$(P)CRL$(N):sortedIndex_RBV")
field(CALC, "MIN(A+1,2**$(NUM)-1)")
mwyman
committed
}
record(calcout, "$(P)CRL$(N):fSize_twk_dn"){
field(INPA, "$(P)CRL$(N):sortedIndex_RBV")
field(CALC, "MAX(0,A-1)")
mwyman
committed
}
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)CRL$(N):recalc_table.PROC CA")
}
record(ai, "$(P)CRL$(N):slitSize_H_RBV"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('updated_slitSize_H')")
field(SCAN, "I/O Intr")
mwyman
committed
}
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)CRL$(N):recalc_table.PROC CA")
}
record(ai, "$(P)CRL$(N):slitSize_V_RBV"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('updated_slitSize_V')")
field(SCAN, "I/O Intr")
}
record(bo, "$(P)CRL$(N):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)CRL$(N):recalc_table"){
field(DTYP, "pydev")
field(OUT, "@$(OBJ).construct_lookup_table()")
field(FLNK, "$(P)CRL$(N):refind_config.PROC CA")
field(SDIS, "$(P)CRL$(N):recalc_enable")
field(DISV, "0")
}
# Not sure this would work -- how to get a PV to simply trigger code?
record(bo, "$(P)CRL$(N):refind_config"){
field(DTYP, "pydev")
field(OUT, "@$(OBJ).find_config()")
}
record(bo, "$(P)CRL$(N):thickerr_flag"){
field(DTYP, "pydev")
field(ZNAM, "Off")
field(ONAM, "On")
mwyman
committed
field(OUT, "@$(OBJ).setThickerrFlag(VAL)")
field(FLNK, "$(P)CRL$(N):recalc_table.PROC CA")
}
record(bi, "$(P)CRL$(N):thickerr_flag_RBV"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('updated_thickerr_Flag')")
field(SCAN, "I/O Intr")
mwyman
committed
}
mwyman
committed
field(DTYP, "pydev")
mwyman
committed
field(SCAN, "I/O Intr")
mwyman
committed
}
record(transform, "$(P)CRL$(N):lens_decode"){
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)CRL$(N):lens_encode"){
field(OUT, "$(P)CRL$(N):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)CRL$(N):lens_RBV_encode"){
field(OUT, "$(P)CRL$(N):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)CRL$(N):lensConfig_RBV") {
}
record(longout, "$(P)CRL$(N):lensConfig_BW") {
mwyman
committed
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateConfig(VAL)")
mwyman
committed
}
record(ai, "$(P)CRL$(N):fSize_actual"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_fSize')")
field(SCAN, "I/O Intr")
field(PREC, "5")
}
record(longout, "$(P)CRL$(N):sortedIndex") {
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateIndex(VAL)")
}
record(longin, "$(P)CRL$(N):sortedIndex_RBV") {
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_index')")
field(SCAN, "I/O Intr")
}
record(longout, "$(P)CRL$(N):previewIndex") {
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).getPreviewFocalSize(VAL)")
}
record(ai, "$(P)CRL$(N):fSize_preview"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_preview')")
field(SCAN, "I/O Intr")
field(PREC, "6")
}
record(bo, "$(P)CRL$(N):verbosity"){
field(DTYP, "pydev")
mwyman
committed
field(OUT, "@$(OBJ).updateVerbosity(VAL)")
field(ZNAM, "Off")
field(ONAM, "On")
record(waveform, "$(P)CRL$(N):fSizes"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_lookupTable')")
field(SCAN, "I/O Intr")
field(PREC, "6")
field(FTVL, "DOUBLE")
field(NELM, "$(ELEM)")
}
mwyman
committed
record(waveform, "$(P)CRL$(N):invF_indices"){
field(DTYP, "pydev")
field(INP, "@pydev.iointr('new_invF_list')")
field(SCAN, "I/O Intr")
field(PREC, "6")
field(FTVL, "DOUBLE")
field(NELM, "$(ELEM)")
}
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)CRL$(N):outMask_encode"){
#! field(OUT, "$(P)CRL$(N):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)CRL$(N):outMask") {
#! field(DTYP, "pydev")
#! field(DESC, "Fixed-out lens mask")
mwyman
committed
#! field(OUT, "@$(OBJ).setOutMask(VAL)")
#!}
#!
#!record(calcout, "$(P)CRL$(N):inMask_encode"){
#! field(OUT, "$(P)CRL$(N):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)CRL$(N):inMask") {
#! field(DTYP, "pydev")
#! field(DESC, "Fixed-in lens mask")
mwyman
committed
#! field(OUT, "@$(OBJ).setInMask(VAL)")
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
#!}
#!record(longin, "$(P)CRL$(N):inMask_RBV") {
#! field(DTYP, "pydev")
#! field(INP, "@pydev.iointr('new_inMask')")
#! field(SCAN, "I/O Intr")
#!}
#!
#!record(longin, "$(P)CRL$(N):outMask_RBV") {
#! field(DTYP, "pydev")
#! field(INP, "@pydev.iointr('new_outMask')")
#! field(SCAN, "I/O Intr")
#!}
#! record(waveform, "$(P)CRL$(N):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)CRL$(N):configs_culled"){
#! field(DTYP, "pydev")
#! field(INP, "@pydev.iointr('new_culledConfigs')")
#! field(SCAN, "I/O Intr")
#! field(PREC, "6")
#! field(FTVL, "LONG")
#! field(NELM, "$(ELEM)")
#! }