]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
add simple register dump function
authorJan Michel <j.michel@gsi.de>
Fri, 26 Nov 2021 14:40:25 +0000 (15:40 +0100)
committerJan Michel <j.michel@gsi.de>
Fri, 26 Nov 2021 14:40:25 +0000 (15:40 +0100)
web/htdocs/commands/xmlpage.pm
web/htdocs/scripts/xmlpage.js
xml-db/get.pl

index 3837943db766479b023b91c3d70da9298ec3e5f6..561446a59213476636481fd79fb7b50ea68ba75b 100644 (file)
@@ -88,6 +88,7 @@ print qq|
     <label for="inline">Columns</label></div>
 <div class="checkbox"><input type="button" class="stdbutton" onClick="refresh(-1);" value="Refresh"></div>
 <div class="checkbox" style="margin:auto;"><a id="permalink" target="_blank" href="">Permalink</a></div>
+<div class="checkbox" style="margin:auto;"><a id="dump" target="_blank" href="" download>Dump</a></div>
 </div>
 <div id="content"></div>|;
 
index 9045a3b2a931ee79454243eded0e63369f139c4b..e944082cde966a0effdce6abf3ddd399f7fb65b9 100644 (file)
       setCookie("address"+currentpage,document.getElementById("address").value);
       }
     document.getElementById("permalink").href=permaLink();  
+    document.getElementById("dump").href= GETCOMMAND+'?'+command.substring(0, command.length - 1) + "dump";
     }
  
   function eatCookies() {
@@ -168,7 +169,26 @@ function permaLink() {
   link += "&inline="+document.getElementById("inline").checked;
   return link;
   }
-    
+
+
+function dumpLink() {
+  var link = location.origin + location.pathname + location.search + "#";
+  
+  if(document.getElementById("address")) {
+    link += "&address="+document.getElementById("address").value;
+    }
+  if(document.getElementById("period")) {
+    link += "&period="+document.getElementById("period").value;
+    }
+  if(document.getElementById("target")) {
+    link += "&target="+document.getElementById("target").value;
+    }
+  link += "&cache="+document.getElementById("cache").checked;
+  link += "&rate="+document.getElementById("rate").checked;
+  link += "&inline="+document.getElementById("inline").checked;
+  return link;
+  }  
+  
 /*From w3schools.com*/ 
   function getCookie(cname,pagename) {
 //URI    
index 13122cada8f019aa6cd766a893cce4ec84eba8ea..06bf5c07ae974a1d95b1beed262dd9dd17f770b9 100755 (executable)
@@ -19,8 +19,11 @@ my ($db,$data,$once,$slice);
 my $help = 0;
 my $verbose = 0;
 my $isbrowser = 0;
+my $StyleDump = 0;
 my $server = $ENV{'SERVER_SOFTWARE'} || "";
 my @request;
+my @RegisterDump;   
+
 my ($file,$entity,$netaddr,@spi_chains,$name, $style, $storefile, $rates, $cache, $isInline, $olddata);
 my $lastboards;
 
@@ -87,6 +90,9 @@ foreach my $req (@request) {
   $verbose  = ($style =~ /verbose/i) ||$verbose;
   $rates    = $style =~ /rate/i;
   $cache    = $style =~ /cache/i;
+  $StyleDump =$style =~ /dump/i;
+  
+  
 
   ###############################
   #### Check arguments for validity
@@ -211,7 +217,7 @@ sub FormatPretty {
   }
 
   $cstr  = "" unless $cstr;
-  my $ret, my $cl;
+  my $ret, my $cl = '';
   if (defined $cont) {
     my $isflag = 1;
     $isflag = 0 if $obj->{noflag};
@@ -458,6 +464,7 @@ sub makeTitleVertical {
 sub generateoutput {
   my ($obj,$name,$slice,$once) = @_;
   my $t = "";
+  @RegisterDump = ();
   $slice = 0 unless defined $slice;
 
   if ($obj->{type} eq "group") {
@@ -465,7 +472,7 @@ sub generateoutput {
       generateoutput($db->{$c},$c,$slice,$once);
     }
   } elsif (($obj->{type} eq "register" || $obj->{type} eq "registerfield" || $obj->{type} eq "field")) {
-
+    #for every register
     my $stepsize = $obj->{stepsize} || 1;
     my $addr = $obj->{address};
     
@@ -474,19 +481,29 @@ sub generateoutput {
     my $tarrhead;
     my $tarrcont;
     my $line = 0;
-    do {
+    do {  #for every repeat
       my $addr = $obj->{address}+$slice*$stepsize;
       #### Prepare table header line
       if ($obj->{mode} =~ /r/) {
         $lastboards = $data->{$addr}; #Store list of responding boards as guess for write-only registers.
       }
-      foreach my $b (sort keys %{$lastboards}) {
+      foreach my $b (sort keys %{$lastboards}) { #for every board
         my $ttmp = "";  #"Line Header" part
         my $ttmp2 = ""; #"Line Content" part
-        my $sl;
+        my $sl = "";
         my $slicename = "";
         $slicename = " - ".$obj->{sliceName}->{$slice} if (exists $obj->{sliceName}->{$slice});
         next unless defined $data->{$addr}->{$b} || !($obj->{mode} =~ /r/);
+        if ($StyleDump) {
+          my $iswriteable = $obj->{mode} =~ /w/;
+          foreach my $c (@{$obj->{children}}) {
+            $iswriteable = $iswriteable || ($db->{$c}->{mode} =~ /w/);
+            }
+          if($iswriteable) {
+            my $s = sprintf("w 0x%s 0x%04x 0x%08x \t#%s %i%s",$b,$addr,$data->{$addr}->{$b},$name,$slice,$slicename);
+            push(@RegisterDump,$s);
+            }
+          }
         $sl = sprintf("<td class=\"slice\"><div>%i%s<span class=\"tooltip\"><b>$name.$slice</b> (0x%04x)</span></div>",$slice,$slicename,$addr) if ($once != 1 && defined $obj->{repeat});
 
         my $endslice = '';
@@ -539,7 +556,14 @@ sub generateoutput {
       }
     $t .= "</table>";
   }
-  print $t;
+  
+  if($StyleDump) {
+    print join("\n",@RegisterDump);
+    print("\n");
+    }
+  else {  
+    print $t;
+    }
 }
 
 sub makerate {