use Time::HiRes qw(usleep gettimeofday tv_interval);
- use JSON::PP;
+ #use JSON::PP;
+ use JSON;
use FileHandle;
# commandList ($cts);
# returns a two-dimensional array compatible to the printTable-format
my $cts = shift;
-
- my @keys = sort keys $cts->getRegisters;
+
+ my @keys = sort keys %{$cts->getRegisters};
my $data = [
['Key', 'R/W', 'Module', 'Address', 'Slices'],
'-'
];
- my @mods = sort keys $cts->getModules;
+ my @mods = sort keys %{$cts->getModules};
my $index = 0;
$index++ until $mods[$index] eq 'Static';
unshift @mods, "Static"
}
-
foreach my $modType (@mods) {
my $mod = $cts->getModules->{$modType};
my $modName = "";
-
+
$modName = sprintf("0x%02x - ", $modType) if looks_like_number($modType);
$modName .= $mod->moduleName;
-
- foreach my $reg (sort keys $mod->getRegisters) {
+
+ foreach my $reg (sort keys %{$mod->getRegisters}) {
next if substr($reg, 0, 1) eq "_";
-
+
my $slices = join(", ", @{$cts->getRegisters->{$reg}->getSliceNames});
$slices = substr($slices, 0, 40) . "..." if length($slices) > 43;
-
- push $data, [
+
+ push @$data, [
$reg,
$cts->getRegisters->{$reg}->getAccessMode(),
$modName,
sprintf("0x%08x", $values->{'_raw'})
];
- foreach my $sliceKey (sort keys $values) {
+ foreach my $sliceKey (sort keys %$values) {
next if substr($sliceKey, 0, 1) eq "_";
- push $columns, $sliceKey;
- push $columns, $values->{$sliceKey};
- push $data, $columns;
+ push @$columns, $sliceKey;
+ push @$columns, $values->{$sliceKey};
+ push @$data, $columns;
$columns = ['', '', ''];
}
} else {
- push $data, [$key, 'Key not found'];
+ push @$data, [$key, 'Key not found'];
}
}
}
}
- foreach my $key (keys $values) {
+ foreach my $key (keys %$values) {
$cts->getRegisters->{$key}->write( $values->{$key} );
}
if ($reg->getOptions->{'monitorrate'}) {
$trb->addPrefetchRegister($reg);
- if ( scalar keys $reg->getDefinitions == 1 ) {
+ if ( scalar keys %{$reg->getDefinitions} == 1 ) {
push @rateRegs, $key;
push @slices, @{$reg->getSliceNames()}[0];
} else {
}
}
- push $tab, [$label, $regKey, sprintf("0x%04x", $reg->getAddress), shift @dispValues];
+ push @$tab, [$label, $regKey, sprintf("0x%04x", $reg->getAddress), shift @dispValues];
while (my $val = shift @dispValues) {
- push $tab, [' ', ' ', ' ', $val];
+ push @$tab, [' ', ' ', ' ', $val];
}
}
$rate = " " x (12 - length($rate)) . $rate;
my $value = " " x (12 - length($cur->{'value'}{$slice})) . $cur->{'value'}{$slice};
-
- push $tab, [$label, $regKey,
+
+ push @$tab, [$label, $regKey,
sprintf("0x%04x", $cts->getRegisters->{$regKey}->getAddress),
$rate , $value];
}
if ($filename) {
# store json
- my $json = JSON::PP->new->encode({
+ my $json = JSON::XS->new->encode({
'time' => $time,
'servertime' => time2str('%Y-%m-%d %H:%M', time),
'interval' => $interval,
'rates' => $rates,
'monitor' => $monData
});
-
+
open FH, ">$filename/dump.js";
print FH $json;
close FH;
-
+
# generate plot
- shift $plotData if $#{ $plotData } > 30;
- push $plotData, [
+ shift @$plotData if $#{ $plotData } > 30;
+ push @$plotData, [
$time,
$rates->{'cts_cnt_trg_asserted.value'}{'rate'},
$rates->{'cts_cnt_trg_edges.value'}{'rate'},
$rates->{'cts_cnt_trg_accepted.value'}{'rate'}
] if $rates->{'cts_cnt_trg_asserted.value'};
-
-
+
if ($#{ $plotData } > 4) {
open FH, ">$filename/plot.data";
foreach (@{$plotData}) {
my $trb;
eval {require "TrbNet.pm"};
$trb = TrbNet->new($endpoint);
-
+
return Cts->new($trb);
}
print "Command missing\n";
help();
-exit;
\ No newline at end of file
+exit;
use Data::Dumper;
+use TrbNet;
+
sub new {
# TrbRegister->new( $address, $trb, [$defs], [$accessmode] )
# Creates a new TrbRegister description. If $defs is not provided,
$options = $options ? { %{$def_options}, %{$options} } : $def_options;
# default values
- $defs = {'value' => {'lower' => 0, 'len' => 32}} unless keys $defs;
+ $defs = {'value' => {'lower' => 0, 'len' => 32}} unless keys %$defs;
my $self = {
'_trb' => $trb,
};
# check values passed
- foreach my $key (keys $defs) {
+ foreach my $key (keys %$defs) {
my $def = $defs->{$key};
# optional values
my $sliced_result = {'_raw' => $unsliced};
- foreach my $key (keys $self->{'_defs'}) {
+ foreach my $key (keys %{$self->{'_defs'}}) {
$sliced_result->{$key} = ($unsliced >> $self->{'_defs'}{$key}{'lower'}) # shift
& ((1 << $self->{'_defs'}{$key}{'len'}) - 1); # and mask
}
sub getAddress {return $_[0]->{'_address'}}
sub getAccessMode {return $_[0]->{'_accessmode'}}
-sub getSliceNames {return [sort keys $_[0]->{'_defs'}]}
+sub getSliceNames {return [sort keys %{$_[0]->{'_defs'}}]}
sub getDefinitions{return $_[0]->{'_defs'}}
sub getOptions {return $_[0]->{'_options'}}
sub TO_JSON {return {%{ $_[0] }};}
-1;
\ No newline at end of file
+1;