Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
146 | f9daq | 1 | /* This file, vxi11.x, is the amalgamation of vxi11core.rpcl and vxi11intr.rpcl |
2 | * which are part of the asynDriver (R4-5) EPICS module, which, at time of |
||
3 | * writing, is available from: |
||
4 | * http://www.aps.anl.gov/epics/modules/soft/asyn/index.html |
||
5 | * More general information about EPICS is available from: |
||
6 | * http://www.aps.anl.gov/epics/ |
||
7 | * This code is open source, and is covered under the copyright notice and |
||
8 | * software license agreement shown below, and also at: |
||
9 | * http://www.aps.anl.gov/epics/license/open.php |
||
10 | * |
||
11 | * In order to comply with section 4.3 of the software license agreement, here |
||
12 | * is a PROMINENT NOTICE OF CHNAGES TO THE SOFTWARE |
||
13 | * =========================================== |
||
14 | * (1) This file, vxi11.x, is the concatenation of the files vxi11core.rpcl and |
||
15 | * vxi11intr.rpcl |
||
16 | * (2) Tab spacing has been tidied up |
||
17 | * |
||
18 | * It is intended as a lightweight base for the vxi11 rpc protocol. If you |
||
19 | * run rpcgen on this file, it will generate C files and headers, from which |
||
20 | * it is relatively simple to write C programs to communicate with a range |
||
21 | * of ethernet-enabled instruments, such as oscilloscopes and function |
||
22 | * generated by manufacturers such as Agilent and Tektronix (amongst many |
||
23 | * others). |
||
24 | * |
||
25 | * For what it's worth, this concatenation was done by Steve Sharples at |
||
26 | * the University of Nottingham, UK, on 1 June 2006. |
||
27 | * |
||
28 | * Copyright notice and software license agreement follow, then the |
||
29 | * original comments from vxi11core.rpcl etc. |
||
30 | * |
||
31 | ****************************************************************************** |
||
32 | * Copyright © 2006 <University of Chicago and other copyright holders>. All |
||
33 | * rights reserved. |
||
34 | ****************************************************************************** |
||
35 | * |
||
36 | ****************************************************************************** |
||
37 | * vxi11.x is distributed subject to the following license conditions: |
||
38 | * SOFTWARE LICENSE AGREEMENT |
||
39 | * Software: vxi11.x |
||
40 | * |
||
41 | * 1. The "Software", below, refers to vxi11.x (in either source code, or |
||
42 | * binary form and accompanying documentation). Each licensee is addressed |
||
43 | * as "you" or "Licensee." |
||
44 | * |
||
45 | * 2. The copyright holders shown above and their third-party licensors hereby |
||
46 | * grant Licensee a royalty-free nonexclusive license, subject to the |
||
47 | * limitations stated herein and U.S. Government license rights. |
||
48 | * |
||
49 | * 3. You may modify and make a copy or copies of the Software for use within |
||
50 | * your organization, if you meet the following conditions: |
||
51 | * 1. Copies in source code must include the copyright notice and this |
||
52 | * Software License Agreement. |
||
53 | * 2. Copies in binary form must include the copyright notice and this |
||
54 | * Software License Agreement in the documentation and/or other |
||
55 | * materials provided with the copy. |
||
56 | * |
||
57 | * 4. You may modify a copy or copies of the Software or any portion of it, |
||
58 | * thus forming a work based on the Software, and distribute copies of such |
||
59 | * work outside your organization, if you meet all of the following |
||
60 | * conditions: |
||
61 | * 1. Copies in source code must include the copyright notice and this |
||
62 | * Software License Agreement; |
||
63 | * 2. Copies in binary form must include the copyright notice and this |
||
64 | * Software License Agreement in the documentation and/or other |
||
65 | * materials provided with the copy; |
||
66 | * 3. Modified copies and works based on the Software must carry |
||
67 | * prominent notices stating that you changed specified portions of |
||
68 | * the Software. |
||
69 | * |
||
70 | * 5. Portions of the Software resulted from work developed under a U.S. |
||
71 | * Government contract and are subject to the following license: the |
||
72 | * Government is granted for itself and others acting on its behalf a |
||
73 | * paid-up, nonexclusive, irrevocable worldwide license in this computer |
||
74 | * software to reproduce, prepare derivative works, and perform publicly |
||
75 | * and display publicly. |
||
76 | * |
||
77 | * 6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY OF |
||
78 | * ANY KIND. THE COPYRIGHT HOLDERS, THEIR THIRD PARTY LICENSORS, THE UNITED |
||
79 | * STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND THEIR EMPLOYEES: (1) |
||
80 | * DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO |
||
81 | * ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR |
||
82 | * PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY |
||
83 | * OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF THE |
||
84 | * SOFTWARE, (3) DO NOT REPRESENT THAT USE OF THE SOFTWARE WOULD NOT INFRINGE |
||
85 | * PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION |
||
86 | * UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL BE CORRECTED. |
||
87 | * |
||
88 | * 7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDERS, THEIR |
||
89 | * THIRD PARTY LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF |
||
90 | * ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, INCIDENTAL, |
||
91 | * CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ANY KIND OR NATURE, |
||
92 | * INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS OR LOSS OF DATA, FOR ANY |
||
93 | * REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED ON THE BASIS OF |
||
94 | * CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE, |
||
95 | * EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE POSSIBILITY OF SUCH |
||
96 | * LOSS OR DAMAGES. |
||
97 | ****************************************************************************** |
||
98 | */ |
||
99 | |||
100 | /****************************************************************************** |
||
101 | * |
||
102 | * vxi11core.rpcl |
||
103 | * |
||
104 | * This file is best viewed with a tabwidth of 4 |
||
105 | * |
||
106 | ****************************************************************************** |
||
107 | * |
||
108 | * TODO: |
||
109 | * |
||
110 | ****************************************************************************** |
||
111 | * |
||
112 | * Original Author: someone from VXIbus Consortium |
||
113 | * Current Author: Benjamin Franksen |
||
114 | * Date: 03-06-97 |
||
115 | * |
||
116 | * RPCL description of the core- and abort-channel of the TCP/IP Instrument |
||
117 | * Protocol Specification. |
||
118 | * |
||
119 | * |
||
120 | * Modification Log: |
||
121 | * ----------------- |
||
122 | * .00 03-06-97 bfr created this file |
||
123 | * |
||
124 | ****************************************************************************** |
||
125 | * |
||
126 | * Notes: |
||
127 | * |
||
128 | * This stuff is literally from |
||
129 | * |
||
130 | * VXI-11, Ref 1.0 : TCP/IP Instrument Protocol Specification |
||
131 | * |
||
132 | */ |
||
133 | |||
134 | typedef long Device_Link; |
||
135 | |||
136 | enum Device_AddrFamily |
||
137 | { |
||
138 | DEVICE_TCP, |
||
139 | DEVICE_UDP |
||
140 | }; |
||
141 | |||
142 | typedef long Device_Flags; |
||
143 | |||
144 | typedef long Device_ErrorCode; |
||
145 | |||
146 | struct Device_Error |
||
147 | { |
||
148 | Device_ErrorCode error; |
||
149 | }; |
||
150 | |||
151 | struct Create_LinkParms |
||
152 | { |
||
153 | long clientId; /* implementation specific value */ |
||
154 | bool lockDevice; /* attempt to lock the device */ |
||
155 | unsigned long lock_timeout; /* time to wait for lock */ |
||
156 | string device<>; /* name of device */ |
||
157 | }; |
||
158 | struct Create_LinkResp |
||
159 | { |
||
160 | Device_ErrorCode error; |
||
161 | Device_Link lid; |
||
162 | unsigned short abortPort; /* for the abort RPC */ |
||
163 | unsigned long maxRecvSize; /* max # of bytes accepted on write */ |
||
164 | }; |
||
165 | struct Device_WriteParms |
||
166 | { |
||
167 | Device_Link lid; /* link id from create_link */ |
||
168 | unsigned long io_timeout; /* time to wait for I/O */ |
||
169 | unsigned long lock_timeout; /* time to wait for lock */ |
||
170 | Device_Flags flags; /* flags with options */ |
||
171 | opaque data<>; /* the data length and the data itself */ |
||
172 | }; |
||
173 | struct Device_WriteResp |
||
174 | { |
||
175 | Device_ErrorCode error; |
||
176 | unsigned long size; /* # of bytes written */ |
||
177 | }; |
||
178 | struct Device_ReadParms |
||
179 | { |
||
180 | Device_Link lid; /* link id from create_link */ |
||
181 | unsigned long requestSize; /* # of bytes requested */ |
||
182 | unsigned long io_timeout; /* time to wait for I/O */ |
||
183 | unsigned long lock_timeout; /* time to wait for lock */ |
||
184 | Device_Flags flags; /* flags with options */ |
||
185 | char termChar; /* valid if flags & termchrset */ |
||
186 | }; |
||
187 | struct Device_ReadResp |
||
188 | { |
||
189 | Device_ErrorCode error; |
||
190 | long reason; /* why read completed */ |
||
191 | opaque data<>; /* the data length and the data itself */ |
||
192 | }; |
||
193 | struct Device_ReadStbResp |
||
194 | { |
||
195 | Device_ErrorCode error; |
||
196 | unsigned char stb; /* the returned status byte */ |
||
197 | }; |
||
198 | struct Device_GenericParms |
||
199 | { |
||
200 | Device_Link lid; /* link id from create_link */ |
||
201 | Device_Flags flags; /* flags with options */ |
||
202 | unsigned long lock_timeout; /* time to wait for lock */ |
||
203 | unsigned long io_timeout; /* time to wait for I/O */ |
||
204 | }; |
||
205 | struct Device_RemoteFunc |
||
206 | { |
||
207 | unsigned long hostAddr; /* host servicing interrupt */ |
||
208 | unsigned long hostPort; /* valid port # on client */ |
||
209 | unsigned long progNum; /* DEVICE_INTR */ |
||
210 | unsigned long progVers; /* DEVICE_INTR_VERSION */ |
||
211 | Device_AddrFamily progFamily; /* DEVICE_UDP | DEVICE_TCP */ |
||
212 | }; |
||
213 | struct Device_EnableSrqParms |
||
214 | { |
||
215 | Device_Link lid; /* link id from create_link */ |
||
216 | bool enable; /* enable or disable intr's */ |
||
217 | opaque handle<40>; /* host specific data */ |
||
218 | }; |
||
219 | struct Device_LockParms |
||
220 | { |
||
221 | Device_Link lid; /* link id from create_link */ |
||
222 | Device_Flags flags; /* contains the waitlock flag */ |
||
223 | unsigned long lock_timeout; /* time to wait for lock */ |
||
224 | }; |
||
225 | struct Device_DocmdParms |
||
226 | { |
||
227 | Device_Link lid; /* link id from create_link */ |
||
228 | Device_Flags flags; /* flags with options */ |
||
229 | unsigned long io_timeout; /* time to wait for I/O */ |
||
230 | unsigned long lock_timeout; /* time to wait for lock */ |
||
231 | long cmd; /* which command to execute */ |
||
232 | bool network_order; /* client's byte order */ |
||
233 | long datasize; /* size of individual data elements */ |
||
234 | opaque data_in<>; /* docmd data parameters */ |
||
235 | }; |
||
236 | struct Device_DocmdResp |
||
237 | { |
||
238 | Device_ErrorCode error; |
||
239 | opaque data_out<>; /* returned data parameters */ |
||
240 | }; |
||
241 | |||
242 | program DEVICE_ASYNC |
||
243 | { |
||
244 | version DEVICE_ASYNC_VERSION |
||
245 | { |
||
246 | Device_Error device_abort (Device_Link) = 1; |
||
247 | } = 1; |
||
248 | } = 0x0607B0; |
||
249 | |||
250 | program DEVICE_CORE |
||
251 | { |
||
252 | version DEVICE_CORE_VERSION |
||
253 | { |
||
254 | Create_LinkResp create_link (Create_LinkParms) = 10; |
||
255 | Device_WriteResp device_write (Device_WriteParms) = 11; |
||
256 | Device_ReadResp device_read (Device_ReadParms) = 12; |
||
257 | Device_ReadStbResp device_readstb (Device_GenericParms) = 13; |
||
258 | Device_Error device_trigger (Device_GenericParms) = 14; |
||
259 | Device_Error device_clear (Device_GenericParms) = 15; |
||
260 | Device_Error device_remote (Device_GenericParms) = 16; |
||
261 | Device_Error device_local (Device_GenericParms) = 17; |
||
262 | Device_Error device_lock (Device_LockParms) = 18; |
||
263 | Device_Error device_unlock (Device_Link) = 19; |
||
264 | Device_Error device_enable_srq (Device_EnableSrqParms) = 20; |
||
265 | Device_DocmdResp device_docmd (Device_DocmdParms) = 22; |
||
266 | Device_Error destroy_link (Device_Link) = 23; |
||
267 | Device_Error create_intr_chan (Device_RemoteFunc) = 25; |
||
268 | Device_Error destroy_intr_chan (void) = 26; |
||
269 | } = 1; |
||
270 | } = 0x0607AF; |
||
271 | |||
272 | /****************************************************************************** |
||
273 | * |
||
274 | * vxi11intr.rpcl |
||
275 | * |
||
276 | * This file is best viewed with a tabwidth of 4 |
||
277 | * |
||
278 | ****************************************************************************** |
||
279 | * |
||
280 | * TODO: |
||
281 | * |
||
282 | ****************************************************************************** |
||
283 | * |
||
284 | * Original Author: someone from VXIbus Consortium |
||
285 | * Current Author: Benjamin Franksen |
||
286 | * Date: 03-06-97 |
||
287 | * |
||
288 | * RPCL description of the intr-channel of the TCP/IP Instrument Protocol |
||
289 | * Specification. |
||
290 | * |
||
291 | * |
||
292 | * Modification Log: |
||
293 | * ----------------- |
||
294 | * .00 03-06-97 bfr created this file |
||
295 | * |
||
296 | ****************************************************************************** |
||
297 | * |
||
298 | * Notes: |
||
299 | * |
||
300 | * This stuff is literally from |
||
301 | * |
||
302 | * "VXI-11, Ref 1.0 : TCP/IP Instrument Protocol Specification" |
||
303 | * |
||
304 | */ |
||
305 | |||
306 | struct Device_SrqParms |
||
307 | { |
||
308 | opaque handle<>; |
||
309 | }; |
||
310 | |||
311 | program DEVICE_INTR |
||
312 | { |
||
313 | version DEVICE_INTR_VERSION |
||
314 | { |
||
315 | void device_intr_srq (Device_SrqParms) = 30; |
||
316 | } = 1; |
||
317 | } = 0x0607B1; |