]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
*** empty log message ***
authorhadeshyp <hadeshyp>
Fri, 31 Aug 2012 10:10:13 +0000 (10:10 +0000)
committerhadeshyp <hadeshyp>
Fri, 31 Aug 2012 10:10:13 +0000 (10:10 +0000)
cts/htdocs/cts.pl [new file with mode: 0755]
cts/htdocs/index.html [new file with mode: 0644]

diff --git a/cts/htdocs/cts.pl b/cts/htdocs/cts.pl
new file mode 100755 (executable)
index 0000000..8badb5c
--- /dev/null
@@ -0,0 +1,73 @@
+use strict;
+use warnings;
+
+use lib "./include/";
+
+use Cts;
+use JSON::PP;
+
+sub connectToCTS {
+   my $mode = shift;
+   my $endpoint = shift;
+   
+   my $trb;
+   if ($mode eq 'sim') {
+      eval {require "TrbSim.pm"};
+      $trb = TrbSim->new($endpoint);
+      my $fp;
+      open $fp, "<memory.dump";
+      $trb->loadDump($fp);
+      close $fp;
+
+   } else{
+      eval {require "TrbNet.pm"};
+      $trb = TrbNet->new($endpoint);
+   }
+      
+   return Cts->new($trb);
+}
+my $cts = connectToCTS 'trb', 0xf3c0;
+
+my $query = $ENV{'QUERY_STRING'};
+
+if ($query eq "init") {
+   print JSON::PP->new->allow_blessed->convert_blessed->encode({
+      'registers' => $cts->getRegisters,
+      'properties' => $cts->getProperties
+   });
+} elsif ($query =~ /^(format|read),([\w\d_,]+)$/) {
+   my $op = $1;
+   my @keys = split /,/, $2;
+   my %result = ();
+   
+   foreach my $key (@keys) {
+      my $reg = $cts->getRegisters->{$key};
+      next unless defined $reg;
+      
+      $result{$key} = $op eq "read" ? $reg->read() : $reg->format();
+   }
+   
+   print JSON::PP->new->allow_blessed->convert_blessed->encode(\%result);
+} elsif ($query =~ /^write,([\w\d_,\.]+)$/) {
+   my @values = split /,/, $1;
+   my $regs = {};
+   
+   while (my $key = shift @values) {
+      if ($key =~ /^(.*)\.(.*)$/) {
+         $regs->{$1} = {} unless ref $regs->{$1};
+         $regs->{$1}{$2} = shift @values;
+      } else {
+         $regs->{$key} = shift @values;
+      }
+   }
+   
+   foreach my $key (keys $regs) {
+      my $reg = $cts->getRegisters->{$key};
+      next unless defined $reg;
+      $reg->write($regs->{$key});
+   }
+   
+   print "1";
+}
+   
+1;
diff --git a/cts/htdocs/index.html b/cts/htdocs/index.html
new file mode 100644 (file)
index 0000000..7809436
--- /dev/null
@@ -0,0 +1,235 @@
+<!DOCTYPE html>
+<html>
+   <head>
+      <title>Central Trigger System</title>
+      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+      <link href="layout/base.css" rel="Stylesheet" type="text/css" />
+      <script src="scripts/mootools-core-1.4.5.js" type="text/javascript"></script>
+      <script src="scripts/base.js" type="text/javascript"></script>
+   </head>
+
+   <body lang="en">
+      <div id="header">
+         <div class="content">
+            <div id="data-update">Update</div>
+            <h1>Central Trigger System</h1>
+         </div>
+      </div>
+
+      <div id="content-area">
+         <div class="expandable expanded" id="itc-overview">
+            <div class="header"><span class="indicator"></span> Status overview</div>
+            
+            <div class="content">
+               <img src="monitor.png" id="rate-plot" />
+               <table id="overview-tab">
+                  <tr>
+                     <th class="label">Counter</th>
+                     <th class="value">Counts</th>
+                     <th class="rate">Rate</th>
+                  </tr>
+               
+                  <tr>
+                     <td class="label">Trigger asserted</td>
+                     <td class="value autorate autoratevalue" slice="cts_cnt_trg_asserted.value" suffix=" clks.">n/a</td>
+                     <td class="rate  autorate"               slice="cts_cnt_trg_asserted.value" suffix=" s<sup>-1</sup>">n/a</td>
+                  <tr>
+
+                  <tr>
+                     <td class="label">Trigger rising edges</td>
+                     <td class="value autorate autoratevalue" slice="cts_cnt_trg_edges.value" suffix=" edges">n/a</td>
+                     <td class="rate  autorate"               slice="cts_cnt_trg_edges.value" suffix=" Hz">n/a</td>
+                  <tr>
+                  
+                  <tr>
+                     <td class="label">Trigger accepted</td>
+                     <td class="value autorate autoratevalue" slice="cts_cnt_trg_accepted.value" suffix=" events">n/a</td>
+                     <td class="rate  autorate"               slice="cts_cnt_trg_accepted.value" suffix=" Hz">n/a</td>
+                  <tr>
+                  
+                  <tr>
+                     <td colspan="3">&nbsp;</td>
+                  </tr>
+                  
+                  <tr>
+                     <td class="label">Last Idle Time</td>
+                     <td class="value autoupdate" slice="cts_cnt_idle_time.value" format="countToTime" suffix=" ns">n/a</td>
+                     <td class="rate "></td>
+                  <tr>
+
+                  <tr>
+                     <td class="label">Last Dead Time</td>
+                     <td class="value autoupdate" slice="cts_cnt_dead_time.value" format="countToTime" suffix=" ns">n/a</td>
+                     <td class="rate  autoupdate" slice="cts_cnt_dead_time.value" format="countToFreq">n/a</td>
+                  <tr>
+               </table>
+            </div>
+         </div>
+         
+         <div class="expandable expanded" id="itc-expander">
+            <div class="header"><span class="indicator"></span> Trigger Channels</div>
+            
+            <div class="content">
+               <table id="itc-tab0" class="itc">
+                  <tr>
+                     <th class="channel">#</th>
+                     <th class="enable">Ena</th>
+                     <th class="assign">Assignment</th>
+                     <th class="type">Trigger Type</th>
+                     <th class="rate">Current Rate</th>
+                  </tr>
+              </table>
+            
+               <table id="itc-tab1" class="itc">
+                  <tr>
+                     <th class="channel">#</th>
+                     <th class="enable">Ena</th>
+                     <th class="assign">Assignment</th>
+                     <th class="type">Trigger Type</th>
+                     <th class="rate">Current Rate</th>
+                  </tr>
+               </table>
+            </div>
+         </div>
+
+         <div class="expandable expanded" id="inputs-expander">
+            <div class="header"><span class="indicator"></span> Trigger Input Configuration</div>
+            
+            <div class="content">
+               <table id="inputs-tab">
+                  <tr>
+                     <th class="num">#</th>
+                     <th class="invert">Invert</th>
+                     <th class="delay">Delay</th>
+                     <th class="spike">Spike Rejection</th>
+                     <th class="override">Override</th>
+                     <th class="rate">Current Rate</th>
+                  </tr>
+               </table>
+            </div>
+         </div>
+
+         <div class="expandable expanded" id="coin-expander">
+            <div class="header"><span class="indicator"></span> Coincidence Detectors and Regular Pulsers</div>
+            
+            <div class="content">
+               <div class="left">
+                  <h3>Coincidence Detectors</h3>
+                  <table id="coin-tab">
+                     <tr>
+                        <th class="num">#</th>
+                        <th class="window">Window</th>
+                        <th class="coin">Coin Mask</th>
+                        <th class="inhibit">Inhibit Mask</th>
+                     </tr>
+                  </table>
+               </div>
+               
+               <div class="right">
+                  <h3>Periodical Pulser</h3>
+                  <table id="pulser-tab">
+                     <tr>
+                        <th class="num">#</th>
+                        <th class="period">Low-Period</th>
+                        <th class="freq">Frequency</th>
+                     </tr>
+                  </table>
+               </div>
+           </div>
+         </div>
+
+
+         <div class="expandable expanded" id="cts-expander">
+            <div class="header"><span class="indicator"></span> CTS Details</div>
+            
+            <div class="content">
+               <div class="left">
+                  <table class="">
+                     <tr>
+                        <td class="label">Readout config:</td>
+                        <td class="value"><input type="checkbox" class="autoupdate autocommit" slice="cts_readout_config.input_cnt" /> Trigger Input Counter</td>
+                     </tr>
+                     
+                     <tr class="alt">
+                        <td> </td>
+                        <td class="value"><input type="checkbox" class="autoupdate autocommit" slice="cts_readout_config.channel_cnt" /> Trigger Channel Counter</td>
+                     </tr>
+                     
+                     <tr>
+                        <td> </td>
+                        <td class="value"><input type="checkbox" class="autoupdate autocommit" slice="cts_readout_config.idle_dead_cnt" /> Idle/Dead Counter</td>
+                     </tr>
+                     
+                     <tr class="alt">
+                        <td> </td>
+                        <td class="value"><input type="checkbox" class="autoupdate autocommit" slice="cts_readout_config.trg_cnt" /> Trigger statistics</td>
+                     </tr>
+                     
+                     <tr>
+                        <td> </td>
+                        <td class="value"><input type="checkbox" class="autoupdate autocommit" slice="cts_readout_config.wasa" /> WASA data</td>
+                     </tr>
+                     
+                     <tr class="alt">
+                        <td class="label">TD FSM Limit:</td>
+                        <td class="value">
+                           <input class="autocommit autoupdate text" slice="cts_fsm_limits.td" 
+                                  format="var f=function(x){return parseInt(x)==0xffff ? 'disabled' : (parseInt(x) ? x + ' events' : 'active')}; f"
+                                  interpret="var f=function(x){return (x.trim() == '' || x.match(/disabled|off/)) ? 0xffff : (isNaN(parseInt(x))?0:parseInt(x))}; f" />
+                        </td>
+                     </tr>
+
+                     <tr>
+                        <td class="label">RO FSM Limit:</td>
+                        <td class="value">
+                           <input class="autocommit autoupdate text" slice="cts_fsm_limits.ro" 
+                                  format="var f=function(x){return parseInt(x)==0xffff ? 'disabled' : (parseInt(x) ? x + ' events' : 'active')}; f"
+                                  interpret="var f=function(x){return (x.trim() == '' || x.match(/disabled|off/)) ? 0xffff : (isNaN(parseInt(x))?0:parseInt(x))}; f" />
+                        </td>
+                     </tr>                     
+                  </table>               
+               </div>
+               
+               <div class="right">
+                  <table>
+                     <tr>
+                        <td class="label">Endpoint</td>
+                        <td class="value" id="trb_endpoint">n/a</td>
+                     </tr>
+                     
+                     <tr class="alt">
+                        <td class="label">Design compiled</td>
+                        <td class="value" id="trb_compiletime">n/a</td>
+                     </tr>
+
+                     <tr>
+                        <td class="label">TD FSM State</td>
+                        <td class="value autoupdate" slice="cts_td_fsm_state.state">n/a</td>
+                     </tr>
+                     
+                     <tr class="alt">
+                        <td class="label">RO FSM State</td>
+                        <td class="value autoupdate" slice="cts_ro_fsm_state.state">n/a</td>
+                     </tr>
+
+                     <tr>
+                        <td class="label">RO Queue</td>
+                        <td class="value autoupdate" slice="cts_ro_queue" format="var x=function(x,data){return data.f.state + ', words enqueued: ' + data.v.count}; x">n/a</td>
+                     </tr>
+                     
+                     <tr class="alt">
+                        <td class="label">Current Trigger (15:0)</td>
+                        <td class="value autoupdate" slice="cts_cur_trg_state" format="var x=function(x,data){return '<pre>'+ data.f.mask + '</pre>' + (data.v.asserted?', Asserted, Type '+data.f.type:', Not asserted')}; x">n/a</td>
+                     </tr>
+                     
+                     <tr>
+                        <td class="label">Buffered Trigger (15:0)</td>
+                        <td class="value autoupdate" slice="cts_buf_trg_state" format="var x=function(x,data){return '<pre>'+ data.f.mask + '</pre>, Type: '+data.f.type}; x">n/a</td>
+                     </tr>
+                  </table>
+               </div>
+            </div>
+         </div>
+      </div>
+   </body>
+</html>
\ No newline at end of file