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;
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>
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}}) {