From: Michael Wiebusch Date: Wed, 14 Aug 2013 16:18:57 +0000 (+0200) Subject: outsourced print_registers and print_fields to clean up X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=3fbf7f5f69d6f4e99a9dbcf0a575fd6149288b18;p=mvdsensorcontrol.git outsourced print_registers and print_fields to clean up --- diff --git a/tools/jtageditor.pl b/tools/jtageditor.pl index 22df3ec..5864729 100755 --- a/tools/jtageditor.pl +++ b/tools/jtageditor.pl @@ -57,6 +57,7 @@ use CGI::Carp qw(fatalsToBrowser); use HTML::Entities; require Common; require xmlOperations; +require xmlRendering; @@ -228,215 +229,7 @@ sub print_fileSelection { } -sub print_registers { - my $configFile = getConfigFile(); - my $specFile = getSpecFile(); - my $configFileName = getConfigFileName(); - my $specFileName = getSpecFileName(); - my $configTree = getConfigTree(); - my $specTree = getSpecTree(); - - my $xmlfile = $_[0]; - my $xmltree; - if ( $xmlfile eq $configFile ) { - $xmltree = $configTree; - } - elsif ( $xmlfile eq $specFile ) { - $xmltree = $specTree; - } - else { - die "xmlfile given to sub print_registers is unknown"; - } - my @registers = sort by_name $xmltree->findnodes("/MAPS/register"); - print ""; - for my $register (@registers) { - - my $registerName = $register->findvalue("./\@name"); - my $registerId = $register->findvalue("./\@id"); - my $registerSize = $register->findvalue("./\@size"); - my $registerDescr = prepare_text( - $specTree->findvalue( - "/MAPS/register[\@name='" . $registerName . "']/description" - ) - || "n/a" - ); - - my $flistid = $xmlfile . "//" . $registerName; - - print ""; - - print < +  -EOF - print ""; - - #print ""; - - if ( $xmlfile eq $configFile ) { # we are printing the Specifications Tree - print < X  -EOF - } - if ( $xmlfile eq $specFile ) { # we are printing the Settings Tree - - print < →  -EOF - } - - print ""; - - #print ""; - - print ''; - print ''; - print '"; - } - print "
$registerName$registerId
'; - print_fields( $xmlfile, $register ); - print ""; - print "
"; -} - -sub print_fields { - - my $configFile = getConfigFile(); - my $specFile = getSpecFile(); - my $configFileName = getConfigFileName(); - my $specFileName = getSpecFileName(); - my $configTree = getConfigTree(); - my $specTree = getSpecTree(); - - my $register = $_[1]; - my $xmlfile = $_[0]; - my $registerName = $register->findvalue("./\@name"); - my @fields = sort by_name $register->findnodes("./field"); - print ""; - for my $field (@fields) { - my $fieldName = $field->findvalue("./\@name"); - my $isHeritageFrom = $field->findvalue("./\@isHeritageFrom") || ""; - my $readOnlyFlag = 0; - my $fieldValue = $field->findvalue("./\@value"); - my $fieldSize = - $specTree->findvalue( "/MAPS/register[\@name='" - . $registerName - . "']/field[\@name='" - . $fieldName - . "']/\@size" ) - || "n/a"; - my $fieldDescr = prepare_text( - $specTree->findvalue( - "/MAPS/register[\@name='" - . $registerName - . "']/field[\@name='" - . $fieldName - . "']/description" - ) - || "n/a" - ); - - my $sizeInfo; - my $maxFieldVal = 2**32-1; - if ($fieldSize <=32){ # if Field size smaller than 32 you could be interested - # in a decimal value range info - - $maxFieldVal = 2**$fieldSize-1; - $sizeInfo = - sprintf( - "Field contains %d bits, possible values: 0-%d (0x0-0x%X)\n\n", - $fieldSize, $maxFieldVal, $maxFieldVal ); - } else { - - $sizeInfo = - sprintf( - "Field contains %d bits, hex representation would be %d digits long.\n\n", - $fieldSize, ceil($fieldSize/4)); - - } - - $fieldDescr = $sizeInfo . $fieldDescr; - - unless ( $isHeritageFrom eq "" ) { - $fieldDescr = - "Field was inherited from $isHeritageFrom\n\n" . $fieldDescr; - } - - my $fieldId = $xmlfile . "//" . $registerName . "/" . $fieldName; - if ( $fieldValue eq "" ) { - $fieldValue = $field->findvalue("./\@defaultValue"); - $readOnlyFlag = 1; - } - - print ""; - print ""; - print ""; - if ($readOnlyFlag) { - print <$fieldValue -EOF - } - else { - print < - - -EOF - - } - - print ''; - if ( $xmlfile eq $specFile ) { # we are printing the Specifications tree - print < →  -EOF - } - if ( $xmlfile eq $configFile ) { # we are printing the Settings Tree - - if ( $isHeritageFrom eq "" ) - { # these are actual settings, not inherited! - print < X  -EOF - } - else { - print ""; - } - } - print ""; - -##### check if range was exceeded ###### - if ($fieldSize <= 32) { # 32 bit is the region where we want to allow decimal input - - my $decFieldValue = any2dec($fieldValue); - - if ( ($decFieldValue < 0 ) or ( $decFieldValue > $maxFieldVal ) ) - { - print -"" - ; # just debug - } - - } else { # field size exceeds the region where we want to accept decimal input - - if ( numBase($fieldValue) eq "dec" ) { - unless( $fieldValue eq "0") { # a zero would be okay - print ""; - } - } - - } -### end of range check #### - } - - print "
$fieldName  =  X 
!!!Above value not in allowed range!!!
!!!please don't enter decimal numbers for fields longer than 32 bit!!!
"; - -} sub print_ancestorInfo { diff --git a/tools/xmlRendering.pm b/tools/xmlRendering.pm new file mode 100644 index 0000000..1319b76 --- /dev/null +++ b/tools/xmlRendering.pm @@ -0,0 +1,239 @@ +#!/usr/bin/perl -w + + +sub print_registers { + + my $configFile = getConfigFile(); + my $specFile = getSpecFile(); + my $configFileName = getConfigFileName(); + my $specFileName = getSpecFileName(); + my $configTree = getConfigTree(); + my $specTree = getSpecTree(); + + my $xmlfile = $_[0]; + my $xmltree; + if ( $xmlfile eq $configFile ) { + $xmltree = $configTree; + } + elsif ( $xmlfile eq $specFile ) { + $xmltree = $specTree; + } + else { + die "xmlfile given to sub print_registers is unknown"; + } + my @registers = sort by_name $xmltree->findnodes("/MAPS/register"); + print ""; + for my $register (@registers) { + + my $registerName = $register->findvalue("./\@name"); + my $registerId = $register->findvalue("./\@id"); + my $registerSize = $register->findvalue("./\@size"); + my $registerDescr = prepare_text( + $specTree->findvalue( + "/MAPS/register[\@name='" . $registerName . "']/description" + ) + || "n/a" + ); + + my $flistid = $xmlfile . "//" . $registerName; + + print ""; + + print < +  +EOF + print ""; + + #print ""; + + if ( $xmlfile eq $configFile ) { # we are printing the Specifications Tree + print < X  +EOF + } + if ( $xmlfile eq $specFile ) { # we are printing the Settings Tree + + print < →  +EOF + } + + print ""; + + #print ""; + + print ''; + print ''; + print '"; + } + print "
$registerName$registerId
'; + print_fields( $xmlfile, $register ); + print ""; + print "
"; +} + + + + + + + + + + + + + + + + + + + + + + +sub print_fields { + + my $configFile = getConfigFile(); + my $specFile = getSpecFile(); + my $configFileName = getConfigFileName(); + my $specFileName = getSpecFileName(); + my $configTree = getConfigTree(); + my $specTree = getSpecTree(); + + my $register = $_[1]; + my $xmlfile = $_[0]; + my $registerName = $register->findvalue("./\@name"); + my @fields = sort by_name $register->findnodes("./field"); + print ""; + for my $field (@fields) { + my $fieldName = $field->findvalue("./\@name"); + my $isHeritageFrom = $field->findvalue("./\@isHeritageFrom") || ""; + my $readOnlyFlag = 0; + my $fieldValue = $field->findvalue("./\@value"); + my $fieldSize = + $specTree->findvalue( "/MAPS/register[\@name='" + . $registerName + . "']/field[\@name='" + . $fieldName + . "']/\@size" ) + || "n/a"; + my $fieldDescr = prepare_text( + $specTree->findvalue( + "/MAPS/register[\@name='" + . $registerName + . "']/field[\@name='" + . $fieldName + . "']/description" + ) + || "n/a" + ); + + my $sizeInfo; + my $maxFieldVal = 2**32-1; + if ($fieldSize <=32){ # if Field size smaller than 32 you could be interested + # in a decimal value range info + + $maxFieldVal = 2**$fieldSize-1; + $sizeInfo = + sprintf( + "Field contains %d bits, possible values: 0-%d (0x0-0x%X)\n\n", + $fieldSize, $maxFieldVal, $maxFieldVal ); + } else { + + $sizeInfo = + sprintf( + "Field contains %d bits, hex representation would be %d digits long.\n\n", + $fieldSize, ceil($fieldSize/4)); + + } + + $fieldDescr = $sizeInfo . $fieldDescr; + + unless ( $isHeritageFrom eq "" ) { + $fieldDescr = + "Field was inherited from $isHeritageFrom\n\n" . $fieldDescr; + } + + my $fieldId = $xmlfile . "//" . $registerName . "/" . $fieldName; + if ( $fieldValue eq "" ) { + $fieldValue = $field->findvalue("./\@defaultValue"); + $readOnlyFlag = 1; + } + + print ""; + print ""; + print ""; + if ($readOnlyFlag) { + print <$fieldValue +EOF + } + else { + print < + + +EOF + + } + + print ''; + if ( $xmlfile eq $specFile ) { # we are printing the Specifications tree + print < →  +EOF + } + if ( $xmlfile eq $configFile ) { # we are printing the Settings Tree + + if ( $isHeritageFrom eq "" ) + { # these are actual settings, not inherited! + print < X  +EOF + } + else { + print ""; + } + } + print ""; + +##### check if range was exceeded ###### + if ($fieldSize <= 32) { # 32 bit is the region where we want to allow decimal input + + my $decFieldValue = any2dec($fieldValue); + + if ( ($decFieldValue < 0 ) or ( $decFieldValue > $maxFieldVal ) ) + { + print +"" + ; # just debug + } + + } else { # field size exceeds the region where we want to accept decimal input + + if ( numBase($fieldValue) eq "dec" ) { + unless( $fieldValue eq "0") { # a zero would be okay + print ""; + } + } + + } +### end of range check #### + } + + print "
$fieldName  =  X 
!!!Above value not in allowed range!!!
!!!please don't enter decimal numbers for fields longer than 32 bit!!!
"; + +} + + + +1; + +__END__