diff --git a/db/daq_soft_proton.db b/db/daq_soft_proton.db index 7e1ddfe..77d11a5 100644 --- a/db/daq_soft_proton.db +++ b/db/daq_soft_proton.db @@ -3,6 +3,19 @@ # This is created to be able reuse the SinqDAQ interface # in Nicos, to avoid having more code to maintain there. # +# Commands that has no actual relevant value that needs to be written to them: +# * Pause +# * Continue +# * Stop +# * Full reset +# * Reset elapsed time +# * Reset the counter/monitor value +# Are all implemented as seq records. Due to how the existing +# interface worked, they were being written 1 from nicos. +# It just so turns out that seq record's VAL field triggers processing, +# but a calcout records VAL field doesn't. seq record was the only option +# to emulate these features with only 1 record per command. +# # This requires following macros to specified: # INSTR: Instrument prefix, e.g. "SQAMOR:" # NAME: Name of the DAQ, e.g. "PROTONDAQ" @@ -86,40 +99,36 @@ record(longout, "$(INSTR)$(NAME):PRESET-TIME-TRIG") field(FLNK, "$(INSTR)$(NAME):COUNT-TYPE") } -record(longout, "$(INSTR)$(NAME):PAUSE") +record(seq, "$(INSTR)$(NAME):PAUSE") { field(DESC, "Pause the current count") - field(VAL, 3) - field(DRVL, 3) - field(DRVH, 3) - field(OUT, "$(INSTR)$(NAME):COMMAND-TRIG PP") + field(SELM, "All") + field(DO0, 3) + field(LNK0, "$(INSTR)$(NAME):COMMAND-TRIG PP") } -record(longout, "$(INSTR)$(NAME):CONTINUE") +record(seq, "$(INSTR)$(NAME):CONTINUE") { field(DESC, "Continue with a count that was paused") - field(VAL, 4) - field(DRVL, 4) - field(DRVH, 4) - field(OUT, "$(INSTR)$(NAME):COMMAND-TRIG PP") + field(SELM, "All") + field(DO0, 4) + field(LNK0, "$(INSTR)$(NAME):COMMAND-TRIG PP") } -record(longout, "$(INSTR)$(NAME):STOP") +record(seq, "$(INSTR)$(NAME):STOP") { field(DESC, "Stop the current counting operation") - field(VAL, 5) - field(DRVL, 5) - field(DRVH, 5) - field(OUT, "$(INSTR)$(NAME):COMMAND-TRIG PP") + field(SELM, "All") + field(DO0, 5) + field(LNK0, "$(INSTR)$(NAME):COMMAND-TRIG PP") } -record(longout, "$(INSTR)$(NAME):FULL-RESET") +record(seq, "$(INSTR)$(NAME):FULL-RESET") { field(DESC, "Perform full reset") - field(VAL, 6) - field(DRVL, 6) - field(DRVH, 6) - field(OUT, "$(INSTR)$(NAME):COMMAND-TRIG PP") + field(SELM, "All") + field(DO0, 6) + field(LNK0, "$(INSTR)$(NAME):COMMAND-TRIG PP") } # Emulate Reset elapsed time @@ -190,22 +199,9 @@ record(ai,"$(INSTR)$(NAME):ELAPSED-TIME") { field(DESC, "DAQ Measured Time") field(EGU, "sec") - # We need to process ETS to signal to client -# field(FLNK, "$(INSTR)$(NAME):ETO") } -# Trigger a change in status as value returned to 0 -#record(seq, "$(INSTR)$(NAME):ETO") -#{ -# field(DESC, "Trigger Returned to 0 Status") -# field(LNK0, "$(INSTR)$(NAME):ETS PP") -# field(DO0, 0) -# field(SELM, "Specified") -# field(SELL, "$(INSTR)$(NAME):ELAPSED-TIME.VAL") -#} - # Current Status of elapsed time -# This is only to satify the interface. record(bi, "$(INSTR)$(NAME):ETS") { field(DESC, "Channel Status")