From bf121bb9dc03629979c7bd7ee9aecb3581cd82b2 Mon Sep 17 00:00:00 2001 From: hadaq Date: Sun, 26 Feb 2012 15:32:18 +0000 Subject: [PATCH] updates --- libtrbnet_perl/TrbNet.xs | 22 +++++++++++++++++++--- libtrbnet_perl/lib/HADES/TrbNet.pm | 17 +++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/libtrbnet_perl/TrbNet.xs b/libtrbnet_perl/TrbNet.xs index 2b1b08b..49f9775 100644 --- a/libtrbnet_perl/TrbNet.xs +++ b/libtrbnet_perl/TrbNet.xs @@ -57,7 +57,7 @@ trb_register_read_c(trb_address, reg_address) int i; PPCODE: - status = trb_register_read(trb_address, reg_address, buffer, BUFFER_SIZE); + status = trb_register_read(trb_address, reg_address, (uint32_t*)buffer, BUFFER_SIZE); if (status <= 0) { XSRETURN_UNDEF; } @@ -76,7 +76,7 @@ trb_register_read_mem_c(trb_address, reg_address, option, size) int i; PPCODE: - status = trb_register_read_mem(trb_address, reg_address, option, size, buffer, BUFFER_SIZE); + status = trb_register_read_mem(trb_address, reg_address, option, size, (uint32_t*)buffer, BUFFER_SIZE); if (status <= 0) { XSRETURN_UNDEF; } @@ -108,7 +108,23 @@ trb_read_uid_c(trb_address) PPCODE: i = 0; - status = trb_read_uid(trb_address, buffer, BUFFER_SIZE); + status = trb_read_uid(trb_address, (uint32_t*)buffer, BUFFER_SIZE); + if (status <= 0) { + XSRETURN_UNDEF; + } + for (i = 0 ; i < status; i++) { + XPUSHs(sv_2mortal(newSVuv(buffer[i]))); + } + +void +trb_nettrace_c(trb_address) + U16 trb_address; + INIT: + int status; + int i; + + PPCODE: + status = trb_nettrace(trb_address, (uint32_t*)buffer, BUFFER_SIZE); if (status <= 0) { XSRETURN_UNDEF; } diff --git a/libtrbnet_perl/lib/HADES/TrbNet.pm b/libtrbnet_perl/lib/HADES/TrbNet.pm index d402de2..2378107 100644 --- a/libtrbnet_perl/lib/HADES/TrbNet.pm +++ b/libtrbnet_perl/lib/HADES/TrbNet.pm @@ -28,6 +28,8 @@ our %EXPORT_TAGS = ( 'all' => [ qw( trb_register_write trb_read_uid trb_read_uid_c + trb_nettrace + trb_nettrace_c ) ] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); @@ -93,6 +95,21 @@ sub trb_read_uid { return \%hash; } +sub trb_nettrace { + my ($trb_address) = @_; + my @res = trb_nettrace_c($trb_address); + return if (! defined $res[0]); + + my @array; + my $c = 0; + for (my $i = 0; $i < scalar @res; $i += 2) { + $array[$c]->{'address'} = $res[$i]; + $array[$c]->{'port'} = $res[$i + 1]; + $c++; + } + return \@array; +} + 1; __END__ # Below is stub documentation for your module. You'd better edit it! -- 2.43.0