From: Jan Michel Date: Tue, 30 Nov 2021 13:05:12 +0000 (+0100) Subject: update trigger logic GUI X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=a31cacddd1a42e3857aaeba0fc16ede40b555ccd;p=daqtools.git update trigger logic GUI --- diff --git a/web/htdocs/network/trigger.pl b/web/htdocs/network/trigger.pl index 159e429..a167616 100755 --- a/web/htdocs/network/trigger.pl +++ b/web/htdocs/network/trigger.pl @@ -22,7 +22,8 @@ use Data::Dumper; trb_init_ports() or die("can not connect to trbnet-daemon on the $ENV{'DAQOPSERVER'}"); -my @regs = (0,1,2,4,5,6,8,9,10,12,13,14,0x31,0x32,0x33,0x34,0x35); +my @regs = (0,1,2,4,5,6,8,9,10,12,13,14,0x31,0x32,0x33,0x34,0x35,0x37,0x38,0x39,0x3a,0x3b +); my $setups = { @@ -83,21 +84,29 @@ sub getposition { } sub convbox { - my $tmp = $_[0]; - my $multtmp = $_[1]; - - my @t = split('',$tmp); - my @m = split('',$multtmp); + my @t = split('',$_[0]); + my @m0 = split('',$_[1]); + my @m1 = split('',$_[2]); + my @m2 = split('',$_[3]); + my $length = $_[4]; my $out = ""; - foreach my $i (0..(scalar @t)-1) { - $out .= "" if (($m[$i] ==1) && ($t[$i] eq '0')); - $out .= "" if (($m[$i] ==1) && ($t[$i] eq '1')); - $out .= "" if (($m[$i] ==0) && ($t[$i] eq '1')); - $out .= "" if (($m[$i] ==0) && ($t[$i] eq '0')); - - + foreach my $i (0..$length-1) { + if($m0[$i] == 1) { + $out .= ""; + } + elsif($m1[$i] == 1) { + $out .= ""; + } + elsif($m2[$i] == 1) { + $out .= ""; + } + else { + $out .= "" if (($t[$i] eq '1')); + $out .= "" if (($t[$i] eq '0')); + } + if ($i%4 == 3) {$out .=' ';} } @@ -107,20 +116,36 @@ sub convbox { sub makeinputbits { my ($d,$s) = @_; my $o = ""; - my $multtmp = $d->{0x33}; - $multtmp = 0 if (! ($d->{0x34} & (1 << (8+$s)))); - - $multtmp = sprintf("%032b", $multtmp); - my $tmp = sprintf("%032b",$d->{$s*4}); - $tmp = convbox($tmp,$multtmp); - $o .= $tmp."
"; + my $length = $d->{0x31} & 0x3f; + $length = 32 if $length > 32; + + my $tmp = sprintf("%0".$length."b",$d->{$s*4}); + my $multtmp0 = $d->{0x33}; + $multtmp0 = 0 if (! ($d->{0x34} & (1 << (8+$s)))); + $multtmp0 = sprintf("%0".$length."b", $multtmp0); + my $multtmp1 = $d->{0x38}; + $multtmp1 = 0 if (! ($d->{0x37} & (1 << (0+$s)))); + $multtmp1 = sprintf("%0".$length."b", $multtmp1); + my $multtmp2 = $d->{0x3a}; + $multtmp2 = 0 if (! ($d->{0x37} & (1 << (8+$s)))); + $multtmp2 = sprintf("%0".$length."b", $multtmp2); + + $o .= convbox($tmp,$multtmp0,$multtmp1,$multtmp2,$length)."
"; + $length = ($d->{0x31} & 0x3f) - 32; + return $o if $length <= 0; - $multtmp = $d->{0x35}; - $multtmp = 0 if (! ($d->{0x34} & (1 << (8+$s)))); - $multtmp = sprintf("%032b", $multtmp); - $tmp = sprintf("%032b",$d->{$s*4+1}); - $tmp = convbox($tmp,$multtmp); - $o .= $tmp; + $tmp = sprintf("%0".$length."b",$d->{$s*4+1}); + $multtmp0 = $d->{0x35}; + $multtmp0 = 0 if (! ($d->{0x34} & (1 << (8+$s)))); + $multtmp0 = sprintf("%0".$length."b", $multtmp0); + $multtmp1 = $d->{0x39}; + $multtmp1 = 0 if (! ($d->{0x37} & (1 << (0+$s)))); + $multtmp1 = sprintf("%0".$length."b", $multtmp1); + $multtmp2 = $d->{0x3b}; + $multtmp2 = 0 if (! ($d->{0x37} & (1 << (8+$s)))); + $multtmp2 = sprintf("%0".$length."b", $multtmp2); + + $o .= convbox($tmp,$multtmp0,$multtmp1,$multtmp2,$length); return $o; } @@ -136,13 +161,13 @@ sub makeinputbitsslice { $multtmp = sprintf("%04b", $multtmp); $tmp = sprintf("%04b", $tmp); - $tmp = convbox($tmp,$multtmp); + $tmp = convbox($tmp,$multtmp,0,0,4); $o .= $tmp."
"; $multtmp = sprintf("%04b",0); $tmp = ($data->{$outp*4+1} >> (4*$slice)) & 0xF; $tmp = sprintf("%04b",$tmp); - $tmp = convbox($tmp,$multtmp); + $tmp = convbox($tmp,$multtmp,0,0,4); $o .= $tmp; return $o; @@ -156,10 +181,10 @@ sub makemasterkel { my $val = ($data->{$outp*4}>>22) | ($data->{$outp*4+1} << 10); my $tmp = sprintf("%016b",$val & 0xFFFF); - $tmp = convbox($tmp,0); + $tmp = convbox($tmp,0,0,0,16); $o .= $tmp."
"; $tmp = sprintf("%016b",$val>>16 & 0xFFFF); - $tmp = convbox($tmp,0); + $tmp = convbox($tmp,0,0,0,16); $o .= $tmp; } @@ -171,7 +196,9 @@ sub makemasterbits { if($t eq 'trb3sc') { $o .= "".(($d->{0} & (1<<($i*2+$s)))?'➊':'◻')." "; $o .= "".(($d->{4} & (1<<($i*2+$s)))?'➋':'◻')."
"; - $o .= "".(($d->{0x33} & (1<<($i*2+$s)))?'◼':'◻')."
"; + $o .= "".(($d->{0x33} & (1<<($i*2+$s)))?'◼':'◻').""; + $o .= "".(($d->{0x33} & (1<<($i*2+$s)))?'◼':'◻').""; + $o .= "".(($d->{0x33} & (1<<($i*2+$s)))?'◼':'◻').""; } if($t eq 'trb3') { $o .= "".(($d->{0} & (1<<($i*4+$s)))?'➊':'◻')." "; @@ -192,15 +219,21 @@ sub gettable { if($type eq 'trb3sc') { $out .= ""; - $out .= "
BoardOutput 1Output 2"; + $out .= "
Board + Output 0 (RJ-3) + Output 1 (RJ-4) + Output 2 (RJ-1, BKPL-0) + Output 3 (RJ-2, BKPL-1) +  "; foreach my $i (0..8) { my $b = $boards->[0]; if($i==4) { - $out .= sprintf("
0x%4x",$b); - $out .= "".makemasterkel($data->{$b},0); - $out .= "".makemasterkel($data->{$b},1); - + $out .= sprintf("
0x%04x",$b,$b); + $out .= "".makemasterkel($data->{$b},0); + $out .= "".makemasterkel($data->{$b},1); + $out .= "  "; + $out .= ""; if ($data->{$b}{0x33} != 0) { $out .= "mult >=".(($data->{$boards->[0]}{0x32} >> 16)&0xFF)." "; @@ -211,20 +244,40 @@ sub gettable { } $b = $pos->{$i}; - if($b) { - $out .= sprintf("
0x%04x",$b); + if($b && defined $data->{$b}{0}) { + $out .= sprintf("
0x%04x",$b,$b); + $out .= "".makeinputbits($data->{$b},0); + $out .= ""; + $out .= "".makeinputbits($data->{$b},1); + $out .= ""; $out .= "".makeinputbits($data->{$b},2); $out .= "".makemasterbits($data->{$boards->[0]},$i,0,$type); $out .= "".makeinputbits($data->{$b},3); $out .= "".makemasterbits($data->{$boards->[0]},$i,1,$type); $out .= ""; - if ($data->{$b}{0x33} != 0) { - $out .= "mult >=".(($data->{$b}{0x32} >> 16)&0xFF)."
" + if ($data->{$b}{0x33} != 0 || $data->{$b}{0x35} != 0) { + $out .= "mult 0 >=".(($data->{$b}{0x32} >> 16)&0xFF)."
" + } + if ($data->{$b}{0x38} != 0 || $data->{$b}{0x39} != 0) { + $out .= "mult 1 >=".(($data->{$b}{0x32} >> 8)&0xFF)."
" + } + if ($data->{$b}{0x3a} != 0 || $data->{$b}{0x3b} != 0) { + $out .= "mult 2 >=".(($data->{$b}{0x32} >> 24)&0xFF)."
" } } - elsif(!$b) { - $out .= "
empty"; + else { + if(!$b) { + $out .= "
empty"; + } + else { + $out .= sprintf("
0x%04x",$b); + } + $out .= ""; + $out .= ""; + $out .= ""; + $out .= ""; + $out .= ""; $out .= "".makemasterbits($data->{$boards->[0]},$i,0,$type); $out .= ""; $out .= "".makemasterbits($data->{$boards->[0]},$i,1,$type); @@ -232,11 +285,12 @@ sub gettable { } } $out .= "
"; - $out .= qq#
Redselected in 'or' for output 1 on master -
Blueselected in 'or' for output 2 on master -
Greenselected for multiplicity logic + $out .= qq% +
Greenselected for multiplicity logic 0 +
Greenselected for multiplicity logic 1 +
Greenselected for multiplicity logic 2
Blackenabled in 'or' -
#; +
%; } if($type eq 'trb3') { @@ -375,48 +429,7 @@ push(@setup,({name => "Generic", address => 1, norate => 1, nocache => 1,})); -push(@setup,({name => "EC0", - cmd => "getmap-0x8a00", - period => -1, - noaddress => 1, - norate => 1, - nocache => 1,})); -push(@setup,({name => "EC1", - cmd => "getmap-0x8a01", - period => -1, - noaddress => 1, - norate => 1, - nocache => 1,})); -push(@setup,({name => "EC2", - cmd => "getmap-0x8a02", - period => -1, - noaddress => 1, - norate => 1, - nocache => 1,})); -push(@setup,({name => "EC3", - cmd => "getmap-0x8a03", - period => -1, - noaddress => 1, - norate => 1, - nocache => 1,})); -push(@setup,({name => "EC4", - cmd => "getmap-0x8a04", - period => -1, - noaddress => 1, - norate => 1, - nocache => 1,})); -push(@setup,({name => "EC5", - cmd => "getmap-0x8a05", - period => -1, - noaddress => 1, - norate => 1, - nocache => 1,})); -push(@setup,({name => "Start", - cmd => "getmap-0x8880", - period => -1, - noaddress => 1, - norate => 1, - nocache => 1,})); + xmlpage::initPage(\@setup,$page); }