Skip to content
Snippets Groups Projects
pyDevCRLsingle.db 8.1 KiB
Newer Older
mwyman's avatar
mwyman committed
# Select the source field for the energy
record(bo, "$(P)$(CRLID):EnergySelect") {
mwyman's avatar
mwyman committed
  field(DESC, "energy selection")
  field(DTYP, "Soft Channel")
  field(ZNAM, "Mono")
  field(ONAM, "Local")
  field(VAL, "1")
  field(FLNK, "$(P)$(CRLID):EnergyCalc")
mwyman's avatar
mwyman committed
}

# The local energy
record(ao, "$(P)$(CRLID):EnergyLocal") {
mwyman's avatar
mwyman committed
  field(DESC, "local energy")
  field(VAL,  "12.398")
  field(PREC, "4")
  field(EGU, "keV")
  field(FLNK, "$(P)$(CRLID):EnergyCalc")
mwyman's avatar
mwyman committed
}

# The beamline energy
record(ao, "$(P)$(CRLID):EnergyBeamline") {
mwyman's avatar
mwyman committed
  field(DESC, "beamline energy")
  field(DOL,  "$(KEV) CP")
  field(OMSL, "closed_loop")
  field(PREC, "4")
  field(EGU, "keV")
  field(FLNK, "$(P)$(CRLID):EnergyCalc")
mwyman's avatar
mwyman committed
}

# Calculate the energy to be used
record(calcout, "$(P)$(CRLID):EnergyCalc"){
mwyman's avatar
mwyman committed
  field(DESC, "Energy select calc")
  field(SCAN, "Passive")
  field(INPA, "$(P)$(CRLID):EnergySelect.RVAL")
  field(INPB, "$(P)$(CRLID):EnergyBeamline")
  field(INPC, "$(P)$(CRLID):EnergyLocal")
mwyman's avatar
mwyman committed
  field(CALC, "(A==0)?B:C")
  field(OUT, "$(P)$(CRLID):energy PP")
mwyman's avatar
mwyman committed
  field(PREC, "4")
  field(SCAN, "Passive")
}

mwyman's avatar
mwyman committed
	field(EGU, "keV")
mwyman's avatar
mwyman committed
    field(DOL,  "$(KEV) CP")
    field(OMSL, "closed_loop")
	field(FLNK, "$(P)$(CRLID):recalc_table.PROC CA")
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"){
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")
record(calcout, "$(P)$(CRLID):fSize_twk_dn"){
	field(INPA, "$(P)$(CRLID):sortedIndex_RBV")
	field(OUT, "$(P)$(CRLID):sortedIndex PP")
record(ao, "$(P)$(CRLID):slitSize_H"){
mwyman's avatar
mwyman committed
    field(DOL,  "$(SLITH) CP")
    field(OMSL, "closed_loop")
	field(OUT, "@$(OBJ).updateSlitSize(VAL, 'hor')")
	field(FLNK, "$(P)$(CRLID):recalc_table.PROC CA")
mwyman's avatar
mwyman committed
	field(PREC, "6")
record(ai, "$(P)$(CRLID):slitSize_H_RBV"){
  field(DTYP, "pydev")
  field(INP,  "@pydev.iointr('updated_slitSize_H')")
  field(SCAN, "I/O Intr")
mwyman's avatar
mwyman committed
  field(PREC, "6")
  field(EGU, "m")
record(ao, "$(P)$(CRLID):slitSize_V"){
mwyman's avatar
mwyman committed
    field(DOL,  "$(SLITV) CP")
    field(OMSL, "closed_loop")
	field(OUT, "@$(OBJ).updateSlitSize(VAL, 'vert')")
	field(FLNK, "$(P)$(CRLID):recalc_table.PROC CA")
mwyman's avatar
mwyman committed
	field(PREC, "6")
record(ai, "$(P)$(CRLID):slitSize_V_RBV"){
  field(DTYP, "pydev")
  field(INP,  "@pydev.iointr('updated_slitSize_V')")
  field(SCAN, "I/O Intr")
mwyman's avatar
mwyman committed
  field(PREC, "6")
  field(EGU, "m")
record(bo, "$(P)$(CRLID):recalc_enable"){
mwyman's avatar
mwyman committed
	field(DESC, "Lookup table calc enable")
	field(SCAN, "Passive")
	field(ZNAM, "Disabled")
mwyman's avatar
mwyman committed
	field(ONAM, "Enabled")
# 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")
mwyman's avatar
mwyman committed
	field(DISV, "0")
}

# 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(ZNAM, "Off")
	field(ONAM, "On")
	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")
record(longin, "$(P)$(CRLID):lenses") {
  field(INP,  "@pydev.iointr('new_lenses')")
  field(FLNK, "$(P)$(CRLID):lens_decode.PROC CA")
record(transform, "$(P)$(CRLID):lens_decode"){
	field(INPA, "$(P)$(CRLID):lenses PP")
	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")
record(calcout, "$(P)$(CRLID):lens_encode"){
	field(OUT, "$(P)$(CRLID):lensConfig_BW PP")
mwyman's avatar
mwyman committed
	field(CALC, "A+B*2+C*4+D*8+E*16+F*32+G*64+H*128+I*256+J*512")
record(calcout, "$(P)$(CRLID):lens_RBV_encode"){
	field(OUT, "$(P)$(CRLID):lensConfig_RBV PP")
mwyman's avatar
mwyman committed
	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") {
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") {
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's avatar
mwyman committed
  field(DTYP, "pydev")
  field(OUT, "@$(OBJ).getPreviewFocalSize(VAL)")
record(ai, "$(P)$(CRLID):fSize_preview"){
mwyman's avatar
mwyman committed
  field(DTYP, "pydev")
  field(INP,  "@pydev.iointr('new_preview')")
  field(SCAN, "I/O Intr")
  field(PREC, "6")
}

record(bo, "$(P)$(CRLID):verbosity"){
	field(OUT, "@$(OBJ).updateVerbosity(VAL)")
	field(ZNAM, "Off")
	field(ONAM, "On")
record(waveform, "$(P)$(CRLID):fSizes"){
mwyman's avatar
mwyman committed
  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"){
  field(INP,  "@pydev.iointr('new_invFind_list')")
  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"){
mwyman's avatar
mwyman committed
  field(DTYP, "pydev")
mwyman's avatar
mwyman committed
  field(INP,  "@pydev.iointr('new_configs')")
mwyman's avatar
mwyman committed
  field(SCAN, "I/O Intr")
  field(PREC, "6")
  field(FTVL, "LONG")
  field(NELM, "$(ELEM)")
mwyman's avatar
mwyman committed
  }

# 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")
mwyman's avatar
mwyman committed
#!	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") {
mwyman's avatar
mwyman committed
#!  field(DTYP, "pydev")
#!  field(DESC, "Fixed-out lens mask")
mwyman's avatar
mwyman committed
#!}
#!
#!record(calcout, "$(P)$(CRLID):inMask_encode"){
#!	field(OUT, "$(P)$(CRLID):inMask PP")
mwyman's avatar
mwyman committed
#!	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") {
mwyman's avatar
mwyman committed
#!  field(DTYP, "pydev")
#!  field(DESC, "Fixed-in lens mask")
#!record(longin, "$(P)$(CRLID):inMask_RBV") {
mwyman's avatar
mwyman committed
#!  field(DTYP, "pydev")
#!  field(INP,  "@pydev.iointr('new_inMask')")
#!  field(SCAN, "I/O Intr")
#!}
#!
#!record(longin, "$(P)$(CRLID):outMask_RBV") {
mwyman's avatar
mwyman committed
#!  field(DTYP, "pydev")
#!  field(INP,  "@pydev.iointr('new_outMask')")
#!  field(SCAN, "I/O Intr")
#!}


#! record(waveform, "$(P)$(CRLID):fSizes_culled"){
mwyman's avatar
mwyman committed
#!   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"){
mwyman's avatar
mwyman committed
#!   field(DTYP, "pydev")
#!   field(INP,  "@pydev.iointr('new_culledConfigs')")
#!   field(SCAN, "I/O Intr")
#!   field(PREC, "6")
#!   field(FTVL, "LONG")
#!   field(NELM, "$(ELEM)")
#! }