From 4e01ae716c25937daa7d1c82e6d0da8fdd0ad857 Mon Sep 17 00:00:00 2001 From: daniel Date: Fri, 18 Jan 2013 03:51:04 +0900 Subject: Add prefix, fix read (probably leaks..). --- libvxi11client/perlbits/Client.xs | 39 +++++++++++++++--------------- libvxi11client/perlbits/VXI11-Client.t | 43 +++++++++++++++++----------------- libvxi11client/perlbits/testscript.pl | 30 ++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 40 deletions(-) create mode 100644 libvxi11client/perlbits/testscript.pl (limited to 'libvxi11client/perlbits') 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(); -- cgit