record(ao, "$(P)Filter$(N):attenuation"){ field(DTYP, "pydev") field(OUT, "@$(OBJ).updateAtten('VAL')") field(DRVL, "1") field(PREC, "3") } record(ao, "$(P)Filter$(N):attenFactor"){ field(VAL, "1.0") field(FLNK, "$(P)Filter$(N):attenFactor_Calc PP") } record(calcout, "$(P)Filter$(N):attenFactor_Calc"){ field(SCAN, "Passive") field(INPA, "$(P)Filter$(N):attenuation_actual") field(INPB, "$(P)Filter$(N):attenFactor") field(CALC, "MAX(A*B,1.0)") field(OUT, "$(P)Filter$(N):attenuation PP") } # Select the source field for the energy record(bo, "$(P)Filter$(N):EnergySelect") { field(DESC, "energy selection") field(DTYP, "Soft Channel") field(ZNAM, "Mono") field(ONAM, "Local") field(VAL, "1") field(FLNK, "$(P)Filter$(N):EnergyCalc") } # The local energy record(ao, "$(P)Filter$(N):EnergyLocal") { field(DESC, "local energy") field(VAL, "12.398") field(PREC, "4") field(EGU, "keV") field(FLNK, "$(P)Filter$(N):EnergyCalc") } # The beamline energy record(ao, "$(P)Filter$(N):EnergyBeamline") { field(DESC, "beamline energy") field(DOL, "$(KEV) CP") field(OMSL, "closed_loop") field(PREC, "4") field(EGU, "keV") field(FLNK, "$(P)Filter$(N):EnergyCalc") } # Calculate the energy to be used record(calcout, "$(P)Filter$(N):EnergyCalc"){ field(DESC, "Energy select calc") field(SCAN, "Passive") field(INPA, "$(P)Filter$(N):EnergySelect.RVAL") field(INPB, "$(P)Filter$(N):EnergyBeamline") field(INPC, "$(P)Filter$(N):EnergyLocal") field(CALC, "(A==0)?B:C") field(OUT, "$(P)Filter$(N):energy PP") field(PREC, "4") field(SCAN, "Passive") } record(ao, "$(P)Filter$(N):energy"){ field(EGU, "keV") field(DTYP, "pydev") field(OUT, "@$(OBJ).updateEnergy('VAL')") field(PREC, "4") } record(ai, "$(P)Filter$(N):energy_RBV"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('new_energy')") field(SCAN, "I/O Intr") field(EGU, "keV") field(PREC, "4") } #record(bo, "$(P)Filter$(N):attenuation_twk_up"){ # field(DTYP, "pydev") ## field(HIGH, "0.25") # field(OUT, "@$(OBJ).tweakUp()") #} # #record(bo, "$(P)Filter$(N):attenuation_twk_dn"){ # field(DTYP, "pydev") ## field(HIGH, "0.25") # field(OUT, "@$(OBJ).tweakDn()") #} record(calcout, "$(P)Filter$(N):attenuation_twk_up"){ field(INPA, "$(P)Filter$(N):sortedIndex_RBV") field(CALC, "MIN(A+1,2**$(NUM)-1)") field(OUT, "$(P)Filter$(N):sortedIndex PP") } record(calcout, "$(P)Filter$(N):attenuation_twk_dn"){ field(INPA, "$(P)Filter$(N):sortedIndex_RBV") field(CALC, "MAX(0,A-1)") field(OUT, "$(P)Filter$(N):sortedIndex PP") } record(ai, "$(P)Filter$(N):attenuation_actual"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('new_atten')") field(SCAN, "I/O Intr") field(PREC, "3") } record(longin, "$(P)Filter$(N):filterConfig") { field(DTYP, "pydev") field(INP, "@pydev.iointr('new_filters')") field(SCAN, "I/O Intr") field(FLNK, "$(P)Filter$(N):safeTransition") } record(longout, "$(P)Filter$(N):sortedIndex") { field(DTYP, "pydev") field(OUT, "@$(OBJ).updateIndex('VAL')") } record(longin, "$(P)Filter$(N):sortedIndex_RBV") { field(DTYP, "pydev") field(INP, "@pydev.iointr('new_index')") field(SCAN, "I/O Intr") } record(longin, "$(P)Filter$(N):inMask_RBV") { field(DTYP, "pydev") field(INP, "@pydev.iointr('new_inMask')") field(SCAN, "I/O Intr") } record(longin, "$(P)Filter$(N):outMask_RBV") { field(DTYP, "pydev") field(INP, "@pydev.iointr('new_outMask')") field(SCAN, "I/O Intr") } record(longout, "$(P)Filter$(N):previewIndex") { field(DTYP, "pydev") field(OUT, "@$(OBJ).getPreviewAtten('VAL')") } record(ai, "$(P)Filter$(N):attenuation_preview"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('new_preview')") field(SCAN, "I/O Intr") field(PREC, "3") } record(sseq, "$(P)Filter$(N):safeTransition"){ field(DO1, "1") field(LNK1, "$(P)Filter$(N):disableEncode PP") field(DO2, "4095") # field(LNK2, "$(P)Filter$(N):rawConfig PP") field(LNK2, "$(P)Filter$(N):filter_decode.A PP") field(DLY3, "1.0") field(DOL3, "$(P)Filter$(N):filterConfig") # field(LNK3, "$(P)Filter$(N):rawConfig PP") field(LNK3, "$(P)Filter$(N):filter_decode.A PP") field(DO4, "0") field(LNK4, "$(P)Filter$(N):disableEncode PP") field(DLY5, "0.5") field(DO5, "1") field(LNK5, "$(P)Filter$(N):filter_RBV_encode.PROC PP") field(DO6, "1") field(LNK6, "$(P)Filter$(N):filter_encode.PROC PP") } #record(longin, "$(P)Filter$(N):rawConfig") { #} record(transform, "$(P)Filter$(N):filter_decode"){ # field(INPA, "$(P)Filter$(N):rawConfig CP") 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)Filter$(N):filter_RBV_encode"){ field(OUT, "$(P)Filter$(N):filterConfig_RBV PP") field(CALC, "A+B*2+C*4+D*8+E*16+F*32+G*64+H*128+I*256+J*512+K*1024+L*2048") # field(SDIS, "$(P)Filter$(N):disableEncode") # field(DISV, "1") } record(longin, "$(P)Filter$(N):filterConfig_RBV") { } record(bo, "$(P)Filter$(N):disableEncode"){ field(ZNAM, "Enabled") field(ONAM, "Disabled") } record(calcout, "$(P)Filter$(N):filter_encode"){ field(OUT, "$(P)Filter$(N):filterConfig_BW PP") field(CALC, "A+B*2+C*4+D*8+E*16+F*32+G*64+H*128+I*256+J*512+K*1024+L*2048") # field(SDIS, "$(P)Filter$(N):disableEncode") # field(DISV, "1") } record(longout, "$(P)Filter$(N):filterConfig_BW") { field(DTYP, "pydev") field(OUT, "@$(OBJ).updateConfig('VAL')") } record(ai, "$(P)Filter$(N):filterRBV_atten"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('config_atten')") field(SCAN, "I/O Intr") } record(ai, "$(P)Filter$(N):attenuation_2E_actual"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('new_atten_2E')") field(SCAN, "I/O Intr") } record(ai, "$(P)Filter$(N):attenuation_3E_actual"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('new_atten_3E')") field(SCAN, "I/O Intr") } record(calcout, "$(P)Filter$(N):outMask_encode"){ field(OUT, "$(P)Filter$(N):outMask PP") field(CALC, "A+B*2+C*4+D*8+E*16+F*32+G*64+H*128+I*256+J*512+K*1024+L*2048") } record(longout, "$(P)Filter$(N):outMask") { field(DTYP, "pydev") field(DESC, "Fixed-out filter mask") field(OUT, "@$(OBJ).setOutMask('VAL')") } record(calcout, "$(P)Filter$(N):inMask_encode"){ field(OUT, "$(P)Filter$(N):inMask PP") field(CALC, "A+B*2+C*4+D*8+E*16+F*32+G*64+H*128+I*256+J*512+K*1024+L*2048") } record(longout, "$(P)Filter$(N):inMask") { field(DTYP, "pydev") field(DESC, "Fixed-in filter mask") field(OUT, "@$(OBJ).setInMask('VAL')") } record(bo, "$(P)Filter$(N):verbosity"){ field(DTYP, "pydev") field(OUT, "@$(OBJ).updateVerbosity('VAL')") field(ZNAM, "Off") field(ONAM, "On") }