From: Michael Wiebusch Date: Thu, 15 Aug 2013 16:19:00 +0000 (+0200) Subject: added a base conversion tool to the jtageditor, design not yet fully optimized ... X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=75ac0a0a6b5ff2c7c9c03221fdb1c7c7d2c5f275;p=mvdsensorcontrol.git added a base conversion tool to the jtageditor, design not yet fully optimized ... --- diff --git a/tools/Common.pm b/tools/Common.pm index ca5e379..87ababc 100644 --- a/tools/Common.pm +++ b/tools/Common.pm @@ -50,6 +50,33 @@ for my $line (@userinput){ return @userinput_ } + +sub any2bin { + + my $argument = $_[0]; + + # check if hex + if ($argument =~ m/^0[xX]([0-9a-fA-F]+)$/){ + return "0b".hexStr2binStr($1); + } + # check if binary + if ($argument =~ m/^0[bB]([01]+)$/){ + return "0b".stripLeadingZeros($1); + } + # check if decimal + if ($argument =~ m/^[0-9]+$/){ + if ($argument > 4294967295) { + die "Decimal value too big for 32 bit unsigned integer! Use hex instead."; + } + return "0b".hexStr2binStr(sprintf("%X",$argument)); + } + + # if nothing matches + die "argument is not a recognized numeric value!\n"; + + +} + sub any2hex { my $argument = $_[0]; @@ -65,7 +92,7 @@ sub any2hex { # check if decimal if ($argument =~ m/^[0-9]+$/){ if ($argument > 4294967295) { - die "Decimal value too big vor 32 bit unsigned integer! Use hex instead."; + die "Decimal value too big for 32 bit unsigned integer! Use hex instead."; } return sprintf("0x%X",$argument); } diff --git a/tools/xmlOperation.pl b/tools/xmlOperation.pl index ce06289..fcb069f 100755 --- a/tools/xmlOperation.pl +++ b/tools/xmlOperation.pl @@ -1,6 +1,8 @@ #!/usr/bin/perl -w #print "Content-type: text/html\n\n"; - +#TODO +# complete the documentation for the save command (base change and stuff) +# clean up the save procedure!!!!! my $me = "xmlOperation.pl"; @@ -58,7 +60,10 @@ if ( defined $q->param('action') ) { if ( $q->param('action') eq 'save' ) { parseConfigFile( $q->param('configFile') ); - save( $q->param('register'), $q->param('field'), $q->param('value') ); + + my $value = ""; + if (defined($q->param('value'))) {$value = $q->param('value')} + save( $q->param('register'), $q->param('field'), $value, $q->param('base')); writeConfigFile(); report_param(); exit; @@ -98,6 +103,7 @@ if ( defined $q->param('action') ) { report_param(); exit; } + } diff --git a/tools/xmlOperations.js b/tools/xmlOperations.js index f8ea36d..35f1703 100644 --- a/tools/xmlOperations.js +++ b/tools/xmlOperations.js @@ -52,3 +52,12 @@ getdata("xmlOperation.pl?action=copyDefaultRegister®ister="+register_+'&confi // reloadSetTree(); } +function baseConversion(configFile,register,field,base){ +var file_ = encodeURIComponent(configFile); +var register_ = encodeURIComponent(register); +var field_ = encodeURIComponent(field); +var base_ = encodeURIComponent(base); + +getdata("xmlOperation.pl?action=save&configFile="+file_+"®ister="+register_+"&field="+field_+"&base="+base_,"debug",false); +// reloadSetTree(); +} \ No newline at end of file diff --git a/tools/xmlOperations.pm b/tools/xmlOperations.pm index 2db824b..72363b6 100644 --- a/tools/xmlOperations.pm +++ b/tools/xmlOperations.pm @@ -344,14 +344,34 @@ sub del { # make change permanent by calling writeConfigFile() hereafter. + sub save { my $registerName = $_[0]; my $fieldName = $_[1]; my $xmlfile = $configFile; - my $newValue = $_[2]; - + my $newValue; + $newValue = $_[2]; + my $base = $_[3]; + my $xmltree = $configTree; + +# unless( defined($newValue) ) { + if($newValue eq ""){ + #no new number, use old number + $newValue=$xmltree->findvalue("/MAPS/register[\@name='" . $registerName . "']/field[\@name='".$fieldName."']/\@value"); + } + +# if (defined($base)) { + if ($base eq "hex"){ + $newValue = any2hex($newValue); + } elsif ($base eq "bin") { + $newValue = any2bin($newValue); + } elsif ($base eq "dec") { + $newValue = any2dec($newValue); + } +# } + my $maps = $xmltree->findnodes("/MAPS")->shift(); my $register = $xmltree->findnodes( "/MAPS/register[\@name='" . $registerName . "']" ) diff --git a/tools/xmlRendering.pm b/tools/xmlRendering.pm index aebbb3c..9debfc7 100644 --- a/tools/xmlRendering.pm +++ b/tools/xmlRendering.pm @@ -137,6 +137,14 @@ sub print_fields { my $register = $_[1]; my $xmlfile = $_[0]; my $registerName = $register->findvalue("./\@name"); + my $xmltree; + + if($xmlfile eq $specFile) { + $xmltree = $specTree; + } else { + $xmltree = $configTree; + } + # my @fields = sort by_name $register->findnodes("./field"); my @maskFields = sort by_name $register->findnodes("./field"); @@ -145,8 +153,7 @@ sub print_fields { for my $maskField (@maskFields) { my $fieldName = $maskField->findvalue("./\@name"); - - my $field = $configTree->findnodes("/MAPS/register[\@name='". + my $field = $xmltree->findnodes("/MAPS/register[\@name='". $registerName."']/field[\@name='".$fieldName."']")->shift(); unless(defined($field)){ @@ -236,8 +243,18 @@ EOF EOF } - print ''; + print qq%%; + print "H"; + print ""; +# print ""; + print qq%%; + print "B"; + print ""; +# print ""; + print qq%%; + print "D"; + print ""; if ( $xmlfile eq $specFile ) { # we are printing the Specifications tree print < →