ISIS Logo
SDTEST
EPICS Serial Device Test IOC
SDTEST-IOC-01.db
Go to the documentation of this file.
1 # % macro, P, device prefix
2 # % macro, Q, device sub prefix
3 # % macro, NAME, device name
4 # % macro, DEV, device COM port
5 
6 record(stringin, "$(P)$(Q)NAME")
7 {
8  field(DESC, "Name of device")
9  field(VAL, "$(NAME) [$(DEV)]")
10 }
11 
12 record(stringin, "$(P)$(Q)DEVICE")
13 {
14  field(DESC, "Device COM port")
15  field(VAL, "$(DEV)")
16 }
17 
18 record(stringin, "$(P)$(Q)INIT:_OUT")
19 {
20  field(VAL, "$(INITOUT=)")
21 }
22 
23 record(longout, "$(P)$(Q)INIT")
24 {
25  field(DESC, "Init device")
26  field(DTYP, "stream")
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")
31  field(EGU, "")
32  field(PINI, "$(INITP)")
33  info(INTEREST, "MEDIUM")
34 }
35 
36 ## reload protocol file
37 record(sub, "$(P)$(Q)RELOAD_PROTOCOL")
38 {
39  field(SNAM, "streamReloadSub")
40 }
41 
42 ## send a string to a device, reply will get written back to this record but we pass it onto another for clarity
43 record(stringout, "$(P)$(Q)COMM")
44 {
45  field(DESC, "Send string to device")
46  field(DTYP, "stream")
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")
53  info(archive, "VAL")
54  info(INTEREST, "HIGH")
55  info(alarm, "SDTEST/$(DEV)")
56 }
57 alias("$(P)$(Q)COMM", "$(P)$(Q)COMM:SP")
58 alias("$(P)$(Q)COMM", "$(P)$(Q)COMM:SP:RBV")
59 
60 # string needs to be 'fff','ggg',CR etc
61 #record(stringout, "$(P)$(Q)COMM:Q")
62 #{
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")
73 #}
74 
75 ## we are triggered when command is processed and pick up reply
76 record(stringin, "$(P)$(Q)REPLY")
77 {
78  field(DESC, "Reply from device")
79  field(INP, "$(P)$(Q)COMM NPP")
80  info(archive, "VAL")
81  info(INTEREST, "HIGH")
82 }
83 
84 ## the command sent to the device to read a value
85 record(stringin, "$(P)$(Q)GETVAL:_OUT")
86 {
87  field(VAL, "$(GETOUT=)")
88 }
89 
90 # PV names are too long to put entirely into protocol arguments, so just pass prefix and put rest of name in protocol file
91 record(ai, "$(P)$(Q)GETVAL")
92 {
93  field(DESC, "Read value from device")
94  field(DTYP, "stream")
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")
100  field(EGU, "")
101  field(PREC, 3)
102  info(archive, "VAL")
103  info(INTEREST, "HIGH")
104  info(alarm, "SDTEST/$(DEV)")
105 }
106 
107 record(stringin, "$(P)$(Q)SETVAL:_OUT")
108 {
109  field(VAL, "$(SETOUTA=)")
110 }
111 
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
114 record(ao, "$(P)$(Q)SETVAL")
115 {
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")
122  field(EGU, "")
123  field(PREC, 3)
124  info(archive, "VAL")
125  info(INTEREST, "HIGH")
126  info(alarm, "SDTEST/$(DEV)")
127 # info(autosaveFields, "VAL")
128 }
129 alias("$(P)$(Q)SETVAL", "$(P)$(Q)SETVAL:SP")
130 alias("$(P)$(Q)SETVAL", "$(P)$(Q)SETVAL:SP:RBV")
131 
132 # we get any output sent by device, whether in response to a command or not
133 record(stringin, "$(P)$(Q)REPLY:ASYNC")
134 {
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)")
144 }
145 
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")
149 {
150  field(DESC, "Unsollicited output from device")
151  field(DTYP, "stream")
152  field(INP, "@SDTEST-common.proto getAllOutputLongString $(PORT)")
153  field(FTVL, "CHAR")
154  field(NELM, "1024")
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")
160 }
161 
162 ## SIM and DISABLE records
163 record( bo, "$(P)$(Q)DISABLE")
164 {
165  field(DESC, "Disable comms")
166  field(PINI, "YES")
167  field(VAL, "$(DISABLE)")
168  field(OMSL, "supervisory")
169  field(ZNAM, "Comms Enabled")
170  field(ONAM, "Comms Disabled")
171 }
172 
173 record(bo, "$(P)$(Q)SIM")
174 {
175  field(SCAN, "Passive")
176  field(DTYP, "Soft Channel")
177  field(ZNAM, "NO")
178  field(ONAM, "YES")
179  field(VAL, "$(SIM)")
180 }
181 
182 record(stringout, "$(P)$(Q)SIM:VAL")
183 {
184  field(VAL, "")
185 }
record(stringin,"$(P)$(Q)NAME")
Definition: SDTEST-IOC-01.db:6
alias("$(P)$(Q)COMM","$(P)$(Q)COMM:SP")
Copyright © 2013 Science and Technology Facilities Council | Generated by   doxygen 1.8.5