1 # % macro, P, device prefix
2 # % macro, Q, device sub prefix
3 # % macro, NAME, device name
4 # % macro, DEV, device COM port
8 field(DESC,
"Name of device")
9 field(VAL,
"$(NAME) [$(DEV)]")
14 field(DESC,
"Device COM port")
18 record(stringin,
"$(P)$(Q)INIT:_OUT")
20 field(VAL,
"$(INITOUT=)")
25 field(DESC,
"Init device")
27 field(OUT,
"@$(PROTO) initDev($(P)$(Q),$(INITIN)) $(PORT)")
28 field(SIML,
"$(P)$(Q)SIM")
29 field(SIOL,
"$(P)$(Q)SIM:VAL")
30 field(SDIS,
"$(P)$(Q)DISABLE")
32 field(PINI,
"$(INITP)")
33 info(INTEREST,
"MEDIUM")
36 ## reload protocol file
37 record(sub,
"$(P)$(Q)RELOAD_PROTOCOL")
39 field(SNAM,
"streamReloadSub")
42 ## send a string to a device, reply will get written back to this record but we pass it onto another for clarity
45 field(DESC,
"Send string to device")
47 field(OUT,
"@SDTEST-common.proto sendString $(PORT)")
48 field(FLNK,
"$(P)$(Q)REPLY.PROC")
49 field(SIML,
"$(P)$(Q)SIM")
50 field(SIOL,
"$(P)$(Q)SIM:VAL")
51 field(SDIS,
"$(P)$(Q)DISABLE")
52 # info(autosaveFields, "VAL")
54 info(INTEREST,
"HIGH")
55 info(alarm,
"SDTEST/$(DEV)")
57 alias(
"$(P)$(Q)COMM",
"$(P)$(Q)COMM:SP")
58 alias("$(P)$(Q)COMM", "$(P)$(Q)COMM:SP:RBV")
60 # string needs to be 'fff','ggg',CR etc
61 #record(stringout, "$(P)$(Q)COMM:Q")
63 # field(DESC, "Send quoted string to device")
64 # field(DTYP, "stream")
65 # field(OUT, "@$(PROTO) sendStringQ $(PORT)")
66 # field(FLNK, "$(P)$(Q)REPLY.PROC")
67 # field(SIML, "$(P)$(Q)SIM")
68 # field(SIOL, "$(P)$(Q)SIM:VAL")
69 # field(SDIS, "$(P)$(Q)DISABLE")
70 # info(autosaveFields, "VAL")
71 # info(archive, "VAL")
72 # info(INTEREST, "MEDIUM")
75 ## we are triggered when command is processed and pick up reply
78 field(DESC,
"Reply from device")
79 field(INP,
"$(P)$(Q)COMM NPP")
81 info(INTEREST,
"HIGH")
84 ## the command sent to the device to read a value
85 record(stringin,
"$(P)$(Q)GETVAL:_OUT")
87 field(VAL,
"$(GETOUT=)")
90 # PV names are too long to put entirely into protocol arguments, so just pass prefix and put rest of name in protocol file
93 field(DESC,
"Read value from device")
95 field(SCAN,
"$(SCAN)")
96 field(INP,
"@$(PROTO) getValue($(P)$(Q),$(GETIN)) $(PORT)")
97 field(SIML,
"$(P)$(Q)SIM")
98 field(SIOL,
"$(P)$(Q)SIM:VAL")
99 field(SDIS,
"$(P)$(Q)DISABLE")
103 info(INTEREST,
"HIGH")
104 info(alarm,
"SDTEST/$(DEV)")
109 field(VAL,
"$(SETOUTA=)")
112 # arg1 = prefix, arg2 = format for value to send, $3 = format for value to receive.
113 # we either need $3 to discard or match the value
116 field(DESC,
"Send value to device")
117 field(DTYP,
"stream")
118 field(OUT,
"@$(PROTO) setValue($(P)$(Q),$(SETOUTB),$(SETOUTC),$(SETIN)) $(PORT)")
119 field(SIML,
"$(P)$(Q)SIM")
120 field(SIOL,
"$(P)$(Q)SIM:VAL")
121 field(SDIS,
"$(P)$(Q)DISABLE")
125 info(INTEREST,
"HIGH")
126 info(alarm,
"SDTEST/$(DEV)")
127 # info(autosaveFields, "VAL")
129 alias(
"$(P)$(Q)SETVAL",
"$(P)$(Q)SETVAL:SP")
130 alias("$(P)$(Q)SETVAL", "$(P)$(Q)SETVAL:SP:RBV")
132 # we get any output sent by device, whether in response to a command or not
135 field(DESC,
"Unsollicited output from device")
136 field(DTYP,
"stream")
137 field(INP,
"@SDTEST-common.proto getAllOutputString $(PORT)")
138 # field(SCAN, "I/O Intr")
139 field(SIML,
"$(P)$(Q)SIM")
140 field(SIOL,
"$(P)$(Q)SIM:VAL")
141 field(SDIS,
"$(P)$(Q)DISABLE")
142 info(INTEREST,
"MEDIUM")
143 info(alarm,
"SDTEST/$(DEV)")
146 # we get any output sent by device, whether in response to a command or not
147 # waveform size need to be one more than max length defined in .proto file function used
148 record(waveform,
"$(P)$(Q)REPLYWF:ASYNC")
150 field(DESC,
"Unsollicited output from device")
151 field(DTYP,
"stream")
152 field(INP,
"@SDTEST-common.proto getAllOutputLongString $(PORT)")
155 # field(SCAN, "I/O Intr")
156 field(SIML,
"$(P)$(Q)SIM")
157 field(SIOL,
"$(P)$(Q)SIM:VAL")
158 field(SDIS,
"$(P)$(Q)DISABLE")
159 info(INTEREST,
"MEDIUM")
162 ## SIM and DISABLE records
165 field(DESC,
"Disable comms")
167 field(VAL,
"$(DISABLE)")
168 field(OMSL,
"supervisory")
169 field(ZNAM,
"Comms Enabled")
170 field(ONAM,
"Comms Disabled")
175 field(SCAN,
"Passive")
176 field(DTYP,
"Soft Channel")
record(stringin,"$(P)$(Q)NAME")
alias("$(P)$(Q)COMM","$(P)$(Q)COMM:SP")