1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
|
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#include "perlglue.h"
typedef VXI11Context* VXI11__Client;
MODULE = VXI11::Client PACKAGE = VXI11::Client
PROTOTYPES: DISABLE
int
vxi_startinterruptserver()
CODE:
RETVAL = glue_start_interrupt_server();
OUTPUT:
RETVAL
int
vxi_stopinterruptserver()
CODE:
RETVAL = glue_stop_interrupt_server();
OUTPUT:
RETVAL
int
vxi_abort(context)
VXI11::Client context
CODE:
RETVAL = vxi11_abort(context);
OUTPUT:
RETVAL
int
vxi_clear(context,waitforlock = 0)
VXI11::Client context
bool waitforlock
CODE:
RETVAL = vxi11_clear(context, waitforlock);
OUTPUT:
RETVAL
int
vxi_close(context)
VXI11::Client context
CODE:
RETVAL = vxi11_close(context);
OUTPUT:
RETVAL
int
vxi_create_intr_chan(context)
VXI11::Client context
CODE:
RETVAL = vxi11_create_intr_chan(context);
OUTPUT:
RETVAL
int
vxi_destroy_intr_chan(context)
VXI11::Client context
CODE:
RETVAL = vxi11_destroy_intr_chan(context);
OUTPUT:
RETVAL
int
vxi_docmd_long(context, datain, datainlen, OUTLIST dataout, outbufferlen, OUTLIST dataoutlen, cmd, waitforlock = 0)
VXI11::Client context
char* datain
int datainlen
char* dataout
int outbufferlen
int dataoutlen
unsigned long cmd
bool waitforlock
CODE:
RETVAL = vxi11_docmd(context, datain, datainlen, dataout, outbufferlen, &dataoutlen, cmd, waitforlock);
OUTPUT:
RETVAL
int
vxi_enable_srq_long(context, enable, handle)
VXI11::Client context
bool enable
char* handle
CODE:
RETVAL = vxi11_enable_srq(context,enable,handle);
OUTPUT:
RETVAL
char*
vxi_wait_for_interrupt()
CODE:
RETVAL = glue_wait_for_interrupt();
OUTPUT:
RETVAL
int
vxi_local(context, waitforlock = 0)
VXI11::Client context
bool waitforlock
CODE:
RETVAL = vxi11_local(context, waitforlock);
OUTPUT:
RETVAL
int
vxi_lock(context, waitforlock = 0)
VXI11::Client context
bool waitforlock
CODE:
RETVAL = vxi11_lock(context, waitforlock);
OUTPUT:
RETVAL
VXI11::Client
vxi_open(address, device)
char * address
char * device
CODE:
RETVAL = glue_open(address, device);
OUTPUT:
RETVAL
void
vxi_read_long(context, OUTLIST bytesread, OUTLIST buffer, bufferlen, waitlock, termchrset, termchr, OUTLIST reason)
VXI11::Client context
char * buffer
int bytesread
unsigned int bufferlen
bool waitlock
bool termchrset
char termchr
unsigned int reason
CODE:
buffer = calloc(bufferlen + 1, 1);
bytesread = vxi11_read(context, buffer, bufferlen, waitlock, termchrset, termchr, &reason);
void
vxi_readstatusbyte(context, OUTLIST error, OUTLIST statusbyte, waitforlock)
VXI11::Client context
int error
int statusbyte
bool waitforlock
CODE:
error = 0;
statusbyte = 0;
int ret = vxi11_readstatusbyte(context, waitforlock);
if(ret > 0)
statusbyte = ret & 0xff;
else
error = ret;
int
vxi_remote(context, waitforlock = 0)
VXI11::Client context
bool waitforlock
CODE:
RETVAL = vxi11_remote(context, waitforlock);
OUTPUT:
RETVAL
int
vxi_trigger(context, waitforlock = 0)
VXI11::Client context
bool waitforlock
CODE:
RETVAL = vxi11_trigger(context, waitforlock);
OUTPUT:
RETVAL
int
vxi_unlock(context)
VXI11::Client context
CODE:
RETVAL = vxi11_unlock(context);
OUTPUT:
RETVAL
int
vxi_write_long(context,data, len, waitlock, end)
VXI11::Client context
char * data
int len
bool waitlock
bool end
CODE:
RETVAL = vxi11_write(context, data, len, waitlock, end);
OUTPUT:
RETVAL
|