summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaniel <danieruru@gmail.com>2013-01-18 03:51:04 +0900
committerdaniel <danieruru@gmail.com>2013-01-18 03:51:04 +0900
commit4e01ae716c25937daa7d1c82e6d0da8fdd0ad857 (patch)
tree4f4da26832f993ae5c1caa52b81d1357cea9c764
parent50a7131bba4d6cc161e0531fe194e75d07e05cec (diff)
Add prefix, fix read (probably leaks..).
-rw-r--r--libvxi11client/libvxi11client.c4
-rw-r--r--libvxi11client/perlbits/Client.xs39
-rw-r--r--libvxi11client/perlbits/VXI11-Client.t43
-rw-r--r--libvxi11client/perlbits/testscript.pl30
4 files changed, 76 insertions, 40 deletions
diff --git a/libvxi11client/libvxi11client.c b/libvxi11client/libvxi11client.c
index a6a5dd2..f2de6bb 100644
--- a/libvxi11client/libvxi11client.c
+++ b/libvxi11client/libvxi11client.c
@@ -213,6 +213,10 @@ int vxi11_read(VXI11Context* context, char* buffer, unsigned int bufferlen, bool
#endif
if (buffer != NULL)
strncpy(buffer, resp->data.data_val, (bufferlen < resp->data.data_len ? bufferlen : resp->data.data_len));
+#ifdef DEBUG
+ else
+ printf("Supplied buffer is null!\n");
+#endif
return resp->data.data_len;
}
else if (resp == NULL)
diff --git a/libvxi11client/perlbits/Client.xs b/libvxi11client/perlbits/Client.xs
index 65597b9..d8008dd 100644
--- a/libvxi11client/perlbits/Client.xs
+++ b/libvxi11client/perlbits/Client.xs
@@ -13,21 +13,21 @@ MODULE = VXI11::Client PACKAGE = VXI11::Client
PROTOTYPES: ENABLE
int
-startinterruptserver()
+vxi_startinterruptserver()
CODE:
RETVAL = glue_start_interrupt_server();
OUTPUT:
RETVAL
int
-stopinterruptserver()
+vxi_stopinterruptserver()
CODE:
RETVAL = glue_stop_interrupt_server();
OUTPUT:
RETVAL
int
-abort(context)
+vxi_abort(context)
VXI11::Client context
CODE:
RETVAL = vxi11_abort(context);
@@ -35,7 +35,7 @@ abort(context)
RETVAL
int
-clear(context,waitforlock)
+vxi_clear(context,waitforlock)
VXI11::Client context
bool waitforlock
CODE:
@@ -44,7 +44,7 @@ clear(context,waitforlock)
RETVAL
int
-close(context)
+vxi_close(context)
VXI11::Client context
CODE:
RETVAL = vxi11_close(context);
@@ -52,7 +52,7 @@ close(context)
RETVAL
int
-create_intr_chan(context)
+vxi_create_intr_chan(context)
VXI11::Client context
CODE:
RETVAL = vxi11_create_intr_chan(context);
@@ -60,7 +60,7 @@ create_intr_chan(context)
RETVAL
int
-destroy_intr_chan(context)
+vxi_destroy_intr_chan(context)
VXI11::Client context
CODE:
RETVAL = vxi11_destroy_intr_chan(context);
@@ -68,7 +68,7 @@ destroy_intr_chan(context)
RETVAL
int
-docmd(context, cmd, waitforlock)
+vxi_docmd(context, cmd, waitforlock)
VXI11::Client context
unsigned long cmd
bool waitforlock
@@ -78,7 +78,7 @@ docmd(context, cmd, waitforlock)
RETVAL
int
-enable_srq(context, enable, handle)
+vxi_enable_srq(context, enable, handle)
VXI11::Client context
bool enable
char* handle
@@ -88,7 +88,7 @@ enable_srq(context, enable, handle)
RETVAL
char*
-wait_for_interrupt()
+vxi_wait_for_interrupt()
CODE:
RETVAL = glue_wait_for_interrupt();
OUTPUT:
@@ -96,7 +96,7 @@ wait_for_interrupt()
int
-local(context, waitforlock)
+vxi_local(context, waitforlock)
VXI11::Client context
bool waitforlock
CODE:
@@ -105,7 +105,7 @@ local(context, waitforlock)
RETVAL
int
-lock(context, waitforlock)
+vxi_lock(context, waitforlock)
VXI11::Client context
bool waitforlock
CODE:
@@ -114,7 +114,7 @@ lock(context, waitforlock)
RETVAL
VXI11::Client
-open(address, device)
+vxi_open(address, device)
char * address
char * device
CODE:
@@ -123,7 +123,7 @@ open(address, device)
RETVAL
void
-read(context, OUTLIST bytesread, OUTLIST buffer, bufferlen, waitlock, termchrset, termchr)
+vxi_read(context, OUTLIST bytesread, OUTLIST buffer, bufferlen, waitlock, termchrset, termchr)
VXI11::Client context
char * buffer
int bytesread
@@ -132,10 +132,11 @@ read(context, OUTLIST bytesread, OUTLIST buffer, bufferlen, waitlock, termchrset
bool termchrset
char termchr
CODE:
+ buffer = malloc(bufferlen + 1);
bytesread = vxi11_read(context, buffer, bufferlen, waitlock, termchrset, termchr);
int
-readstatusbyte(context, waitforlock)
+vxi_readstatusbyte(context, waitforlock)
VXI11::Client context
bool waitforlock
CODE:
@@ -144,7 +145,7 @@ readstatusbyte(context, waitforlock)
RETVAL
int
-remote(context, waitforlock)
+vxi_remote(context, waitforlock)
VXI11::Client context
bool waitforlock
CODE:
@@ -153,7 +154,7 @@ remote(context, waitforlock)
RETVAL
int
-trigger(context, waitforlock)
+vxi_trigger(context, waitforlock)
VXI11::Client context
bool waitforlock
CODE:
@@ -162,7 +163,7 @@ trigger(context, waitforlock)
RETVAL
int
-unlock(context)
+vxi_unlock(context)
VXI11::Client context
CODE:
RETVAL = vxi11_unlock(context);
@@ -170,7 +171,7 @@ unlock(context)
RETVAL
int
-write(context,data, len, waitlock, end)
+vxi_write(context,data, len, waitlock, end)
VXI11::Client context
char * data
int len
diff --git a/libvxi11client/perlbits/VXI11-Client.t b/libvxi11client/perlbits/VXI11-Client.t
index 31f3b1b..8ca167b 100644
--- a/libvxi11client/perlbits/VXI11-Client.t
+++ b/libvxi11client/perlbits/VXI11-Client.t
@@ -16,29 +16,30 @@ BEGIN { use_ok('VXI11::Client') };
# Insert your test code below, the Test::More module is use()ed here so read
# its man page ( perldoc Test::More ) for help writing this test script.
-&VXI11::Client::startinterruptserver();
+&VXI11::Client::vxi_startinterruptserver();
-my $instr = &VXI11::Client::open("roi", 0);
+my $instr = &VXI11::Client::vxi_open("roi", 0);
-is($instr->lock(0), 1, "Lock");
-ok($instr->write("*IDN?", -1, 0, 0) > 0, "Write");
+is($instr->vxi_lock(0), 1, "Lock");
+ok($instr->vxi_write("*IDN?", -1, 0, 0) > 0, "Write");
-my ($bytes, $buff) = $instr->read(256, 0, 0, 0);
+my ($bytes, $buff) = $instr->vxi_read(256, 0, 0, 0);
+print "got " . $bytes . ";" . $buff . "\n";
ok($bytes > 0, "Read");
-ok($instr->readstatusbyte(0) >= 0 , "Read status byte");
-is($instr->create_intr_chan(), 1, "Create intr channel");
-is($instr->enable_srq(1, "myhandle"), 1, "Enable interrupts");
-is(&VXI11::Client::wait_for_interrupt, "myhandle", "Wait for interrupt");
-is($instr->enable_srq(0, ""), 1, "Disable interrupts");
-is($instr->destroy_intr_chan(), 1, "Destroy intr channel");
-is($instr->abort(), 1, "Abort");
-is($instr->clear(0), 1, "Clear");
-is($instr->trigger(0), 1, "Trigger");
-is($instr->local(0), 1, "Local");
-is($instr->remote(0), 1, "Remote");
-is($instr->unlock(), 1, "Unlock");
-
-is($instr->close(), 1, "Close");
-
-&VXI11::Client::stopinterruptserver();
+ok($instr->vxi_readstatusbyte(0) >= 0 , "Read status byte");
+is($instr->vxi_create_intr_chan(), 1, "Create intr channel");
+is($instr->vxi_enable_srq(1, "myhandle"), 1, "Enable interrupts");
+is(&VXI11::Client::vxi_wait_for_interrupt, "myhandle", "Wait for interrupt");
+is($instr->vxi_enable_srq(0, ""), 1, "Disable interrupts");
+is($instr->vxi_destroy_intr_chan(), 1, "Destroy intr channel");
+is($instr->vxi_abort(), 1, "Abort");
+is($instr->vxi_clear(0), 1, "Clear");
+is($instr->vxi_trigger(0), 1, "Trigger");
+is($instr->vxi_local(0), 1, "Local");
+is($instr->vxi_remote(0), 1, "Remote");
+is($instr->vxi_unlock(), 1, "Unlock");
+
+is($instr->vxi_close(), 1, "Close");
+
+&VXI11::Client::vxi_stopinterruptserver();
diff --git a/libvxi11client/perlbits/testscript.pl b/libvxi11client/perlbits/testscript.pl
new file mode 100644
index 0000000..b487ab4
--- /dev/null
+++ b/libvxi11client/perlbits/testscript.pl
@@ -0,0 +1,30 @@
+use strict;
+use warnings;
+
+use VXI11::Client;
+
+&VXI11::Client::vxi_startinterruptserver();
+
+my $instr = &VXI11::Client::vxi_open("roi", 0);
+
+$instr->vxi_lock(0);
+$instr->vxi_write("*IDN?", -1, 0, 0);
+my ($bytes, $buff) = $instr->vxi_read(256, 0, 0, 0);
+print "got " . $bytes . ";" . $buff . "\n";
+
+$instr->vxi_readstatusbyte(0);
+$instr->vxi_create_intr_chan();
+$instr->vxi_enable_srq(1, "myhandle");
+&VXI11::Client::vxi_wait_for_interrupt();
+$instr->vxi_enable_srq(0, "");
+$instr->vxi_destroy_intr_chan();
+$instr->vxi_abort();
+$instr->vxi_clear(0);
+$instr->vxi_trigger(0);
+$instr->vxi_local(0);
+$instr->vxi_remote(0);
+$instr->vxi_unlock();
+
+$instr->vxi_close();
+
+&VXI11::Client::vxi_stopinterruptserver();