# EPICS Database for streamdevice support for functionality specific to the 2nd # Generation Systems # # Macros # INSTR - Prefix # NAME - the device name, e.g. DAQV2 # PROTO - Stream device protocol file # ASYN_PORT - Low level Asyn IP Port to DAQ ################################################################################ # Status Variables record(longout, "$(INSTR)$(NAME):MONITOR-CHANNEL") { field(DESC, "PRESET_COUNT Monitors this channel") field(DRVL, "1") # Smallest Monitor Channel field(DRVH, "$(CHANNELS)") # Largest Monitor Channel field(DTYP, "stream") field(OUT, "@$(PROTO) writePresetMonitor($(INSTR)$(NAME):) $(ASYN_PORT)") field(FLNK, "$(INSTR)$(NAME):MONITOR-CHANNEL_RBV.PROC") } record(longin, "$(INSTR)$(NAME):MONITOR-CHANNEL_RBV") { field(DESC, "PRESET_COUNT Monitors this channel") field(DTYP, "stream") field(INP, "@$(PROTO) readPresetMonitor($(INSTR)$(NAME):) $(ASYN_PORT)") field(SCAN, ".5 second") field(FLNK, "$(INSTR)$(NAME):CORRECT_MONITOR_CHANNEL.PROC") } # Force back to 1 if it is 0, as 0 has no meaning... record(seq, "$(INSTR)$(NAME):CORRECT_MONITOR_CHANNEL") { field(SELM, "Specified") field(SELL, "$(INSTR)$(NAME):MONITOR-CHANNEL_RBV.VAL NPP") field(DO0, 1) field(LNK0, "$(INSTR)$(NAME):MONITOR-CHANNEL PP") } record(sel, "$(INSTR)$(NAME):CH_PRESET") { field(DESC, "Monitor threshold to actually use") field(SELM, "Specified") field(NVL, "$(INSTR)$(NAME):MONITOR-CHANNEL_RBV.VAL NPP") # Skip A as it corresponds to 0 field(INPB, "$(INSTR)$(NAME):CH1_PRESET NPP") field(INPC, "$(INSTR)$(NAME):CH2_PRESET NPP") field(INPD, "$(INSTR)$(NAME):CH3_PRESET NPP") field(INPE, "$(INSTR)$(NAME):CH4_PRESET NPP") field(INPF, "$(INSTR)$(NAME):CH5_PRESET NPP") field(INPG, "$(INSTR)$(NAME):CH6_PRESET NPP") field(INPH, "$(INSTR)$(NAME):CH7_PRESET NPP") field(INPI, "$(INSTR)$(NAME):CH8_PRESET NPP") field(INPJ, "$(INSTR)$(NAME):CH9_PRESET NPP") field(INPK, "$(INSTR)$(NAME):CH10_PRESET NPP") } record(dfanout,"$(INSTR)$(NAME):CH_PRESET_CLEAR") { field(DESC, "Clears all channel presets") field(SELM, "All") field(OMSL, "closed_loop") field(DOL, 1) field(OUTA, "$(INSTR)$(NAME):CH_PRESET_CLEAR1.PROC") field(OUTB, "$(INSTR)$(NAME):CH_PRESET_CLEAR2.PROC") } record(dfanout,"$(INSTR)$(NAME):CH_PRESET_CLEAR1") { field(SELM, "All") field(OMSL, "closed_loop") field(DOL, 0) field(OUTA, "$(INSTR)$(NAME):CH1_PRESET PP") field(OUTB, "$(INSTR)$(NAME):CH2_PRESET PP") field(OUTC, "$(INSTR)$(NAME):CH3_PRESET PP") field(OUTD, "$(INSTR)$(NAME):CH4_PRESET PP") field(OUTE, "$(INSTR)$(NAME):CH5_PRESET PP") field(OUTF, "$(INSTR)$(NAME):CH6_PRESET PP") field(OUTG, "$(INSTR)$(NAME):CH7_PRESET PP") field(OUTH, "$(INSTR)$(NAME):CH8_PRESET PP") } record(dfanout,"$(INSTR)$(NAME):CH_PRESET_CLEAR2") { field(SELM, "All") field(OMSL, "closed_loop") field(DOL, 0) field(OUTA, "$(INSTR)$(NAME):CH9_PRESET PP") field(OUTB, "$(INSTR)$(NAME):CH10_PRESET PP") } record(dfanout,"$(INSTR)$(NAME):CH_CLEAR") { field(DESC, "Clears all channel counts") field(SELM, "All") field(OMSL, "closed_loop") field(DOL, 1) field(OUTA, "$(INSTR)$(NAME):CH_CLEAR1.PROC PP") field(OUTB, "$(INSTR)$(NAME):CH_CLEAR2.PROC PP") } record(dfanout,"$(INSTR)$(NAME):CH_CLEAR1") { field(SELM, "All") field(OMSL, "closed_loop") field(DOL, 1) field(OUTA, "$(INSTR)$(NAME):CH1_CLEAR.PROC PP") field(OUTB, "$(INSTR)$(NAME):CH2_CLEAR.PROC PP") field(OUTC, "$(INSTR)$(NAME):CH3_CLEAR.PROC PP") field(OUTD, "$(INSTR)$(NAME):CH4_CLEAR.PROC PP") field(OUTE, "$(INSTR)$(NAME):CH5_CLEAR.PROC PP") field(OUTF, "$(INSTR)$(NAME):CH6_CLEAR.PROC PP") field(OUTG, "$(INSTR)$(NAME):CH7_CLEAR.PROC PP") field(OUTH, "$(INSTR)$(NAME):CH8_CLEAR.PROC PP") } record(dfanout,"$(INSTR)$(NAME):CH_CLEAR2") { field(SELM, "All") field(OMSL, "closed_loop") field(DOL, 1) field(OUTA, "$(INSTR)$(NAME):CH9_CLEAR.PROC PP") field(OUTB, "$(INSTR)$(NAME):CH10_CLEAR.PROC PP") } ################################################################################ # The hardware stores a separate threshold for each channel, which is somewhat # unintuitive for the user, as only one can actually be made use of at a time. # So, we just write the threshold value to all channels when it is changed. record(dfanout,"$(INSTR)$(NAME):CH_THRESHOLD") { field(DESC, "Sets Channel Lowrate Thresholds") field(OMSL, "supervisory") field(SELM, "All") field(OUTA, "$(INSTR)$(NAME):CH_THRESHOLD1 PP") field(OUTB, "$(INSTR)$(NAME):CH_THRESHOLD2 PP") } record(dfanout,"$(INSTR)$(NAME):CH_THRESHOLD1") { field(OMSL, "supervisory") field(SELM, "All") field(OUTA, "$(INSTR)$(NAME):CH1_THRESH PP") field(OUTB, "$(INSTR)$(NAME):CH2_THRESH PP") field(OUTC, "$(INSTR)$(NAME):CH3_THRESH PP") field(OUTD, "$(INSTR)$(NAME):CH4_THRESH PP") field(OUTE, "$(INSTR)$(NAME):CH5_THRESH PP") field(OUTF, "$(INSTR)$(NAME):CH6_THRESH PP") field(OUTG, "$(INSTR)$(NAME):CH7_THRESH PP") field(OUTH, "$(INSTR)$(NAME):CH8_THRESH PP") } record(dfanout,"$(INSTR)$(NAME):CH_THRESHOLD2") { field(OMSL, "supervisory") field(SELM, "All") field(OUTA, "$(INSTR)$(NAME):CH9_THRESH PP") field(OUTB, "$(INSTR)$(NAME):CH10_THRESH PP") }