From 61b88ee87db93cfac628feab43c91b9365bfc128 Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Thu, 15 Aug 2013 16:12:15 +0200 Subject: [PATCH] cleaned up, finally the quick edit area in testgui.pl and the jtageditor.pl are generated by the SAME code, the way it should have been since ever ... --- tools/jtageditor.pl | 2 + tools/testgui.pl | 410 +++++++++++++++++++++--------------------- tools/xmlRendering.pm | 72 +++++++- 3 files changed, 265 insertions(+), 219 deletions(-) diff --git a/tools/jtageditor.pl b/tools/jtageditor.pl index 5864729..61aece8 100755 --- a/tools/jtageditor.pl +++ b/tools/jtageditor.pl @@ -78,6 +78,8 @@ if ( !keys %cgiHash ) our $confDir = '../config'; our $specDir = '../specs'; +# our $editorRefreshCommand="reloadSetTree()"; +setEditorRefreshCommand("reloadSetTree()"); # end of global variables diff --git a/tools/testgui.pl b/tools/testgui.pl index 651dc06..4af5f1a 100755 --- a/tools/testgui.pl +++ b/tools/testgui.pl @@ -13,13 +13,14 @@ use CGI::Carp qw(fatalsToBrowser); use HTML::Entities; require Common; require xmlOperations; +require xmlRendering; + use FindBin; use lib "$FindBin::Bin/.."; use Environment; - our $setupDir = SETUPDIR; our $confDir = CONFDIR; our $specDir = SPECDIR; @@ -29,8 +30,9 @@ my $setupFile = SETUPFILE; # the file that tells me what fields should be printed in the quick edit area # for each sensor + my $quickEditMaskFileName = "quickEditMask.xml"; -my $quickEditMaskFile = $confDir."/".$quickEditMaskFileName; +setQuickEditMaskFile($confDir."/".$quickEditMaskFileName); #### globals: @@ -106,13 +108,13 @@ sub parse_setupFile { } -sub parse_quickEditMaskFile { - my $parser = XML::LibXML->new(); - unless( -e $quickEditMaskFile) { - die "quickEditMaskFile $quickEditMaskFile does not exist!\n"; - } - $quickEditMaskTree = $parser->parse_file($quickEditMaskFile); -} +# sub parse_quickEditMaskFile { +# my $parser = XML::LibXML->new(); +# unless( -e $quickEditMaskFile) { +# die "quickEditMaskFile $quickEditMaskFile does not exist!\n"; +# } +# $quickEditMaskTree = $parser->parse_file($quickEditMaskFile); +# } @@ -283,9 +285,7 @@ sub print_quickEditArea { my $argumentConfigFile = $_[0]; - unless(defined($quickEditMaskTree)) { - parse_quickEditMaskFile(); - } + # print ""; # my @fields = $quickEditMaskTree->findnodes("/MAPS/register/field"); @@ -302,6 +302,7 @@ sub print_quickEditArea { integrateAncestry(); print "
quick editor
"; print "
".getConfigFileName()."
"; + setEditorRefreshCommand("reloadQuickEditArea(\"".getConfigFileName()."\",\"$quickEditAreaId\")"); print_registers(getConfigFile()); @@ -309,214 +310,203 @@ sub print_quickEditArea { - -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; +# +# 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 $quickEditMaskTree->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 = $configFile . "//" . $registerName; +# +# print ""; +# +# print < +  +# EOF +# print ""; +# +# #print ""; +# +# # if ( $xmlfile eq $configFile ) { # we are printing the Specifications Tree +# # print < X  +# # EOF +# # } +# +# +# print ""; +# +# #print ""; +# +# print ''; +# print ''; +# print '"; # } - my @registers = sort by_name $quickEditMaskTree->findnodes("/MAPS/register"); - print "
$registerName$registerId
'; +# print_fields( $configFile, $register ); +# print ""; +# print "
"; - for my $register (@registers) { - - my $registerName = $register->findvalue("./\@name"); - -# # if register not in the mask file, don't print! -# unless( $quickEditMaskTree->findnodes("/MAPS/register[\@name='". -# $registerName."']")) { -# next; +# 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 @maskFields = sort by_name $register->findnodes("./field"); +# print ""; +# for my $maskField (@maskFields) { +# +# my $fieldName = $maskField->findvalue("./\@name"); +# +# my $field = $configTree->findnodes("/MAPS/register[\@name='". +# $registerName."']/field[\@name='".$fieldName."']")->shift(); +# +# +# unless(defined($field)){ +# +# my $specField = $specTree->findnodes("/MAPS/register[\@name='". +# $registerName."']/field[\@name='".$fieldName."']")->shift(); +# $field=$register->addNewChild("","field"); +# $field->setAttribute("name",$fieldName); +# $field->setAttribute("value",$specField->findvalue("./\@defaultValue")); +# $field->setAttribute( "isHeritageFrom", $specFileName ); # } - - 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 = $configFile . "//" . $registerName; - - print ""; - - print < +  -EOF - print ""; - - #print ""; - -# if ( $xmlfile eq $configFile ) { # we are printing the Specifications Tree +# +# +# +# +# +# my $isHeritageFrom = $field->findvalue("./\@isHeritageFrom") || ""; +# # my $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 $maxFieldVal = 2**$fieldSize; +# my $sizeInfo = +# sprintf( +# "Field contains %d bits, possible values: 0-%d (0x0-0x%x)\n\n", +# $fieldSize, $maxFieldVal, $maxFieldVal ); +# +# $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 < X  +# # EOF # } - - - print ""; - - #print ""; - - print ''; - print ''; - print '"; - } - print "
$registerName$registerId
$fieldName  = $fieldValue
'; - print_fields( $configFile, $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 @maskFields = sort by_name $register->findnodes("./field"); - print ""; - for my $maskField (@maskFields) { - - my $fieldName = $maskField->findvalue("./\@name"); - - my $field = $configTree->findnodes("/MAPS/register[\@name='". - $registerName."']/field[\@name='".$fieldName."']")->shift(); - - - unless(defined($field)){ - - my $specField = $specTree->findnodes("/MAPS/register[\@name='". - $registerName."']/field[\@name='".$fieldName."']")->shift(); - $field=$register->addNewChild("","field"); - $field->setAttribute("name",$fieldName); - $field->setAttribute("value",$specField->findvalue("./\@defaultValue")); - $field->setAttribute( "isHeritageFrom", $specFileName ); - } - - - - -# # if field not in the mask file, don't print! -# unless( $quickEditMaskTree->findnodes("/MAPS/register[\@name='". -# $registerName."']/field[\@name='".$fieldName."']")) { -# next; -# } - - my $isHeritageFrom = $field->findvalue("./\@isHeritageFrom") || ""; -# my $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 $maxFieldVal = 2**$fieldSize; - my $sizeInfo = - sprintf( - "Field contains %d bits, possible values: 0-%d (0x0-0x%x)\n\n", - $fieldSize, $maxFieldVal, $maxFieldVal ); - - $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 +# else { # 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 ""; - if ( ( any2dec($fieldValue) < 0 ) - or ( any2dec($fieldValue) > $maxFieldVal ) ) - { - print -"" - ; # just debug - } - } - print "
$fieldName  =  +# +#  X 
!!!Above value not in allowed range!!!
"; - -} +# +# 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 " X "; +# } +# } +# print ""; +# if ( ( any2dec($fieldValue) < 0 ) +# or ( any2dec($fieldValue) > $maxFieldVal ) ) +# { +# print +# "!!!Above value not in allowed range!!!" +# ; # just debug +# } +# } +# print ""; +# +# } sub report_param { print br,br; diff --git a/tools/xmlRendering.pm b/tools/xmlRendering.pm index 1319b76..aebbb3c 100644 --- a/tools/xmlRendering.pm +++ b/tools/xmlRendering.pm @@ -1,6 +1,30 @@ #!/usr/bin/perl -w + + +my $quickEditMaskTree; +my $quickEditMaskFile; + +my $editorRefreshCommand; + +sub setEditorRefreshCommand { + $editorRefreshCommand=$_[0]; +} + +sub setQuickEditMaskFile { + $quickEditMaskFile=$_[0]; + parse_quickEditMaskFile(); +} + +sub parse_quickEditMaskFile { + my $parser = XML::LibXML->new(); + unless( -e $quickEditMaskFile) { + die "quickEditMaskFile $quickEditMaskFile does not exist!\n"; + } + $quickEditMaskTree = $parser->parse_file($quickEditMaskFile); +} + sub print_registers { my $configFile = getConfigFile(); @@ -13,7 +37,11 @@ sub print_registers { my $xmlfile = $_[0]; my $xmltree; if ( $xmlfile eq $configFile ) { - $xmltree = $configTree; + unless(defined($quickEditMaskTree)){ + $xmltree = $configTree; + } else { + $xmltree = $quickEditMaskTree; + } } elsif ( $xmlfile eq $specFile ) { $xmltree = $specTree; @@ -52,13 +80,13 @@ EOF if ( $xmlfile eq $configFile ) { # we are printing the Specifications Tree print < X  + X  EOF } if ( $xmlfile eq $specFile ) { # we are printing the Settings Tree print < →  + →  EOF } @@ -109,10 +137,35 @@ sub print_fields { my $register = $_[1]; my $xmlfile = $_[0]; my $registerName = $register->findvalue("./\@name"); - my @fields = sort by_name $register->findnodes("./field"); + +# my @fields = sort by_name $register->findnodes("./field"); + my @maskFields = sort by_name $register->findnodes("./field"); print ""; - for my $field (@fields) { - my $fieldName = $field->findvalue("./\@name"); +# for my $field (@fields) { + for my $maskField (@maskFields) { + + my $fieldName = $maskField->findvalue("./\@name"); + + my $field = $configTree->findnodes("/MAPS/register[\@name='". + $registerName."']/field[\@name='".$fieldName."']")->shift(); + + unless(defined($field)){ + # check if the mask field is defined in the config tree + # if not get the default value from the specification + # this feature should be only important for the testgui, + # not for the JTAG editor, because there + # the quickEditMaskTree == configTree + my $specField = $specTree->findnodes("/MAPS/register[\@name='". + $registerName."']/field[\@name='".$fieldName."']")->shift(); + $field=$register->addNewChild("","field"); + $field->setAttribute("name",$fieldName); + $field->setAttribute("value",$specField->findvalue("./\@defaultValue")); + $field->setAttribute( "isHeritageFrom", $specFileName ); + } + + + +# my $fieldName = $field->findvalue("./\@name"); my $isHeritageFrom = $field->findvalue("./\@isHeritageFrom") || ""; my $readOnlyFlag = 0; my $fieldValue = $field->findvalue("./\@value"); @@ -178,7 +231,7 @@ EOF else { print < - + EOF @@ -187,7 +240,7 @@ EOF print ''; if ( $xmlfile eq $specFile ) { # we are printing the Specifications tree print < →  + EOF } if ( $xmlfile eq $configFile ) { # we are printing the Settings Tree @@ -195,7 +248,7 @@ EOF if ( $isHeritageFrom eq "" ) { # these are actual settings, not inherited! print < X  + EOF } else { @@ -237,3 +290,4 @@ EOF 1; __END__ + -- 2.43.0
 →  X