From b08dcf97fd6a3191c7d06a2556f1b30b4ab52b0c Mon Sep 17 00:00:00 2001 From: Jan Michel Date: Thu, 7 Nov 2013 18:53:33 +0100 Subject: [PATCH] further ROC registers, corrected get.pl for repeated groups --- web/htdocs/mvd/roc.pl | 4 ++-- xml-db/database/Mvd.xml | 11 ++++++++++- xml-db/get.pl | 26 +++++++++++--------------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/web/htdocs/mvd/roc.pl b/web/htdocs/mvd/roc.pl index b290bf9..61b766c 100755 --- a/web/htdocs/mvd/roc.pl +++ b/web/htdocs/mvd/roc.pl @@ -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; diff --git a/xml-db/database/Mvd.xml b/xml-db/database/Mvd.xml index 2bf0254..59d8926 100644 --- a/xml-db/database/Mvd.xml +++ b/xml-db/database/Mvd.xml @@ -5,7 +5,7 @@ address="8000" > Registers for the MVD ROC - + @@ -386,6 +386,15 @@ Number of released frame triggers + + Number of frame triggers received + + + + Number of data words written to frame buffer + + + diff --git a/xml-db/get.pl b/xml-db/get.pl index c20b629..fe65ee1 100755 --- a/xml-db/get.pl +++ b/xml-db/get.pl @@ -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}}) { -- 2.43.0