]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
added generic xml-webpage, option to change address
authorJan Michel <j.michel@gsi.de>
Mon, 21 Oct 2013 11:41:32 +0000 (13:41 +0200)
committerJan Michel <j.michel@gsi.de>
Mon, 21 Oct 2013 11:41:32 +0000 (13:41 +0200)
users/frankfurt_test/evtbuilder_start.sh
web/htdocs/commands/xmlpage.pm
web/htdocs/index.html
web/htdocs/jtag/index.pl
web/htdocs/network/generic.pl [new file with mode: 0755]
web/htdocs/network/trbnet.pl
web/htdocs/nxyter/index.pl
web/htdocs/scripts/scriptsnew.js
web/htdocs/scripts/xmlpage.js [new file with mode: 0644]

index 4272187b27cfa801b7f1c4abd2129b27840278ae..23cb3625c713b858d6a8fb0e02043af2f087140e 100755 (executable)
@@ -47,13 +47,13 @@ extraopts="--online"
 cd $tmpdir
 
 
-exec uxterm -bg khaki -geometry 120x20+0+45 -e "/home/hadaq/bin/daq_evtbuild -m 1 -o ${dest} -x ${pref} -I 1 --ebnum 1 -q 32 -S test -d file ${extraopts}; read; bash" &
+exec uxterm -bg khaki -geometry 120x20+0+45 -e "/d/jspc22/trb/git/daqdata/hadaq/daq_evtbuild -m 1 -o ${dest} -x ${pref} -I 1 --ebnum 1 -q 32 -S test -d file ${extraopts}; read; bash" &
 pid=$!
 echo $pid > $tmpdir/.daq_evtbuild.pid
 
 sleep 1
 
-exec uxterm -bg tan -geometry 120x20+0+345 -e "/home/hadaq/bin/daq_netmem -m 1 -i UDP:0.0.0.0:50000 -q 32 -d 1 -S test ;  " &
+exec uxterm -bg tan -geometry 120x20+0+345 -e "/d/jspc22/trb/git/daqdata/hadaq/daq_netmem -m 1 -i UDP:0.0.0.0:50000 -q 32 -d 1 -S test ;  " &
 pid=$!
 echo $pid > $tmpdir/.daq_netmem.pid
 
index 3421cbdccf95238047d56c1004253fb2cdaba5b6..f64b9dd5e2aec0756c2dc6a2cccffd2220f4d9a2 100644 (file)
@@ -20,6 +20,12 @@ sub initPage {
       }
     }
   
+  my $cmd    = $setup[$active]->{cmd};
+  my $period = $setup[$active]->{period};
+  my $name = $setup[$active]->{name};
+  my ($cmdMod,$cmdAddr,$cmdReg) = split('-',$setup[$active]->{cmd});
+
+  
   print <<EOF;
 <HTML>
 <HEAD>
@@ -36,22 +42,34 @@ EOF
 <div class="header">);
 
 for ( my $s = 0; $s < scalar @setup; $s++) {
-  print qq|<span class="|.(($active == $s)?"selected":"inactive").qq|"><a href="?|.$setup[$s]->{name}.qq|">|.$setup[$s]->{name}.qq|</a></span>|;
+  print qq|<span class="|.(($active == $s)?"selected":"inactive").qq|"><a href="?$setup[$s]->{name}">$setup[$s]->{name}</a></span>|;
   }
 print qq(</div>);
 
-if ($active!=-1) {
-
-  if($setup[$active]->{refresh}) {
-    print qq|<input type="button" class="stdbutton" onClick="refresh();" value="Refresh">|;
-    }
-  print qq|<div id="content"></div>|;
-  print qq|<script language="javascript">
-    setTimeout("refresh()",400);
-    document.getElementById("content").addEventListener("click",editsetting,0);
-  </script>|;
+print '<div class="head">';
+if($setup[$active]->{generic} == 1) {
+  print qq|
+  <input type="text" id="target" title="Enter any valid command in the form Module-Address-Name" 
+  value="$cmd" onChange="settarget()" onLoad="settarget()"
+  style="width:150px;text-align:left">
+  |;
   }
 
+if($setup[$active]->{address} == 1) {
+  print qq|
+  <input type="text" id="address" title="Enter any valid TrbNet address" 
+         value="$cmdAddr" onChange="setaddress()" onLoad="setaddress()"
+         style="text-align:left">
+  |;
+  }  
+  
+print qq|
+<input type="text" id="period" title="Refresh interval in ms. Set to -1 to disable automatic refresh" 
+       value="$period" onChange="setperiod()" onLoad="setperiod()">
+<input type="button" class="stdbutton" onClick="refresh(-1);" value="Refresh">
+</div>
+<div id="content"></div>|;
+
 print <<EOF ;
 
 </div>
@@ -74,24 +92,21 @@ sub printJavaScripts {
 
   print qq|
 <script language="javascript" src="../scripts/scriptsnew.js"></script>
-
+<script language="javascript" src="../scripts/xmlpage.js"></script>
 <script language="javascript">
-
+  var period = |.$setup[$n]->{period}.qq|;
+  var command="|.$setup[$n]->{cmd}.qq|";
+  var Timeoutvar;
   
-  function editsetting(e) {
-    if(e.target.getAttribute("class") && e.target.getAttribute("class").indexOf("editable")!=-1) {
-      var text = e.target.getAttribute("cstr");
-          text += "\\nCurrent Value: "+e.target.innerHTML+" ("+e.target.getAttribute("raw")+")\\n ";
-      var newval = prompt(text,e.target.getAttribute("raw"));
-      if (newval != null) {
-        getdataprint('../xml-db/put.pl?'+e.target.getAttribute("cstr")+'-'+newval,'returntext',false,0,refresh);
-        }
-      }
+  
+  if(period != -1) {
+    Timeoutvar = setTimeout("refresh(0)",400);
     }
-    
-  function refresh() {
-    getdataprint('../xml-db/get.pl?|.$setup[$n]->{cmd}.qq|','content',false,|.$setup[$n]->{period}.qq|);
+  else {
+    Timeoutvar = setTimeout("refresh(-1)",400);
     }
+  setTimeout('document.getElementById("content").addEventListener("click",editsetting,0)',400);
+  setTimeout('document.getElementById("period").value = period;',300);
   
 </script>
 |;
index 0d3ac52e69df6e641e55ddeee324c1e09ca24dd6..6f668d6f8c8e1048296da8967b1efa6cebbd8359 100755 (executable)
@@ -73,6 +73,7 @@ The main documentation of the network can be found in these two documents:
 <li><a href="tdc/tdcstatctrl.pl">TDC (xml-based)</a>
 <li><a href="nxyter/index.pl">Nxyter Read-out</a>
 <li><a href="jtag/index.pl">MVD Jtag Controller</a>
+<li><a href="network/generic.pl">Everything else</a>
 </ul>
 </div>
 </div>
index 599e7a385795b65c57cf47ecb258d30eab2f16d1..0b8477a262d945c2c1bf1ecf93a9453bf14a47fc 100755 (executable)
@@ -15,23 +15,18 @@ my $page;
 $page->{title} = "Jtag Controller Register";
 $page->{link}  = "../";
 
-#address should be 0xfe4d
-
 my @setup;
 $setup[0]->{name}    = "Status";
-$setup[0]->{cmd}     = "JtagController-0xf308-JtagStatus";
-$setup[0]->{refresh} = 1;
-$setup[0]->{period}  = 0;
+$setup[0]->{cmd}     = "JtagController-0xfe4d-JtagStatus";
+$setup[0]->{period}  = 5000;
 
 $setup[1]->{name}    = "CommonCtrl";
-$setup[1]->{cmd}     = "JtagController-0xf308-JtagCommonControl";
-$setup[1]->{refresh} = 1;
-$setup[1]->{period}  = 0;
+$setup[1]->{cmd}     = "JtagController-0xfe4d-JtagCommonControl";
+$setup[1]->{period}  = -1;
 
 $setup[2]->{name}    = "Control";
-$setup[2]->{cmd}     = "JtagController-0xf308-JtagControl";
-$setup[2]->{refresh} = 1;
-$setup[2]->{period}  = 0;
+$setup[2]->{cmd}     = "JtagController-0xfe4d-JtagControl";
+$setup[2]->{period}  = -1;
 
 xmlpage::initPage(\@setup,$page);
  
diff --git a/web/htdocs/network/generic.pl b/web/htdocs/network/generic.pl
new file mode 100755 (executable)
index 0000000..8bf0587
--- /dev/null
@@ -0,0 +1,33 @@
+&htsponse(200, "OK");
+print "Content-type: text/html\r\n\r\n";
+
+
+use CGI ':standard';
+use XML::LibXML;
+use POSIX;
+use CGI::Carp qw(fatalsToBrowser);
+
+use lib qw|../commands htdocs/commands|;
+use xmlpage;
+
+my $page;
+
+$page->{title} = "Generic Register Display";
+$page->{link}  = "../";
+
+
+my @setup;
+$setup[0]->{name}    = "AnyReg";
+$setup[0]->{cmd}     = "TrbNet-0xffff-CompileTime";
+$setup[0]->{period}  = -1;
+$setup[0]->{generic} = 1;
+
+
+xmlpage::initPage(\@setup,$page);
+
+
+1;
+
+
index 62754b109e7a0c87fcf637438e393a5f0298f12d..cc95c1b226b14cbeaf6eca062c624db46c20c040 100755 (executable)
@@ -18,13 +18,13 @@ $page->{link}  = "../";
 my @setup;
 $setup[0]->{name}    = "StatusRegisters";
 $setup[0]->{cmd}     = "TrbNet-0xffff-StatusRegisters";
-$setup[0]->{refresh} = 1;
-$setup[0]->{period}  = 10000;
+$setup[0]->{period}  = 2000;
+$setup[0]->{address} = 1;
 
 $setup[1]->{name}    = "BoardInfo";
 $setup[1]->{cmd}     = "TrbNet-0xffff-BoardInformation";
-$setup[1]->{refresh} = 1;
-$setup[1]->{period}  = 0;
+$setup[1]->{period}  = -1;
+$setup[1]->{address} = 1;
 
 
 xmlpage::initPage(\@setup,$page);
index dc3a41533dc1643851e6c1357d7da566e24201e6..2f16532cb277575810e3cd54e38fbbeca7920ef0 100755 (executable)
@@ -10,21 +10,27 @@ use CGI::Carp qw(fatalsToBrowser);
 use lib qw|../commands htdocs/commands|;
 use xmlpage;
 
-
 my $page;
+
 $page->{title} = "Nxyter Register";
 $page->{link}  = "../";
 
 my @setup;
 $setup[0]->{name}    = "DataValid";
 $setup[0]->{cmd}     = "Nxyter-0x3800-DataValidate";
-$setup[0]->{refresh} = 1;
-$setup[0]->{period}  = 0;
+$setup[0]->{period}  = -1;
+$setup[0]->{address} = 1;
+
 
 $setup[1]->{name}    = "TrigValid";
 $setup[1]->{cmd}     = "Nxyter-0x3800-TriggerValidate";
-$setup[1]->{refresh} = 1;
-$setup[1]->{period}  = 0;
+$setup[1]->{period}  = -1;
+$setup[1]->{address} = 1;
+
+$setup[2]->{name}    = "OtherStuff";
+$setup[2]->{cmd}     = "Nxyter-0x3800-TriggerValidate";
+$setup[2]->{period}  = -1;
+$setup[2]->{generic} = 1;
 
 xmlpage::initPage(\@setup,$page);
  
index ae2e084409c129dcccae4c7ae328dc72bdc83719..680fa4c9ce5f0caa54158c9c25eeea159707397f 100644 (file)
@@ -40,10 +40,7 @@ function getdataprint(command,dId,async,time,callback) {
         document.getElementById(destId).innerHTML  = xmlhttp.responseText;  
         }
       if(cb) {
-        cb();
-        }
-      if(time) {  
-        setTimeout("getdataprint('"+cmd+"','"+destId+"','"+asynci+"','"+timei+"')",timei);
+        cb(time);
         }
         //cb(xmlhttp.responseText);
   //document.getElementById(destId).innerHTML  = xmlhttp.responseText;  
diff --git a/web/htdocs/scripts/xmlpage.js b/web/htdocs/scripts/xmlpage.js
new file mode 100644 (file)
index 0000000..44075d9
--- /dev/null
@@ -0,0 +1,52 @@
+  function editsetting(e) {
+    if(e.target.getAttribute("class") && e.target.getAttribute("class").indexOf("editable")!=-1) {
+      var text = e.target.getAttribute("cstr");
+          text += "\\nCurrent Value: "+e.target.innerHTML+" ("+e.target.getAttribute("raw")+")\\n ";
+      var newval = prompt(text,e.target.getAttribute("raw"));
+      if (newval != null) {
+        getdataprint('../xml-db/put.pl?'+e.target.getAttribute("cstr")+'-'+newval,'returntext',false,-1,refresh);
+        }
+      }
+    }
+    
+  function refresh(time = 0) {
+    if(time == -1) {  //call immediately and only once
+      getdataprint('../xml-db/get.pl?'+command,'content',false,0);
+      }
+    else if (time > 0) { //call with timeout
+      clearTimeout(Timeoutvar);
+      Timeoutvar = setTimeout("getdataprint('../xml-db/get.pl?'+command,'content',false,"+period+",refresh)",period);
+      }
+    else {  //call immediately, then with timeout
+      clearTimeout(Timeoutvar);
+      getdataprint('../xml-db/get.pl?'+command,'content',false,period,refresh);
+      }
+    }
+  
+  function setperiod(e) {
+    period = document.getElementById("period").value;
+    if (period == -1) {
+      clearTimeout(Timeoutvar);
+      }
+    else if (period < 100) {
+      period = 1000;
+      document.getElementById("period").value = period;
+      refresh(period);
+      }
+    else {
+      refresh(period);
+      }
+    }
+    
+  
+  function settarget(e) {
+    command=document.getElementById("target").value;
+    refresh(period);
+    }
+    
+  function setaddress(e) {
+    address=document.getElementById("address").value;
+    var part = command.split('-');
+    command=part[0]+"-"+address+"-"+part[2];
+    refresh(period);
+    }
\ No newline at end of file