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