]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
added setbit and clearbit to libtrbnet_perl
authorhadaq <hadaq>
Wed, 25 Apr 2012 00:39:28 +0000 (00:39 +0000)
committerhadaq <hadaq>
Wed, 25 Apr 2012 00:39:28 +0000 (00:39 +0000)
libtrbnet_perl/TrbNet.xs
libtrbnet_perl/lib/HADES/TrbNet.pm

index d3eac6de57d90271a0e39424c3f81341c2a45ca2..53e8bb6e47f214513896b35d52f71ea8eef64232 100644 (file)
@@ -42,7 +42,7 @@ trb_init_ports()
        int status;
      PPCODE:
        status = init_ports();
-               if (status < 0) {
+        if (status < 0) {
                   XSRETURN_UNDEF;
                } else {
                   XPUSHs(sv_2mortal(newSVuv(1))); 
@@ -131,9 +131,10 @@ trb_register_write(trb_address, reg_address, value)
      PPCODE:
        status = trb_register_write(trb_address,reg_address, value);
        if (status < 0) {
-                 XSRETURN_UNDEF;
+          XSRETURN_UNDEF;
+       } else {
+          XPUSHs(sv_2mortal(newSVuv(1))); 
        }
-       XPUSHs(sv_2mortal(newSVuv(buffer[1])));
 
 void
 trb_read_uid_c(trb_address)
@@ -167,3 +168,21 @@ trb_nettrace_c(trb_address)
        for (i = 0 ; i < status; i++) {
           XPUSHs(sv_2mortal(newSVuv(buffer[i])));
        }
+
+void
+trb_register_modify(trb_address, reg_address, mode, bitMask, bitValue)
+     U16 trb_address
+     U16 reg_address
+     int mode
+     U32 bitMask
+     U32 bitValue
+   INIT:
+     int status;
+        
+   PPCODE:
+     status = trb_register_modify(trb_address, reg_address, mode, bitMask, bitValue);
+     if (status < 0) {
+       XSRETURN_UNDEF;
+     } else {
+       XPUSHs(sv_2mortal(newSVuv(1)));
+     }
\ No newline at end of file
index ae85ab7fd64023d2a65fd9b10abd9e6682bbc762..bffa53ee31effdb83c594c0e7c2b75e12fcd235c 100644 (file)
@@ -34,6 +34,8 @@ our %EXPORT_TAGS = ( 'all' => [ qw(
                                    trb_read_uid_c
                                    trb_nettrace
                                    trb_nettrace_c
+                                   trb_setbit
+                                   trb_clearbit
                                 ) ] );
 
 our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
@@ -156,6 +158,20 @@ sub trb_nettrace {
   return \@array;
 }
 
+sub trb_setbit {
+    my ($trb_address, $reg_address, $bitMask) = @_;
+    my $ret = trb_register_modify($trb_address, $reg_address,
+                                  1, $bitMask, 0);
+    return $ret;
+}
+
+sub trb_clearbit {
+    my ($trb_address, $reg_address, $bitMask) = @_;
+    my $ret = trb_register_modify($trb_address, $reg_address,
+                                  2, $bitMask, 0);
+    return $ret;
+}
+
 1;
 __END__
 # Below is stub documentation for your module. You'd better edit it!