summaryrefslogtreecommitdiff
path: root/libvxi11client/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'libvxi11client/client.c')
-rw-r--r--libvxi11client/client.c50
1 files changed, 28 insertions, 22 deletions
diff --git a/libvxi11client/client.c b/libvxi11client/client.c
index 7deff6e..3a79e52 100644
--- a/libvxi11client/client.c
+++ b/libvxi11client/client.c
@@ -28,7 +28,7 @@ static char* geterrorstring(int errorcode) {
}
}
-static void interruptcallback(void) {
+static void interruptcallback(char* handle) {
printf("Interrupt fired\n");
}
@@ -41,16 +41,20 @@ int main(int argc, char *argv[]) {
exit(1);
}
+ vxi11_start_interrupt_server(interruptcallback);
+
+ Context ctx;
+
int err = 0;
- if ((err = vxi11_open(argv[1], NULL)) > 0) {
+ if ((err = vxi11_open(&ctx, argv[1], NULL)) > 0) {
/**
* Basic tests
*/
// write some bytes
- int byteswritten = vxi11_write(IDENTIFY, sizeof(IDENTIFY), false, false);
+ int byteswritten = vxi11_write(&ctx, IDENTIFY, sizeof(IDENTIFY), false, false);
if (byteswritten >= 0)
printf("Wrote %d bytes\n", byteswritten);
else
@@ -58,44 +62,44 @@ int main(int argc, char *argv[]) {
// read some bytes
char buffer[1024];
- int bytesread = vxi11_read(buffer, sizeof(buffer), false, false, 0);
+ int bytesread = vxi11_read(&ctx, buffer, sizeof(buffer), false, false, 0);
if (bytesread >= 0)
printf("Read %d bytes, %s\n", bytesread, buffer);
else
printf("Error reading data\n");
// trigger
- if (vxi11_trigger(false) > 0)
+ if (vxi11_trigger(&ctx, false) > 0)
printf("triggered\n");
// clear
- if (vxi11_clear(false) > 0)
+ if (vxi11_clear(&ctx, false) > 0)
printf("cleared\n");
// abort
- if ((err = vxi11_abort()) > 0)
+ if ((err = vxi11_abort(&ctx)) > 0)
printf("aborted\n");
else
printf("abort failed; %s\n", geterrorstring(err));
// lock
- if ((err = vxi11_lock(false)) > 0)
+ if ((err = vxi11_lock(&ctx, false)) > 0)
printf("locked\n");
// unlock
- if ((err = vxi11_unlock()) > 0)
+ if ((err = vxi11_unlock(&ctx)) > 0)
printf("unlocked\n");
// remote
- if ((err = vxi11_remote(false)) > 0)
+ if ((err = vxi11_remote(&ctx, false)) > 0)
printf("remote'd\n");
// local
- if ((err = vxi11_local(false)) > 0)
+ if ((err = vxi11_local(&ctx, false)) > 0)
printf("local'd\n");
// read the status byte
- int statusbyte = vxi11_readstatusbyte(false);
+ int statusbyte = vxi11_readstatusbyte(&ctx, false);
if (statusbyte >= 0)
printf("Status byte is 0x%02x\n", statusbyte);
else
@@ -107,9 +111,9 @@ int main(int argc, char *argv[]) {
// try locking twice
printf("-- Locking twice --\n");
- if ((err = vxi11_lock(false)) > 0) {
+ if ((err = vxi11_lock(&ctx, false)) > 0) {
printf("locked\n");
- if ((err = vxi11_lock(false)) > 0) {
+ if ((err = vxi11_lock(&ctx, false)) > 0) {
printf("locked again!!\n");
exit(1);
}
@@ -117,7 +121,7 @@ int main(int argc, char *argv[]) {
printf("Second lock failed; %s\n", geterrorstring(err));
}
}
- if ((err = vxi11_unlock()) > 0)
+ if ((err = vxi11_unlock(&ctx)) > 0)
printf("unlocked\n");
else {
printf("error unlocking; %s\n", geterrorstring(err));
@@ -128,7 +132,7 @@ int main(int argc, char *argv[]) {
// try unlocking unlocked device
printf("-- Unlocking when unlocked --\n");
- if ((err = vxi11_unlock()) > 0) {
+ if ((err = vxi11_unlock(&ctx)) > 0) {
printf("Unlocked!!\n");
exit(1);
}
@@ -139,11 +143,11 @@ int main(int argc, char *argv[]) {
// Interrupt channel tests
printf("-- Testing interrupt channel --\n");
// create interrupt channel
- if ((err = vxi11_create_intr_chan()) > 0) {
+ if ((err = vxi11_create_intr_chan(&ctx)) > 0) {
printf("Created interrupt channel\n");
// enable interrupts
- if ((err = vxi11_enable_srq(true, "handle", interruptcallback)) > 0)
+ if ((err = vxi11_enable_srq(&ctx, true, "handle")) > 0)
printf("Enabled interrupts\n");
else
printf("Error enabling interrupts; %s\n", geterrorstring(err));
@@ -151,13 +155,13 @@ int main(int argc, char *argv[]) {
sleep(10);
// disable interrupts
- if ((err = vxi11_enable_srq(false, NULL, NULL)) > 0)
+ if ((err = vxi11_enable_srq(&ctx, false, NULL)) > 0)
printf("Disabled interrupts\n");
else
printf("Error disabling interrupts; %s\n", geterrorstring(err));
// destroy interrupt channel
- if ((err = vxi11_destroy_intr_chan()) > 0)
+ if ((err = vxi11_destroy_intr_chan(&ctx)) > 0)
printf("Destroyed interrupt channel\n");
else
printf("Error destroying interrupt channel; %s\n", geterrorstring(err));
@@ -167,14 +171,16 @@ int main(int argc, char *argv[]) {
printf("\n");
// docmd
- if ((err = vxi11_docmd(0x00, false)) > 0)
+ if ((err = vxi11_docmd(&ctx, 0x00, false)) > 0)
printf("did command, should fail!\n");
else
printf("Error calling docmd; %s\n", geterrorstring(err));
// close
- if ((err = vxi11_close() > 0))
+ if ((err = vxi11_close(&ctx) > 0))
printf("Closed\n");
+
+ vxi11_stop_interrupt_server();
}
else {
printf("Error opening device; %s\n", geterrorstring(err));