}
}
- my $cmd = $setup[$active]->{cmd};
- my $period = $setup[$active]->{period};
- my $name = $setup[$active]->{name};
+ my $cmd = $setup[$active]->{cmd};
+ my $period = $setup[$active]->{period};
+ my $name = $setup[$active]->{name};
my ($cmdMod,$cmdAddr,$cmdReg) = split('-',$setup[$active]->{cmd});
-
+ my $israte = $setup[$active]->{rate};
+ my $iscache = $setup[$active]->{cache};
+
$getscript = $page->{getscript};
if(!defined $getscript) {
$getscript = "../xml-db/get.pl";
}
+
print <<EOF;
<HTML>
|;
}
-if($setup[$active]->{address} == 1) {
+if(!$setup[$active]->{generic}) {
print qq|
<input type="text" id="address" title="Enter any valid TrbNet address"
value="$cmdAddr" onChange="setaddress()" onLoad="setaddress()"
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()">
+<div class="checkbox"><input type="checkbox" onChange="settarget()" value="1" id="rate" title="Convert register counter to rates where possible" $israte><label for="rate">Rates</label></div>
+<div class="checkbox"><input type="checkbox" onChange="settarget()" value="1" id="cache" title="Use caching of data to reduce load on DAQ network" $iscache><label for="cache">Use Cache</label></div>
<input type="button" class="stdbutton" onClick="refresh(-1);" value="Refresh">
</div>
<div id="content"></div>|;
background-color:#dde;
color:#444;
font-size:10px;
- height:20px;
+ height:24px;
width:90px;
text-align:right;
padding-right:5px;
+ padding-top:1px;
border:1px solid #78b;
transition:background .4s;
}
+input[type="checkbox"], .head .checkbox {
+
+}
+
select {
background:#dde;
color:#444;
transition:background .4s;
}
-input:hover, input:active, input:focus, select:hover, select:active {
+div.checkbox {
+ position:relative;
+ top:4px;
+ width: 100px;
+ display:inline;
+ padding-top:9px;
+ font-size:10px;
+ height:20px;
+ background-color:#dde;
+ color:#444;
+ border:1px solid #78b;
+ transition:background .4s;
+}
+
+input:hover, input:active, input:focus,
+select:hover, select:active,
+.checkbox:hover, .checkbox:active, .checkbox:focus {
background:#eed;
}
$setup[0]->{cmd} = "TrbNet-0xffff-CompileTime";
$setup[0]->{period} = -1;
$setup[0]->{generic} = 1;
+$setup[0]->{rate} = 1;
xmlpage::initPage(\@setup,$page);
$setup[0]->{name} = "StatusRegisters";
$setup[0]->{cmd} = "TrbNet-0xffff-StatusRegisters";
$setup[0]->{period} = 2000;
-$setup[0]->{address} = 1;
$setup[1]->{name} = "BoardInfo";
$setup[1]->{cmd} = "TrbNet-0xffff-BoardInformation";
$setup[1]->{period} = -1;
-$setup[1]->{address} = 1;
$setup[2]->{name} = "Readout";
$setup[2]->{cmd} = "Readout-0xffff-Status";
$setup[2]->{period} = -1;
-$setup[2]->{address} = 1;
function settarget(e) {
command=document.getElementById("target").value;
+ var opt = "";
+ if(document.getElementById("rate").checked) opt += "rate";
+ if(document.getElementById("cache").checked) opt += "cache";
+ var part = command.split('-');
+ command = part[0]+"-"+part[1]+"-"+part[2] + "-" + opt;
refresh(period);
}
function setaddress(e) {
address=document.getElementById("address").value;
var part = command.split('-');
- command=part[0]+"-"+address+"-"+part[2];
+ command=part[0]+"-"+address+"-"+part[2]+part[3];
refresh(period);
}
\ No newline at end of file
<register name="EventCounter" address="0001" purpose="status">
<description>Event counters for LVL1 and Data channel</description>
- <field name="Lvl1Counter" start="0" bits="16" format="integer">
+ <field name="Lvl1Counter" start="0" bits="16" format="integer" rate="1" >
<description>Lvl1 event counter</description>
</field>
- <field name="IpuCounter" start="16" bits="16" format="integer">
+ <field name="IpuCounter" start="16" bits="16" format="integer" rate="1" >
<description>Number of last read-out event</description>
</field>
</register>
<register name="TriggerInput" address="0003" purpose="status">
<description>Trigger input statistics</description>
- <field name="TriggerInputCount" start="0" bits="16" format="integer">
+ <field name="TriggerInputCount" start="0" bits="16" format="integer" rate="1" >
<description>Number of edges on trigger input</description>
</field>
<field name="TriggerLength" start="16" bits="16" format="integer" scaleoffset="10" scale="10" unit=" ns">
<field name="ResetCount" start="0" bits="8" format="integer">
<description>Number of received network resets</description>
</field>
- <field name="RetransmitRecv" start="16" bits="8" format="integer" invertflag="true">
+ <field name="RetransmitRecv" start="16" bits="8" format="integer" invertflag="true" rate="1" >
<description>Number of retransmit requests received</description>
</field>
- <field name="RetransmitSent" start="16" bits="8" format="integer" invertflag="true">
+ <field name="RetransmitSent" start="16" bits="8" format="integer" invertflag="true" rate="1" >
<description>Number of retransmit requests sent</description>
</field>
</register>
<register name="TriggerInput1" address="0006" purpose="status">
<description>Trigger input statistics</description>
- <field name="InvalidCount" start="0" bits="16" format="integer" invertflag="true">
+ <field name="InvalidCount" start="0" bits="16" format="integer" invertflag="true" rate="1" >
<description>Number of invalid triggers. I.e. LVL1 triggers not preceeded by a reference time signal</description>
</field>
- <field name="MultipleCount" start="16" bits="16" format="integer" invertflag="true">
+ <field name="MultipleCount" start="16" bits="16" format="integer" invertflag="true" rate="1" >
<description>Count of multiple reference time signals before a LVL1 trigger, i.e. additional edges on the input which were not sent by the CTS</description>
</field>
</register>
<register name="TriggerInput2" address="0007" purpose="status">
<description>Trigger input statistics</description>
- <field name="SpikeCount" start="0" bits="16" format="integer" invertflag="true">
+ <field name="SpikeCount" start="0" bits="16" format="integer" invertflag="true" rate="1" >
<description>Number of short signals on the reference time input. E.g. signals detected by the synchronous logic, but shorter than the 100 ns reference time signal</description>
</field>
- <field name="SpuriousCount" start="16" bits="16" format="integer" invertflag="true">
+ <field name="SpuriousCount" start="16" bits="16" format="integer" invertflag="true" rate="1" >
<description>Number of occurences of reference time signals before a calibration trigger which should not sent a reference time</description>
</field>
</register>
<register name="TriggerInput3" address="0008" purpose="status">
<description>Trigger input statistics</description>
- <field name="EdgeCount" start="0" bits="16" format="integer">
+ <field name="EdgeCount" start="0" bits="16" format="integer" rate="1" >
<description>Number of edges on the reference time input. Sampled using asynchronous circuitry. Not available in all designs</description>
</field>
</register>
unless ($server =~ /HTTPi/i) {
print "Content-type: text/html\n\n";
}
+ else {
+ &htsponse(200, "OK");
+ print "Content-type: text/html; charset=utf-8\r\n\r\n";
+ }
}
else {
$request[0] = ""; #Dummy entry to run foreach