]> jspc29.x-matter.uni-frankfurt.de Git - mvdsensorcontrol.git/commitdiff
added a base conversion tool to the jtageditor, design not yet fully optimized ...
authorMichael Wiebusch <stratomaster@gmx.net>
Thu, 15 Aug 2013 16:19:00 +0000 (18:19 +0200)
committerMichael Wiebusch <stratomaster@gmx.net>
Thu, 15 Aug 2013 16:19:00 +0000 (18:19 +0200)
tools/Common.pm
tools/xmlOperation.pl
tools/xmlOperations.js
tools/xmlOperations.pm
tools/xmlRendering.pm

index ca5e37957a1432902fe03519ff6aa543a738b706..87ababc4734625567ce7a1087c510f4b495bd4e6 100644 (file)
@@ -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);
   }
index ce06289da1ba6a533e857e5a6756d128c9aad0aa..fcb069f3d9a679d7325ea814140406af8d6192fe 100755 (executable)
@@ -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;
   }
+  
 
 }
 
index f8ea36dbc526924c712d6175a28dc968950d8c65..35f1703f8a461f6ed56dd1f0785ac9106d7c88f9 100644 (file)
@@ -52,3 +52,12 @@ getdata("xmlOperation.pl?action=copyDefaultRegister&register="+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_+"&register="+register_+"&field="+field_+"&base="+base_,"debug",false);
+// reloadSetTree();
+}
\ No newline at end of file
index 2db824b9939212632fd98d86006520e5b58557d3..72363b66fed0729b2346209330140a8029224d2b 100644 (file)
@@ -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 . "']" )
index aebbb3c326a3e704480a9295840be4ed9da44ff0..9debfc7a7d69e20745131e77179a7e16d092ea09 100644 (file)
@@ -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 '</td>';
+    print qq%<td onclick='baseConversion("$configFileName","$registerName","$fieldName","hex");$editorRefreshCommand'>%;
+    print "H";
+    print "</td>";
+#     print "<td>";
+    print qq%<td onclick='baseConversion("$configFileName","$registerName","$fieldName","bin");$editorRefreshCommand'>%;
+    print "B";
+    print "</td>";
+#     print "<td>";
+    print qq%<td onclick='baseConversion("$configFileName","$registerName","$fieldName","dec");$editorRefreshCommand'>%;
+    print "D";
+    print "</td>";
     if ( $xmlfile eq $specFile ) { # we are printing the Specifications tree
       print <<EOF;
 <td class='button_move' onclick='saveSettings("$configFileName","$registerName","$fieldName","$fieldValue");$editorRefreshCommand'>&nbsp;&rarr;&nbsp;</td>