]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
further ROC registers, corrected get.pl for repeated groups
authorJan Michel <j.michel@gsi.de>
Thu, 7 Nov 2013 17:53:33 +0000 (18:53 +0100)
committerJan Michel <j.michel@gsi.de>
Thu, 7 Nov 2013 17:53:33 +0000 (18:53 +0100)
web/htdocs/mvd/roc.pl
xml-db/database/Mvd.xml
xml-db/get.pl

index b290bf9bda4a6a88ea8b0adc4284e61bf15c681b..61b766c289398b71a6e6af205f276464c624871e 100755 (executable)
@@ -17,12 +17,12 @@ $page->{link}  = "../";
 
 my @setup;
 $setup[0]->{name}    = "RocStatus";
-$setup[0]->{cmd}     = "Mvd-0xfe4d-RocStatus";
+$setup[0]->{cmd}     = "Mvd-0xf30d-RocStatus";
 $setup[0]->{period}  = 5000;
 $setup[0]->{address} = 1;
 
 $setup[1]->{name}    = "RocStatistics";
-$setup[1]->{cmd}     = "Mvd-0xfe4d-RocStatistics";
+$setup[1]->{cmd}     = "Mvd-0xf30d-RocStatistics";
 $setup[1]->{period}  = 5000;
 $setup[1]->{address} = 1;
 
index 2bf02541ff0cef867be403460b4691b2a24e538d..59d8926c64bbab3a6e5b9ca75f90915df973e74c 100644 (file)
@@ -5,7 +5,7 @@
               address="8000"
               >
   <description>Registers for the MVD ROC</description>
-
+  <group name="ReadoutController" address="0000" size="1024" repeat="2">
   <group name="RocStatus"
          address="0000"  size="13"  purpose="status"  mode="r"  continuous="true">
 
       <description>Number of released frame triggers</description>
       <field name="TrgReleases" start="0" bits="24" format="unsigned" noflag="true" rate="true" />
     </register> 
+    <register name="TrgReceived" address="000a" >
+      <description>Number of frame triggers received</description>
+      <field name="TrgReceived" start="0" bits="24" format="unsigned" noflag="true" rate="true" />
+    </register> 
+    <register name="DataWords" address="000b" >
+      <description>Number of data words written to frame buffer</description>
+      <field name="DataWords" start="0" bits="24" format="unsigned" noflag="true" rate="true" />
+    </register> 
   </group>
   
+  </group>
 </TrbNetEntity>
index c20b629f4ef2f3115f45c36abcfb65b321d3e8e2..fe65ee16877694fcf697a4c458e3c1638852bd59 100755 (executable)
@@ -205,29 +205,25 @@ sub requestdata {
   my ($obj,$name,$slice) = @_;
   my $o;
   print DumpTree($obj) if $verbose;
-  if (defined  $obj->{repeat} && $slice >= $obj->{repeat}) {
+  if (defined $slice && defined  $obj->{repeat} && $slice >= $obj->{repeat}) {
     print "Slice number out of range.\n";
     return -1;
     }
   
   if($obj->{type} eq "group" && $obj->{mode} =~ /r/) {
     if(defined $obj->{continuous} && $obj->{continuous} eq "true") {
+      my $stepsize = $obj->{stepsize} || 1;
       my $size   = $obj->{size};
-      my $offset = 0;
-      
-      if (defined $slice) {
-        $offset = $size * $slice;
-        }
-      elsif (defined $obj->{repeat}) {
-        $size = $size * $obj->{repeat};
-        }
-      $o = trb_register_read_mem($netaddr,$obj->{address}+$offset,0,$size);
-      next unless defined $o;
-      foreach my $k (keys %$o) {
-        for(my $i = 0; $i < $size; $i++) {
-          $data->{$obj->{address}+$offset+$i}->{$k} = $o->{$k}->[$i];
+      $slice = $slice || 0;
+      do{
+        $o = trb_register_read_mem($netaddr,$obj->{address}+$slice*$stepsize,0,$size);
+        next unless defined $o;
+        foreach my $k (keys %$o) {
+          for(my $i = 0; $i < $size; $i++) {
+            $data->{$obj->{address}+$slice*$stepsize+$i}->{$k} = $o->{$k}->[$i];
+            }
           }
-        }
+        } while(!$once && defined $obj->{repeat} && ++$slice < $obj->{repeat});  
       }
     else {      
       foreach my $c (@{$obj->{children}}) {