lxhadeb14 0xc0a86972 0xb73cb20c 0x40a6 # enp67s0f0 - 40:a6:b7:3c:b2:0c - 192.168.105.114
lxhadeb15 0xc0a86973 0xb73c5e0c 0x40a6 # enp67s0f0 - 40:a6:b7:3c:5e:0c - 192.168.105.115
lxhadeb16 0xc0a86974 0xb73c6d98 0x40a6 # enp67s0f0 - 40:a6:b7:3c:6d:98 - 192.168.105.116
-
+lxhadeb17 0xc0a86975 0xef922dc5 0x3cec # eno2np1 - 3c:ec:ef:92:2d:c5 - 192.168.105.117
+lxhadeb18 0xc0a86976 0xef922ce7 0x3cec # eno2np1f - 3c:ec:ef:92:2c:e7 - 192.168.105.118
-eb_feb22.conf
\ No newline at end of file
+eb_2023_4builders.conf
\ No newline at end of file
--- /dev/null
+#
+# JAM 7-2021: cleanup historic config file and leave only what is required for bnet
+#----------------------------------------------
+[Main]
+#maybe put some general flags here again?
+
+#----------------------------------------------
+[Parallel]
+
+
+# JAM 12/2016-
+# the following list configures BNET for each EB SERVER node:
+# this will always imply DABC eventbuilder software.
+# BNETINP gives number of input processes per server node
+# BNETBLD gives maximum number of builder processes per node
+# set BNETINP to 0 for conventional EB setup
+# EB server 0 1 2 3
+#BNETINP: 0 0 0 0 0
+# JAM 26-04-2023: extended for 9 input server nodes
+BNETINP: 0 0 0 0 1 1 1 1 1
+
+## below enough ltsm connections? default with new servers
+BNETBLD: 5 5 5 5 0 0 0 0 0
+
+
+### JAM May2017 something new:
+# LTSM - RFIO successor for tape storage interface
+# LTSM switch (on=1/off=0) for upt to 16 EB processes
+# EB Nr 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+LTSM: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+#LTSM: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+#LTSM: 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+
+
+# LTSM default options for all EB processes
+
+# beamtime config:
+
+LTSM_PATH: /lustre/hades/raw/feb24
+#LTSM_Server: lxltsm01
+LTSM_Server: ltsmi1
+
+
+
+# for hadestest:
+#LTSM_PATH: /lustre/hades/raw/fsqtest/jul23
+#LTSM_Server: lxltsm02
+#
+#
+#LTSM_Node: hadestest
+#LTSM_Passwd: hadestest
+
+## PRODUCTION SETUP HERE
+LTSM_Node: hades
+LTSM_Passwd: wDhgcvFF7
+
+LTSM_Filesystem: /lustre
+
+
+
+LTSM_USEFSD: 1
+# we need at least 5 entries here (number of eventbuilder servers)
+#LTSM_FSD_SERVERS: lxfsd01 lxfsd02-eth lxfsd03 lxfsd01
+#LTSM_FSD_SERVERS: lxfsd04-eth lxfsd07-eth lxfsd04-eth lxfsd07-eth lxfsd04-eth
+# setup feb2022:
+#LTSM_FSD_SERVERS: lxfsd01-eth lxfsd02-eth lxfsd03-eth lxfsd04-eth lxfsd05-eth
+#LTSM_FSD_SERVERS: lxfsd04-eth lxfsd05-eth lxfsd06-eth lxfsd07-eth lxfsd08-eth
+
+# frist feb22 setup - 10-02-21 (JAM)
+#LTSM_FSD_SERVERS: lxfsd01-eth lxfsd03-eth lxfsd04-eth lxfsd05-eth lxfsd07-eth
+
+# beamtime setup feb22:
+#LTSM_FSD_SERVERS: lxfsd01-eth lxfsd03-eth lxfsd02-eth lxfsd05-eth lxfsd07-eth
+
+# JAM 9-22: test new api servers
+LTSM_FSD_SERVERS: lxfsq12 lxfsq09 lxfsq10 lxfsq11 lxfsq12
+
+#LTSM_FSD_SERVERS: lxfsd01-eth lxfsd02 lxfsd03-eth lxfsd01-eth lxfsd02
+#LTSM_FSD_SERVERS: lxfsd01-eth lxfsd03-eth lxfsd01-eth lxfsd03-eth lxfsd01-eth
+LTSM_FSD_PORT: 7625 7625 7625 7625 7625
+
+# below we can optionally change storage destination: 0 - null, 1 - only FSQ server local, 2 - lustre, 3 -tsm, 4 - lustre+tsm,
+LTSM_USEFSQDEST: 1
+LTSM_FSQDEST: 4
+#4
+########## end LTSM
+
+
+# Table with active data sources
+DATA_SOURCES: ../main/data_sources.db
+# this is main configuration of hubs and bnet:
+GBE_CONF: ../hub/register_configgbe_ip.db
+
+
# generate hades eventbuilder hub configuration from setup files
# 27-01-2023 JAM
+# 24-11-2023 JAM: use different source ips
use English;
use strict;
# first loop for ips and udp ports:
my $port=50768;
+my $ipbase=3232261264;
foreach my $hub(@addresses)
{
-#my $srcip=$hexips{$hosts{$hub}}; # src and dest ip the same here?
-my $srcip="0xc0a86490"; # try any dummy
-# or use real ip for each hub in setup table?
+my $srcip=sprintf("0x%x", $ipbase);
my $hexport=sprintf("0x%x", $port);
print OUTFILE " $hub 0 $hexport 0xdead$hub $srcip $hexport $hexips{$hosts{$hub}} $flags{$hub} # $names{$hub} - $hosts{$hub} \n";
$port++;
+$ipbase++
}
# second loop for macs definitions
foreach my $hub(@addresses)
{
-my $srcip=$hexips{$hosts{$hub}}; # src and dest ip the same here?
-# or use real ip for each hub in setup table?
print OUTFILE " $hub 100 $lomacs{$hosts{$hub}} $himacs{$hosts{$hub}} $hexips{$hosts{$hub}} 0x0230 0x0578 # $names{$hub} - $hosts{$hub}\n";
}
-start_eb_gbe_feb22.pl
\ No newline at end of file
+start_eb_gbe_2023_4builders.pl
\ No newline at end of file
--- /dev/null
+#!/usr/bin/perl -w
+
+use English;
+use strict;
+use Getopt::Long;
+use Data::Dumper;
+use Config::Std;
+use FileHandle;
+use List::MoreUtils qw(any apply first_index);
+use File::Basename;
+use Cwd;
+
+#- Copy all the arguments because
+# later on the @ARGV becomes empty
+my @arg_list = @ARGV;
+
+#- the command line option flags
+my $opt_help = 0;
+my $opt_ebconf = "/home/hadaq/trbsoft/hadesdaq/evtbuild/eb.conf";
+my $opt_test = 0;
+my $opt_verb = 0;
+my $opt_eb = "";
+my @opt_ebrange = ();
+#my $opt_rfio = 'undef';
+my $opt_disk = 'undef';
+#my $opt_online = 'undef';
+my $opt_bnet = 3;
+my $opt_prefix;
+
+GetOptions ('h|help' => \$opt_help,
+ 'c|conf=s' => \$opt_ebconf,
+ 'e|eb=s' => \$opt_eb,
+ 'n|nr=s' => \@opt_ebrange,
+ 'd|disk=s' => \$opt_disk,
+ 'p|prefix=s' => \$opt_prefix,
+ 'b|bnet=s' => \$opt_bnet,
+ 'v|verb' => \$opt_verb);
+
+if ( $opt_help ) {
+ &help();
+ exit(0);
+}
+
+#- List of EBs provided via command line options
+my $active_EBs_aref = &setArgs();
+
+#- Hash with status of CPU cores of EBs (used for 'taskset')
+my %EB_CPU_status;
+my $EB_CPU_status_href = \%EB_CPU_status;
+&init_CPU_status($EB_CPU_status_href);
+
+#my $expect_ioc_script = "/tmp/ioc_exit.exp";
+my $log_path = "/home/hadaq/tmp/log";
+my %temp_args;
+my $temp_args_href = \%temp_args;
+read_config $opt_ebconf => %$temp_args_href;
+#print Dumper $temp_args_href;
+#exit;
+
+my @bnetservers = ("192.168.100.8", "192.168.100.9", "192.168.100.10", "192.168.105.11", "192.168.105.114", "192.168.105.115", "192.168.105.116", "192.168.105.117", "192.168.105.118");
+
+# JAM 4-02-2022: enable this instead of the above to replace lxhadeb11 by lxhadeb12
+#my @bnetservers = ("192.168.100.8","192.168.100.9","192.168.105.114", "192.168.105.115", "192.168.105.116", "192.168.100.10", "192.168.105.12");
+
+my %IP_GSI_lookup = (
+ '192.168.100.8' => 'lxhadeb08',
+ '192.168.100.9' => 'lxhadeb09',
+ '192.168.100.10' => 'lxhadeb10',
+ '192.168.105.11' => 'lxhadeb11',
+ '192.168.105.12' => 'lxhadeb12',
+ '192.168.105.13' => 'lxhadeb13',
+ '192.168.105.114' => 'lxhadeb14',
+ '192.168.105.115' => 'lxhadeb15',
+ '192.168.105.116' => 'lxhadeb16',
+ '192.168.105.117' => 'lxhadeb17',
+ '192.168.105.118' => 'lxhadeb18',
+ );
+
+
+my $IP_GSI_href = \%IP_GSI_lookup;
+
+
+my $numOfEBProcs = 0;
+my %EB_Args;
+my $EB_Args_href = \%EB_Args;
+
+#my @EB_IP_list;s
+
+
+
+&getEBArgs( $EB_Args_href );
+
+
+if ($opt_eb eq "start") {
+ &writeArgs2file();
+ &startEvtBuilders();
+} elsif ($opt_eb eq "stop") {
+ &stopEvtBuilders();
+} elsif ($opt_eb eq "restart") {
+ &stopEvtBuilders();
+ sleep 10;
+ &writeArgs2file();
+ &startEvtBuilders();
+}
+
+exit(0);
+
+################### END OF MAIN ####################
+
+sub help() {
+ print "\n";
+ print << 'EOF';
+start_eb_gbe.pl
+
+ This script starts parallel Event Building processes.
+ The script also starts IOC processes for the run control.
+
+Usage:
+
+ Command line: start_eb_gbe.pl
+ [-h|--help] : Show this help.
+ [-c|--conf <path/name>] : Path to the config file (default: ../evtbuild/eb.conf).
+ [-e|--eb <start|stop|restart>] : Start or stop Event Builders (default: start).
+ [-p|--prefix <prefix>] : Prefix of hld file.
+ [-b|--bnet <on|off>] : Specify number of bnet builder nodes(default: 5).
+ [-t|--test] : Test without execution.
+ [-v|--verb] : More verbouse.
+
+Examples:
+
+ Start 6 EBs with the numbers 1,2,3,5,7 and prefix 'md':
+ start_eb_gbe.pl -e start -n 1-3 -n 5 -n 7 -p md
+
+
+EOF
+}
+
+sub init_CPU_status() {
+
+ # JAM 17-oct-2018 - for BNET this cpu reservation is deprecated TODO: remove it
+ my ($EB_CPU_status_href) = @_;
+
+
+ # MT 2020-12: reserve lower 16 (8?) cpus for network interrupts
+ $EB_CPU_status_href->{'192.168.100.8'}->{'input'} = "10-11";
+ $EB_CPU_status_href->{'192.168.100.8'}->{'build'} = "12-31";
+ $EB_CPU_status_href->{'192.168.100.9'}->{'input'} = "10-11";
+ $EB_CPU_status_href->{'192.168.100.9'}->{'build'} = "12-31";
+ $EB_CPU_status_href->{'192.168.100.10'}->{'input'} = "10-11";
+ $EB_CPU_status_href->{'192.168.100.10'}->{'build'} = "12-31";
+ $EB_CPU_status_href->{'192.168.105.11'}->{'input'} = "10-11";
+ $EB_CPU_status_href->{'192.168.105.11'}->{'build'} = "12-31";
+ $EB_CPU_status_href->{'192.168.105.12'}->{'input'} = "10-25";
+ $EB_CPU_status_href->{'192.168.105.12'}->{'build'} = "26-31";
+
+ # JAM 7-2021: new servers have 64 cores, reserve lower 32 cpus for network interrupts - TODO with new set_eth_affinity.pl
+ #$EB_CPU_status_href->{'192.168.105.114'}->{'input'} = "32-60";
+ # distribute load of mdc hubs on more cores here JAM 10-23:
+ $EB_CPU_status_href->{'192.168.105.114'}->{'input'} = "16-60";
+ $EB_CPU_status_href->{'192.168.105.114'}->{'build'} = "61-63";
+
+# $EB_CPU_status_href->{'192.168.105.114'}->{'input'} = "10-25";
+# $EB_CPU_status_href->{'192.168.105.114'}->{'build'} = "26-31";
+
+
+
+ $EB_CPU_status_href->{'192.168.105.115'}->{'input'} = "32-60";
+ $EB_CPU_status_href->{'192.168.105.115'}->{'build'} = "61-63";
+ $EB_CPU_status_href->{'192.168.105.116'}->{'input'} = "32-60";
+ $EB_CPU_status_href->{'192.168.105.116'}->{'build'} = "61-63";
+
+ # below servers with 48 cores:
+ $EB_CPU_status_href->{'192.168.105.117'}->{'input'} = "16-60";
+ $EB_CPU_status_href->{'192.168.105.117'}->{'build'} = "61-63";
+ $EB_CPU_status_href->{'192.168.105.118'}->{'input'} = "16-60";
+ $EB_CPU_status_href->{'192.168.105.118'}->{'build'} = "61-63";
+ # JAM2023 - note that we may use more cores for inputs when these servers do not have builder processes
+
+ # MT, separate scheme, doesn't do so well
+ #$EB_CPU_status_href->{'192.168.105.12'}->{'input'} = "16-23";
+ #$EB_CPU_status_href->{'192.168.105.12'}->{'build'} = "24-31";
+
+
+}
+
+
+sub getCoreNr() {
+ #my ($ip) = @_;
+ my ($ip, $role) = @_;
+ my $core_nr;
+ if (defined $role) {
+ $core_nr = $EB_CPU_status_href->{$ip}->{$role}
+ }
+
+ unless( defined $core_nr ){
+ print "No free cores left on CPU $ip. Exit.\n";
+ exit(0);
+ }
+
+ print "found core numbers $core_nr for node $ip, role $role\n";
+ return $core_nr;
+}
+
+
+
+
+sub setArgs() {
+ my @active_EBs;
+
+ if (@opt_ebrange) {
+ foreach my $range (@opt_ebrange) {
+ if ($range =~ /(\d+)-(\d+)/) {
+ my $max = $1;
+ my $min = $2;
+
+ foreach my $eb ($max..$min) {
+ #- 1 must be subtracted to match
+ # EB numbering in the register_configgbe_ip.db
+ # which starts from zero
+ &checkEB_nr($eb);
+ push(@active_EBs, $eb-1);
+ }
+ } elsif ($range =~ /(\d+)/) {
+ &checkEB_nr($1);
+ push(@active_EBs, $1-1);
+ }
+ }
+ }
+
+ return \@active_EBs;
+}
+
+sub checkEB_nr() {
+ my ($eb_nr) = @_;
+
+ if ( $eb_nr < 1 || $eb_nr > 16 ) {
+ print "ERROR: EB number should be in the range 1-16. Exit.";
+ exit(0);
+ }
+}
+
+sub getEBArgs() {
+ my ($href) = @_;
+
+
+ #- Number of EB process
+ my $ebproc = 0;
+
+ # BNET setup:
+ my $listOfBnetInputs = $temp_args_href->{'Parallel'}->{'BNETINP'};
+ my @bnet_in_list = split(/\s+/, $listOfBnetInputs);
+
+ my $listOfBnetBuilders = $temp_args_href->{'Parallel'}->{'BNETBLD'};
+ my @bnet_bld_list = split(/\s+/, $listOfBnetBuilders);
+ #print Dumper @bnet_bld_list;
+
+
+ #- LTSM settings
+ my $listOfLTSM = $temp_args_href->{'Parallel'}->{'LTSM'};
+ my @ltsm_list = split(/\s+/, $listOfLTSM);
+
+ my $ltsm_path = $temp_args_href->{'Parallel'}->{'LTSM_PATH'};
+ my $ltsm_server = $temp_args_href->{'Parallel'}->{'LTSM_Server'};
+ my $ltsm_node = $temp_args_href->{'Parallel'}->{'LTSM_Node'};
+ my $ltsm_passwd = $temp_args_href->{'Parallel'}->{'LTSM_Passwd'};
+ my $ltsm_filesys = $temp_args_href->{'Parallel'}->{'LTSM_Filesystem'};
+
+ my $ltsm_usefsd = $temp_args_href->{'Parallel'}->{'LTSM_USEFSD'};
+ my $ltsm_fsd_servers = $temp_args_href->{'Parallel'}->{'LTSM_FSD_SERVERS'};
+ my @ltsm_fsd_server_list = split(/\s+/, $ltsm_fsd_servers);
+ my $ltsm_fsd_ports = $temp_args_href->{'Parallel'}->{'LTSM_FSD_PORT'};
+ my @ltsm_fsd_port_list = split(/\s+/, $ltsm_fsd_ports);
+
+ my $ltsm_usefsqdest = $temp_args_href->{'Parallel'}->{'LTSM_USEFSQDEST'};
+ my $ltsm_fsqdest = $temp_args_href->{'Parallel'}->{'LTSM_FSQDEST'};
+
+ #--- Read GbE configuration
+ my %eb_ids_gbe_hash;
+ my $eb_ids_gbe_href = \%eb_ids_gbe_hash;
+
+ &getGbEconfig($eb_ids_gbe_href);
+
+ #--- Loop over all EB processes
+ #print Dumper $eb_ids_gbe_href;
+ #exit;
+ #foreach my $ebproc ( sort keys %{$eb_ids_gbe_href} ){
+ foreach my $ebproc ( 0 .. $#bnetservers) {
+
+
+
+ $href->{$ebproc}->{'IP'} = $bnetservers[$ebproc];
+ $href->{$ebproc}->{'EBNUM'} = $ebproc+1;
+
+ $href->{$ebproc}->{'PORT_LIST'} = $eb_ids_gbe_href->{$ebproc}->{'port_list'};
+
+ # JAM2016: bnet requieres udp destination nodes in a list like the ports:
+ $href->{$ebproc}->{'IP_LIST'} = $eb_ids_gbe_href->{$ebproc}->{'ip_list'};
+
+ # JAM2018: bnet requieres calibration modes in a list like the ports:
+ $href->{$ebproc}->{'CALIB_LIST'} = $eb_ids_gbe_href->{$ebproc}->{'calib_list'};
+
+ # JAM2018: bnet requires hub addresses/subevents in a list like the ports:
+ $href->{$ebproc}->{'HUB_LIST'} = $eb_ids_gbe_href->{$ebproc}->{'addr_list'};
+
+
+
+ $href->{$ebproc}->{'LTSM'} = $ltsm_list[$ebproc]; # 0|1
+ $href->{$ebproc}->{'LTSM_PATH'} = $ltsm_path;
+ $href->{$ebproc}->{'LTSM_Server'} = $ltsm_server;
+ $href->{$ebproc}->{'LTSM_Node'} = $ltsm_node;
+ $href->{$ebproc}->{'LTSM_Passwd'} = $ltsm_passwd;
+ $href->{$ebproc}->{'LTSM_Filesystem'} = $ltsm_filesys;
+
+ $href->{$ebproc}->{'LTSM_USEFSD'} = $ltsm_usefsd;
+ $href->{$ebproc}->{'LTSM_FSD_PORT'} = $ltsm_fsd_port_list[$ebproc];
+ $href->{$ebproc}->{'LTSM_FSD_SERVER'} = $ltsm_fsd_server_list[$ebproc];
+
+
+ $href->{$ebproc}->{'LTSM_USEFSQDEST'} = $ltsm_usefsqdest;
+ $href->{$ebproc}->{'LTSM_FSQDEST'} = $ltsm_fsqdest;
+
+
+
+ # if ($ebproc<7) {
+ # note that for bnet setup, index does not mean eb number, but machine number!
+ # we misuse this here to save complexity of setup
+ $href->{$ebproc}->{'BNET_INP'} = $bnet_in_list[$ebproc]; # 0|1|2...
+ $href->{$ebproc}->{'BNET_BLD'} = $bnet_bld_list[$ebproc]; # 0|1|2|3
+ #print "dump bnet_bld\n";
+ #print Dumper \$bnet_bld_list[$ebproc];
+# }
+
+ } #foreach
+
+ $numOfEBProcs = $ebproc;
+ #print "result\n";
+ #print Dumper $ebproc;
+ # exit;
+}
+
+
+
+
+sub startBnet() {
+ # here we launch the dabc bnet.
+ # parameters in eb.conf can specify how many input and builder processes run on each node.
+ # we misuse daq gbe setup for EB 15 to specify ports and destination nodes.
+ my (@process_list);
+ # setup for first EB
+ my $ebproc =0; # setup for first EB will define the BNET
+ my $username = "hadaq";
+ my $cdworkdir = "cd /home/hadaq/oper;";
+
+ # here the default installation. always the most recent...
+ # new 11-2022: installation checked out from git JAM
+ my $dabclogin = ". /home/hadaq/soft/dabc/bin/dabclogin.master; ";
+ my $cmd_dabc = "/home/hadaq/soft/dabc/bin/dabc_exe.master ";
+ my $conf_bnet_inp = " BnetInputHades.master.xml";
+ my $conf_bnet_bld = " BnetBuilderHadesFSD.master.xml";
+
+
+ # below previous default installation on svn checkout
+# my $dabclogin = ". /home/hadaq/soft/dabc/bin/dabclogin.head; ";
+# my $cmd_dabc = "/home/hadaq/soft/dabc/bin/dabc_exe.head ";
+# # my $cmd_dabc = "/usr/bin/gdb -x /home/hadaq/soft/dabc/head/base/run/gdbcmd.txt --args /home/hadaq/soft/dabc/bin/dabc_exe.head ";
+# my $conf_bnet_inp = " BnetInputHades.head.xml";
+# #my $conf_bnet_bld = " BnetBuilderHades.head.xml";
+# my $conf_bnet_bld = " BnetBuilderHadesFSD.head.xml";
+
+ # JAM2020- enable this to switch different dabc version:
+ # my $dabclogin = ". /home/hadaq/soft/dabc/bin/dabclogin.feb22; ";
+ # my $cmd_dabc = "/home/hadaq/soft/dabc/bin/dabc_exe.feb22 ";
+ # my $conf_bnet_inp = " BnetInputHades.feb22.xml";
+ # my $conf_bnet_bld = " BnetBuilderHadesFSD.feb22.xml";
+
+
+ # variable master node now:
+ my $bnetmaster = "lxhadeb12";
+ # "lxhadeb07";
+ #lxhadeb12";
+
+ # before we start inidividual bnet processes, need to evaluate list of ports and nodes:
+ # BNETSENDERS=[localhost:12501,localhost:12502]
+ # BNETRECEIVERS= [localhost:12101,localhost:12102]
+ # HADAQPORTS =[50000,50001,50002]
+
+ my $bnetsenders = "[";
+ my $bnetrcvs = "[";
+ my @bnet_port_list = ();
+ my @bnet_calib_list = ();
+ my @bnet_subevt_list = ();
+ my $firstsnd = 1;
+ my $firstrcv = 1;
+
+ my $maxbuildservers = 4; #first servers only for builders JAM2021
+ my $maxbuilders=1;
+ if ($opt_bnet>0 && $opt_bnet <=16) {
+ $maxbuilders=$opt_bnet;
+ }
+
+ print "Using $maxbuilders event builder nodes from option -b $opt_bnet\n";
+ my $totalbuilders=0;
+ my @localbuilders = (0,0,0,0,0,0,0); # JAM21 entries also for servers that were deactivated as builders
+ while ($totalbuilders < $maxbuilders) {
+ my $lasttotalbuilders=$totalbuilders;
+ for ( my $ebserver=0; $ebserver<$maxbuildservers; $ebserver=$ebserver+1) {
+ my $bnet_numbuilders = $EB_Args_href->{$ebserver}->{'BNET_BLD'};
+ print "numbuilders for $ebserver is $bnet_numbuilders \n";
+ if ($totalbuilders < $maxbuilders) {
+ if ($localbuilders[$ebserver] < $bnet_numbuilders) {
+ $localbuilders[$ebserver]++;
+ $totalbuilders++;
+ print "Added 1 builder on EB server: $ebserver\n";
+ }
+ }
+ }
+ if ($totalbuilders==$lasttotalbuilders) {
+ last;
+ } # more ebs demanded than configured
+ }
+
+ for ( my $ebserver=0; $ebserver<$maxbuildservers; $ebserver=$ebserver+1) {
+ print "Found $localbuilders[$ebserver] builders on EB server: $ebserver\n";
+ }
+
+ my $rcvport = 12100;
+ for ( my $ebserver=0; $ebserver<$#bnetservers+1; $ebserver=$ebserver+1) {
+ print "Gathering processes at EB server: $ebserver\n";
+ my $sendport = 12501;
+ my $ip = $bnetservers[$ebserver];
+
+ # JAM2018 - need to transform HADES VLAN IPs into GSI VLAN for BNET!
+ my $gsi_ip = getIP_hades2gsi($ip);
+ # array of BNET values is already indexed with server id:
+ my $bnet_numsenders = $EB_Args_href->{$ebserver}->{'BNET_INP'};
+ for (my $six=0; $six<$bnet_numsenders; $six=$six+1) {
+ $bnetsenders=$bnetsenders . "," unless ($firstsnd>0);
+ $bnetsenders=$bnetsenders . $gsi_ip.":". $sendport;
+ $sendport=$sendport+1;
+ $firstsnd=0 if($firstsnd>0);
+ }
+ for (my $rix=0; $rix<$localbuilders[$ebserver]; $rix=$rix+1) {
+ $bnetrcvs=$bnetrcvs . "," unless ($firstrcv>0);
+ $bnetrcvs=$bnetrcvs . $gsi_ip.":". $rcvport;
+ $rcvport=$rcvport+1;
+ $firstrcv=0 if($firstrcv>0);
+ }
+ my $hadaqports = "[";
+ my $calibflags = "[";
+ my $subevents = "[";
+ my $firstport = 1;
+
+ #- add ports: note that we only use eb 1 from hub setup and do check which ports belong to our eb server:
+ my $ix =0;
+ foreach my $port (@{$EB_Args_href->{$ebproc}->{'PORT_LIST'}}) {
+ # here we only gather such ports that are assigned to our node:
+ # todo: how to distribute the ports to more than one bnet input process per server?
+ my $cflag = $EB_Args_href->{$ebproc}->{'CALIB_LIST'}[$ix];
+ my $hub = $EB_Args_href->{$ebproc}->{'HUB_LIST'}[$ix];
+ #print "ip" . $ip . " with port:" . $port ." index:" . $ix . " ip: ". $EB_Args_href->{$ebproc}->{'IP_LIST'}[$ix] . " calib: ". $cflag ." hub: ". $hub ."\n" ;
+ if ($ip eq $EB_Args_href->{$ebproc}->{'IP_LIST'}[$ix]) {
+ $hadaqports=$hadaqports . "," unless ($firstport>0);
+ $hadaqports = $hadaqports . $port;
+ $calibflags=$calibflags . "," unless ($firstport>0);
+ $calibflags = $calibflags . $cflag;
+ $subevents=$subevents . "," unless ($firstport>0);
+ $subevents = $subevents . $hub;
+ $firstport=0 if($firstport>0);
+ }
+ $ix++;
+ }
+ $hadaqports=$hadaqports . "]";
+ push(@bnet_port_list, $hadaqports); # ports are per server
+ $calibflags=$calibflags . "]";
+ push(@bnet_calib_list, $calibflags); # flags per server
+ $subevents=$subevents . "]";
+ push(@bnet_subevt_list, $subevents); # flags per server
+ # print "node ". $gsi_ip . " uses ports ".$hadaqports . ", calibflags " .$calibflags . " hubs: ". $subevents ."\n";
+ }
+ $bnetsenders = $bnetsenders . "]";
+ $bnetrcvs = $bnetrcvs . "]";
+
+ print "bnetsenders: ". $bnetsenders ."\n";
+ print "bnetreceivers: ". $bnetrcvs ."\n";
+
+ my $portid=0; #
+ my $sendid=0;
+
+ my $bnebport=12100;
+ for ( my $ebserver=0; $ebserver<$#bnetservers+1; $ebserver=$ebserver+1) {
+ print "Starting input processes on EB server: $ebserver\n";
+ my $ebid=$ebserver + 1; # still need unique eventbuilder ids on cluster because of epics!
+ my $cpu = $bnetservers[$ebserver];
+
+ my $gsi_cpu = getIP_hades2gsi($cpu);
+ # in the following, the port and ip setup of the bnet is taken from ebproc 0 only!
+ my $bnet_numsenders = $EB_Args_href->{$ebserver}->{'BNET_INP'};
+ #my $bnet_numbuilders = $EB_Args_href->{$ebserver}->{'BNET_BLD'};
+ print "found $bnet_numsenders senders on node $cpu \n";
+
+ my $bninpport=12501;
+ # loop over senders on this node and start them:
+ for (my $sender=0; $sender<$bnet_numsenders; $sender=$sender+1) {
+ my $sendnum= $sendid + 1;
+ my $exports = " export MYHOST=" . $gsi_cpu . ";" .
+ " export BNETMASTER=" . $bnetmaster . ";" .
+ " export BNINPNUM=" . $sendnum . ";" . # independent of actual server id in general list. server may be excluded from sending!
+ " export BNINPID=" . $sendid . "; " .
+ " export BNINPPORT=" . $bninpport . "; " .
+ " export BNETSENDERS=" . $bnetsenders . ";" .
+ " export BNETRECEIVERS=" . $bnetrcvs . ";" .
+ " export HADAQPORTS=" . $bnet_port_list[$ebserver] .";" .
+ " export SUBEVENTS=" . $bnet_subevt_list[$ebserver] .";" .
+ " export CALIBFLAGS=" . $bnet_calib_list[$ebserver] .";";
+ # todo: how to configure situation with more than one bnet input per node? hadaqports must be distributed on them...
+ #" export BNINPNUM=" . $ebid . ";" . # todo: extend if more than one sender per node
+ #
+ #my $core_nr = &getCoreNr($cpu) . "," . &getCoreNr($cpu);
+ my $core_nr = &getCoreNr($cpu, 'input');
+ # my $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports taskset -c $core_nr $cmd_dabc $conf_bnet_inp 1</dev/null & (sleep 2; ~/bin/optimize_taskset.sh) &\"";
+ # JAM21 - try without optimize taskset
+ my $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports taskset -c $core_nr $cmd_dabc $conf_bnet_inp 1</dev/null &\"";
+ #strace -s 200 -ff -o strace_out.txt
+ # my $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports taskset -c $core_nr strace -o strace_out.txt -ebind,open $cmd_dabc $conf_bnet_inp >senderlog_$cpu.log 2>&1 &\"" ;
+
+ # JAM 24-01-22: without senderlog, but keep strace to be safe at EB startup
+ # my $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports taskset -c $core_nr strace -o strace_out.txt -ebind,open $cmd_dabc $conf_bnet_inp 1</dev/null &\"" ;
+
+ # my $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports taskset -c $core_nr $cmd_dabc $conf_bnet_inp >senderlog_$cpu.log 2>&1 & (sleep 2; ~/bin/optimize_taskset.sh) &\"";
+ # my $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports $cmd_dabc $conf_bnet_inp >senderlog_$cpu.log 2>&1 &\"";
+
+
+ my $log = $log_path . "/log_" . $ebserver . "_" . "startBnetInp_". $sender. ".txt";
+ #my $log = "/dev/null 2>&1";
+
+ print "Forking:" . $exe_dabc ."\n";
+ forkMe($exe_dabc, $log, \@process_list) unless($opt_test);
+
+ $sendid = $sendid +1;
+ $bninpport = $bninpport +1;
+ } # bnet sender/input processes
+ } # end senders
+
+ sleep 1;
+ # JAM12-2021 -maybe this helps for connection, wait until server sockets of senders are all up?
+ # todo: loop over builders
+ # reduced to 1 second again, mt
+
+ for ( my $ebserver=0; $ebserver<$maxbuildservers; $ebserver=$ebserver+1) {
+ print "Starting builder processes on EB server: $ebserver\n";
+ my $ebid=$ebserver + 1; # still need unique eventbuilder ids on cluster because of epics! (and dabc?)
+ my $cpu = $bnetservers[$ebserver];
+ my $gsi_cpu = getIP_hades2gsi($cpu);
+ # in the following, the port and ip setup of the bnet is taken from ebproc 15 or 0 only!
+ #my $bnet_numbuilders = $EB_Args_href->{$ebserver}->{'BNET_BLD'};
+ print "start $localbuilders[$ebserver] builders on node $cpu \n";
+
+ for (my $builder=0; $builder<$localbuilders[$ebserver]; $builder=$builder+1) {
+ my $exports = " export MYHOST=" . $gsi_cpu . ";" .
+ " export BNETMASTER=" . $bnetmaster . ";" .
+ " export BNEBNUM=" . $ebid . ";" .
+ " export BNEBID=" . $portid . "; " .
+ " export BNEBPORT=" . $bnebport . "; " .
+ # ignore prefix at startup. always start without files and show it:
+ #" export PREFIX=" . $EB_Args_href->{$ebproc}->{'PREFIX'}. "; " .
+ " export PREFIX=--;" .
+ " export BNETSENDERS=" . $bnetsenders . ";" .
+ " export BNETRECEIVERS=" . $bnetrcvs . ";" .
+ " export HADAQPORTS=" . $bnet_port_list[$ebserver]. "; " ;
+
+ # no daqdisk demon anymore for raid6-
+ $exports = $exports . "export DAQDISK=0; export OUTDIR=/data01/data; ";
+
+ if ( $EB_Args_href->{$ebproc}->{'LTSM'} ) {
+
+ # switch on by number of outputs
+ $exports = $exports . " export FILEOUTPUTS=3;";
+ # additional exports for LTSM
+
+ $exports = $exports . " export LTSMPATH=". $EB_Args_href->{$ebproc}->{'LTSM_PATH'} . ";";
+ $exports = $exports . " export LTSMSERVER=". $EB_Args_href->{$ebproc}->{'LTSM_Server'} . ";";
+ $exports = $exports . " export LTSMNODE=". $EB_Args_href->{$ebproc}->{'LTSM_Node'} . ";";
+ $exports = $exports . " export LTSMPASSWD=". $EB_Args_href->{$ebproc}->{'LTSM_Passwd'} . ";";
+ $exports = $exports . " export LTSMFSNAME=". $EB_Args_href->{$ebproc}->{'LTSM_Filesystem'} . ";";
+ $exports = $exports . " export DSM_LOG=/home/hadaq/oper/ltsm". $ebid .".log;";
+
+ # new for file system daemon JAM2020:
+ if ($EB_Args_href->{$ebproc}->{'LTSM_USEFSD'}) {
+ $exports = $exports . " export USEFSD=true;";
+ $exports = $exports . " export LTSMSESSIONFILES=999999;";
+ # increase number of session files if fsd is used:
+ } else {
+ $exports = $exports . " export USEFSD=false;";
+ $exports = $exports . " export LTSMSESSIONFILES=10;"
+ }
+ # JAM2021: for FSQ api with data destination flag:
+ if ($EB_Args_href->{$ebproc}->{'LTSM_USEFSQDEST'}) {
+ $exports = $exports . " export FSQDEST=". $EB_Args_href->{$ebproc}->{'LTSM_FSQDEST'}. ";";
+ }
+ else
+ {
+ # stick to full storage lustre and tsm-
+ $exports = $exports . " export FSQDEST=4;";
+ }
+
+ # $exports = $exports . " export FSDPORT=". $EB_Args_href->{$ebproc}->{'LTSM_FSD_PORT'} . ";";
+ # $exports = $exports . " export FSDSERVER=". $EB_Args_href->{$ebproc}->{'LTSM_FSD_SERVER'} . ";";
+ my $fsdix=$ebserver % 6; # number of FSD servers used TODO get from configuration
+ # in this case, server 4 will use first fsd
+ $exports = $exports . " export FSDPORT=". $EB_Args_href->{$fsdix}->{'LTSM_FSD_PORT'} . ";";
+ $exports = $exports . " export FSDSERVER=". $EB_Args_href->{$fsdix}->{'LTSM_FSD_SERVER'} . ";";
+ } else {
+ # no ltsm, just local file
+ $exports = $exports . " export FILEOUTPUTS=2;";
+ }
+
+
+ my $core_nr = &getCoreNr($cpu, 'build');
+ #y $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports taskset -c $core_nr $cmd_dabc $conf_bnet_bld 1</dev/null & (sleep 4; ~/bin/optimize_taskset.sh) &\"";
+ #JAM21 - disable further taskset optimization for the moment.
+ #strace -o strace_out.txt
+ my $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports taskset -c $core_nr $cmd_dabc $conf_bnet_bld 1</dev/null &\"";
+
+ #my $exe_dabc = "ssh -n $cpu -l $username \"$dabclogin $cdworkdir $exports $cmd_dabc $conf_bnet_bld >builderlog_$cpu.log 2>&1 &\"";
+
+
+ my $log = $log_path . "/log_" . $ebserver . "_" . "startBnetBld_". $builder . ".txt";
+ #my $log = "/dev/null 2>&1";
+ print "Forking:" . $exe_dabc ."\n";
+ forkMe($exe_dabc, $log, \@process_list) unless($opt_test);
+
+ $ebid = $ebid + $maxbuildservers; #5 ; # increment ebnum by 5 (JAM2020) per ebserver to re-use EPICS iocs (deprecated, but keep numbering logic JAM2021)
+ $portid = $portid + 1;
+ $bnebport = $bnebport +1;
+ #
+ } # builder processes
+ } # servers
+
+ # finally, we need to set eb lut on cts for setup of EB1 => bnet distribution
+ #trbcmd w 0x0003 0xa0f0 0x8000`;
+ #`trbcmd w 0x0003 0xa0f0 0x1`;
+ `trbcmd setbit 0x0003 0xa0f0 0x1`;
+ # use EB1 as pseude for BNET now
+ # all calibration triggers also assigned to pseudo EB1=> bnet distribution for the moment
+ #trbcmd w 0x0003 0xa0f3 0xfff`;
+ # `trbcmd w 0x0003 0xa0f3 0xff0`;
+ `trbcmd setbit 0x0003 0xa0f3 0xff0`;
+ # use EB1 as pseudo receiver for calib triggers
+
+ sleep (5); # seems also to be fine: michael, 2019-02-18
+
+ # sleep (20) # old # need to wait until forking is done, otherwise it does not work via gui control xterm
+
+}
+
+
+
+sub startEvtBuilders() {
+ # JAM21 - always use bnet now, disable support of old scheme
+ # if ( $EB_Args_href->{0}->{'BNET_INP'} ) {
+ print "Starting Builder network...\n";
+ startBnet();
+ return;
+ # }
+ }
+
+
+sub stopEvtBuilders() {
+ my $username = "hadaq";
+
+ my @process_list = ();
+
+ #--- Loop over server IPs
+ foreach my $ip (@bnetservers) {
+
+ #my $exe = "ssh -n $ip -l $username \"/home/hadaq/bin/cleanup_evtbuild.pl; /home/hadaq/bin/ipcrm.pl\"";
+ my $exe = "ssh -n $ip -l $username \"/home/hadaq/bin/cleanup_evtbuild.pl\"";
+ if ($opt_verb) {
+ print "Killing running EBs...\n";
+ print "Exec: $exe\n";
+ }
+
+ my $log = $log_path . "/log_" . $ip . "_" . "stopEB.txt";
+
+ forkMe($exe, $log, \@process_list) unless($opt_test);
+ }
+
+ #- Wait for children
+ foreach my $cur_child_pid (@process_list) {
+ print "wait for $cur_child_pid\n";
+ waitpid($cur_child_pid,0);
+ }
+}
+
+
+sub forkMe() {
+ my ($cmd, $log, $proc_list) = @_;
+
+ my $child = fork();
+
+ if ( $child ) { # parent
+ push( @$proc_list, $child );
+ } elsif ( $child == 0 ) { # child
+ system("$cmd >$log 2>&1 ");
+ exit(0);
+ } else {
+ print "Could not fork: $!\n";
+ exit(1);
+ }
+}
+
+
+sub getGbEconfig() {
+ #
+ # Read DB configurations of GbE and CTS,
+ # look for active data sources as well as
+ # for EB IPs and ports.
+ #
+
+ my ($eb_ids_href) = @_;
+
+ my $data_sources = $temp_args_href->{'Parallel'}->{'DATA_SOURCES'};
+ my $gbe_conf = $temp_args_href->{'Parallel'}->{'GBE_CONF'};
+
+ my %activeSources_hash;
+ my $activeSources_href = \%activeSources_hash;
+
+ &readActiveSources($data_sources, $activeSources_href);
+
+ my @id_list;
+ my $id_list_aref = \@id_list;
+
+ #- Overwrite array with EB numbers
+ @id_list = (0 .. 15);
+ #print Dumper $id_list_aref;
+
+ &readEBports($gbe_conf, $activeSources_href, $id_list_aref, $eb_ids_href);
+}
+
+sub readEBids() {
+ #
+ # Read EB Ids
+ #
+
+ my ($file, $id_list_aref) = @_;
+
+ my $nnn_table = 0;
+ my $val_table = 0;
+
+ my $SPACE = "";
+
+ my $fh = new FileHandle("$file", "r");
+
+ while (<$fh>) {
+
+ #- Remove all comments
+ $_ =~ s{ # Substitue...
+ \# # ...a literal octothorpe
+ [^\n]* # ...followed by any number of non-newlines
+ }
+ {
+$SPACE}gxms; # Raplace it with a single space
+
+ #- Skip line if it contains only whitespaces
+ next unless(/\S/);
+
+ if (/^(\s+)?!Value\stable/) {
+ $val_table = 1;
+ $nnn_table = 0;
+ next;
+ } elsif (/^(\s+)?!\w+/) {
+ $val_table = 0;
+ $nnn_table = 1;
+ }
+
+ if ($val_table) {
+ my (@vals) = split(" ", $_);
+ my @id_list1 = split("", $vals[12]);
+ my @id_list2 = split("", $vals[13]);
+ foreach my $id (@id_list1) {
+ push(@$id_list_aref, hex($id));
+ }
+ foreach my $id (@id_list2) {
+ push(@$id_list_aref, hex($id));
+ }
+ } elsif ($nnn_table) {
+ }
+ }
+
+ $fh->close;
+}
+
+sub readEBports() {
+ #
+ # Read EB IPs and ports accoring to EB Id (type)
+ # and TRB-Net addresses of active data sources.
+ #
+
+ my ($file, $activeSources_href, $id_list_aref, $ports_href) = @_;
+
+ my $nnn_table = 0;
+ my $val_table = 0;
+
+ my $fh = new FileHandle("$file", "r");
+
+ &isFileDefined($fh, $file);
+
+ my %tmp;
+ my $tmp_href = \%tmp;
+
+ my $SPACE = "";
+
+ while (<$fh>) {
+
+ #print $_;
+ #- Remove all comments
+ $_ =~ s{ # Substitue...
+ \# # ...a literal octothorpe
+ [^\n]* # ...followed by any number of non-newlines
+ }
+ {
+$SPACE}gxms; # Raplace it with a single space
+
+ #- Skip line if it contains only whitespaces
+ next unless(/\S/);
+
+ #print $_;
+ if (/^(\s+)?!Value\stable/) {
+ $val_table = 1;
+ $nnn_table = 0;
+ next;
+ } elsif (/^(\s+)?!\w+/) {
+ $nnn_table = 1;
+ $val_table = 0;
+ }
+
+ if ($val_table) {
+ my (@vals) = split(" ", $_);
+ my $id = $vals[1];
+
+
+ #- Accept only EB Ids from CTS config file
+ #print "value: $_";
+ next unless( any {$_ eq $id} @$id_list_aref );
+
+ #print Dumper \@vals;
+ #print "active sources: "; print Dumper $activeSources_href->{'addr_list'};
+ #exit;
+
+ my $ip = &getIP_hex2dec($vals[6]);
+ my $port = &getPort_hex2dec($vals[2]);
+ my $addr = $vals[0];
+ my $calib = $vals[7]; # jam2018 - add list of trb3 tdc calibration modes
+
+ # print "got: ip: $ip, port: $port, addr: $addr\n";
+ #- Accept only sources from active source list
+ if ( any {hex($_) == hex($addr)} @{$activeSources_href->{'addr_list'}} ) {
+ $tmp_href->{$id}->{'IP'} = $ip;
+ push( @{$tmp_href->{$id}->{'port_list'}}, $port );
+ push( @{$tmp_href->{$id}->{'addr_list'}}, $addr );
+ push( @{$tmp_href->{$id}->{'calib_list'}}, $calib );
+
+ # JAM2016: for bnet we need the receiver nodes per port as list also:
+ push( @{$tmp_href->{$id}->{'ip_list'}}, $ip );
+
+ }
+ }
+ }
+
+ $fh->close;
+
+ # print Dumper $tmp_href;
+
+ #- Sort hash according to active data source list
+ my $numids= scalar keys %tmp;
+ #print "number of ids: $numids \n";
+ foreach my $id (keys %tmp) {
+ $ports_href->{$id}->{'IP'} = $tmp_href->{$id}->{'IP'};
+
+ foreach my $addr (@{$activeSources_href->{'addr_list'}}) {
+
+ my $ind1 = first_index {$_ eq $addr} @{$tmp_href->{$id}->{'addr_list'}};
+ my $ind2 = first_index {$_ eq $addr} @{$activeSources_href->{'addr_list'}};
+
+ next if($ind1 == -1);
+
+
+ if ($id == 0 && $numids==1) {
+ # fill all ids of active inputs with setup for id 0 of bnet
+ foreach my $bid (0 .. $#bnetservers) {
+ push( @{$ports_href->{$bid}->{'port_list'}}, $tmp_href->{$id}->{'port_list'}->[$ind1]);
+ push( @{$ports_href->{$bid}->{'ip_list'}}, $tmp_href->{$id}->{'ip_list'}->[$ind1]);
+ push( @{$ports_href->{$bid}->{'calib_list'}}, $tmp_href->{$id}->{'calib_list'}->[$ind1]);
+ push( @{$ports_href->{$bid}->{'addr_list'}}, $addr);
+ #push( @{$ports_href->{$bid}->{'bufsize_list'}}, $activeSources_href->{'bufsize_list'}->[$ind2]);
+ }
+ } else {
+# #old EB mode/no bnet: config file defines all. DO WE NEED THIS STILL?
+# push( @{$ports_href->{$id}->{'port_list'}}, $tmp_href->{$id}->{'port_list'}->[$ind1]);
+# # added for bnet JAM:
+# #push( @{$ports_href->{$id}->{'ip_list'}}, $tmp_href->{$id}->{'ip_list'}->[$ind1]);
+# #push( @{$ports_href->{$id}->{'calib_list'}}, $tmp_href->{$id}->{'calib_list'}->[$ind1]);
+# push( @{$ports_href->{$id}->{'addr_list'}}, $addr);
+# push( @{$ports_href->{$id}->{'bufsize_list'}}, $activeSources_href->{'bufsize_list'}->[$ind2]);
+ }
+ }
+ }
+
+ #print Dumper $ports_href;
+}
+
+sub readActiveSources() {
+ #
+ # Read TRB-Net addresses of active data sources
+ #
+
+ my ($file, $activeSources_href) = @_;
+
+ my $fh = new FileHandle("$file", "r");
+
+ &isFileDefined($fh, $file);
+
+ my $SPACE = "";
+
+ # this one contains list of deactivated data sources
+ my $log="/home/hadaq/trbsoft/hadesdaq/evtbuild/tmp/EB_NotActiveSources.txt";
+ system("truncate -s 0 $log ;");
+ while (<$fh>) {
+ #- Remove all comments
+ $_ =~ s{ # Substitue...
+ \# # ...a literal octothorpe
+ [^\n]* # ...followed by any number of non-newlines
+ }
+ {
+$SPACE}gxms; # Raplace it with a single space
+
+ #- Skip line if it contains only whitespaces
+ next unless(/\S/);
+
+ my ($addr, $astat, $sys, $size) = split(" ", $_);
+
+ if ($astat == 0) {
+ system("echo $addr >> $log 2>&1;");
+ next;
+ }
+ push( @{$activeSources_href->{'addr_list'}}, $addr);
+ #push( @{$activeSources_href->{'bufsize_list'}}, &getBufSize($size));
+ }
+
+ $fh->close;
+}
+
+
+sub getIP_hex2dec() {
+ my ($ip_hex) = @_;
+
+ my $ip_dec;
+
+ if ( $ip_hex =~ /0x(\w{2})(\w{2})(\w{2})(\w{2})/ ) {
+ $ip_dec = hex($1) . "." . hex($2) . "." . hex($3) . "." . hex($4);
+ } else {
+ print "getIP_hex2dec(): cannot extract ip address because of diferent format! Exit.";
+ exit(0);
+ }
+
+ return $ip_dec;
+}
+
+sub getPort_hex2dec() {
+ my ($port_hex) = @_;
+
+ my $port_dec;
+
+ if ( $port_hex =~ /0x(\w+)/ ) {
+ $port_dec = hex($1);
+ } else {
+ print "getPort_hex2dec(): cannot extract port number because of diferent format! Exit.";
+ exit(0);
+ }
+
+ return $port_dec;
+}
+
+sub getIP_hades2gsi() {
+ my ($ip_hades) = @_;
+ my $ip_gsi = "";
+ if (exists $IP_GSI_href->{$ip_hades}) {
+ $ip_gsi = $IP_GSI_href->{$ip_hades};
+ } else {
+ print "getIP_hades2gsi(): WARNING - unknown hades ip $ip_hades";
+ }
+ return $ip_gsi;
+}
+
+
+
+
+sub isFileDefined() {
+ my ($fh, $name) = @_;
+
+ if (!$fh) {
+ my $txt = "\nError! Could not open file \'$name\'. Exit.\n";
+ print STDERR $txt;
+ print $txt;
+ exit(128);
+ }
+
+ return 0;
+}
+
+sub writeArgs2file() {
+ my $fileName = $0;
+
+ #- Replace .pl with .sh
+ $fileName =~ s/\.pl/\.sh/;
+
+ my $fh = new FileHandle(">./$fileName");
+ if (!$fh) {
+ my $txt = "\nError! Could not open file \"$fileName\" for output. Exit.\n";
+ print STDERR $txt;
+ print $txt;
+ exit(128);
+ }
+
+ my $current_dir = cwd();
+ my $ptogName = $0;
+
+
+ #- Write to the file the script name itself
+ print $fh $0;
+
+ #- Write to the file the arguments
+ foreach my $arg (@arg_list) {
+ print $fh " $arg";
+ }
+ print $fh ";\n";
+ ## do not start te files by default. user should actively restart the file JAM 29-06-2018
+ # here put command to start the correct file prefix in bnet builders:
+ #my $prefix=$EB_Args_href->{0}->{'PREFIX'};
+ #print $fh "/usr/bin/wget -a /tmp/EB_filestart.log -O /tmp/EB_fileres.txt \"http://lxhadeb03:8090/Master/BNET/StartRun/execute?prefix=$prefix&oninit=10\"\n";
+ $fh->close();
+
+ system("chmod 755 ./$fileName");
+}
+
trbcmd w 0xfffe 0xc5 0x4000
-
+#exec_cmd{con} echo Start test
+#trbcmd setbit 0x7093 0x22 0x80000000
+#trbcmd r 0x7093 0x22
+#trbcmd clearbit 0xfffd 0x22 0x80000000
+#trbcmd r 0x7093 0x22
+#trbcmd r 0xfffd 0x22
#Retransmission on as early as possible
trbcmd setbit 0xfffd 0x22 0x08000000 #enable retransmission on oep
!ifndef MDCNOCOMPILETIME
exec_cmd{nofork} check_compile_time oep 0x4c3b2466
!endif
+wait
!ifndef NOMDC
#0x8410 #Hub2
#0x8600 #Hub2
#0x8700 #Hub2
+0x8700 #FWALL1
+0x8701 #FWALL2
+0x8702 #FWALL3
0x8800 #Hub2
0x8880 #StartTRB3
0x8890 #VetoTRB3
next if $o->{$b}[0] != 0;
next if $o->{$b}[3] != 0;
- my $str = sprintf("%04x\n",$b);
- print "Without IP: $str. Rebooting.";
+ my $str = sprintf("%04x",$b);
+ print "Without IP: $str. Rebooting.\n";
system("trbcmd reload 0x$str");
}
-print "If some errors or boards are listed above: Restart DAQ. \n If not: continue;";
+print "\n If some errors or boards are listed above: Restart DAQ. \n If not: continue \n\n";
foreach my $h (@boardstoloadthresh) {
- my $cmd = sprintf("ssh lxhadesdaq 'sleep 2 && /home/hadaq/trbsoft/hadesdaq/utils/RICH_Thr_Call.sh --loading-file /home/hadaq/hadesdaq/rich/trb_dirich_threshold/threshold_files/standard_baselines.thr -l 0 -t 0x%04x 70' &",$h);
+ my $cmd = sprintf("ssh lxhadesdaqp 'sleep 2 && /home/hadaq/trbsoft/hadesdaq/utils/RICH_Thr_Call.sh --loading-file /home/hadaq/hadesdaq/rich/trb_dirich_threshold/threshold_files/standard_baselines.thr -l 0 -t 0x%04x 70' &",$h);
printf("Loading thresholds for %04x\n",$h);
}
# Address # S/N # FPGA
-0x5000 004 1
-0x5001 005 1
-0x5002 006 1
-0x5003 003 1
-0x5004 007 1
+0x5003 004 1 # StartY2
+0x5000 005 1 # StartX2
+0x5001 006 1 # StartY1
+0x5002 007 1 # StartX1
+
+# 0x5000 004 1 #
+# 0x5001 005 1 #
+# 0x5002 006 1 #
+# 0x5003 007 1 #
+
+0x5004 003 1 # Veto
0xfe58 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x00000000 0x00000000
-0x5000 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x00000000 0x00000000
-0x5001 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x000000ff 0x00000000
-0x5002 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x00000000 0x00000000
-0x5003 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x000000ff 0x00000000
+0x5000 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x000000ff 0x00000000
+0x5001 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x00000000 0x00000000
+0x5002 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x000000ff 0x00000000
+0x5003 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x00000000 0x00000000
0x5004 0 0x50003000 0x80640096 0x000000ff 0x00000000 0x00000010 0x000000ff 0x00000000
trbcmd w 0x5003 0xe012 0x1fe #activate 8 channels
trbcmd w 0x5004 0xe012 0x1fe #activate 8 channels
-trbcmd w 0x5000 0xe011 0x0 #invert 8 channels
-trbcmd w 0x5001 0xe011 0x1fe #invert 8 channels
-trbcmd w 0x5002 0xe011 0x0 #invert 8 channels
-trbcmd w 0x5003 0xe011 0x1fe #invert 8 channels
+trbcmd w 0x5000 0xe011 0x1fe #invert 8 channels
+trbcmd w 0x5001 0xe011 0x0 #dont invert 8 channels
+trbcmd w 0x5002 0xe011 0x1fe #invert 8 channels
+trbcmd w 0x5003 0xe011 0x0 #dont invert 8 channels
trbcmd w 0x5004 0xe011 0x1fe #invert 8 channels
# set the LV of preamp of DiRich5d1
-2023/12/22 21:45:42 endpoint: 0x5000, chain: 00, channel: 0 threshold: 0x4850, uid: 0
-2023/12/22 21:45:42 endpoint: 0x5000, chain: 00, channel: 1 threshold: 0x529f, uid: 0
-2023/12/22 21:45:42 endpoint: 0x5000, chain: 00, channel: 2 threshold: 0x5ba3, uid: 0
-2023/12/22 21:45:42 endpoint: 0x5000, chain: 00, channel: 3 threshold: 0x510e, uid: 0
-2023/12/22 21:45:42 endpoint: 0x5000, chain: 00, channel: 4 threshold: 0x4e42, uid: 0
-2023/12/22 21:45:42 endpoint: 0x5000, chain: 00, channel: 5 threshold: 0x5b5f, uid: 0
-2023/12/22 21:45:42 endpoint: 0x5000, chain: 00, channel: 6 threshold: 0x4a09, uid: 0
-2023/12/22 21:45:42 endpoint: 0x5000, chain: 00, channel: 7 threshold: 0x53a4, uid: 0
-2023/12/22 21:45:56 endpoint: 0x5001, chain: 00, channel: 0 threshold: 0x643d, uid: 0
-2023/12/22 21:45:56 endpoint: 0x5001, chain: 00, channel: 1 threshold: 0x6583, uid: 0
-2023/12/22 21:45:56 endpoint: 0x5001, chain: 00, channel: 2 threshold: 0x5f65, uid: 0
-2023/12/22 21:45:56 endpoint: 0x5001, chain: 00, channel: 3 threshold: 0x638f, uid: 0
-2023/12/22 21:45:56 endpoint: 0x5001, chain: 00, channel: 4 threshold: 0x62d5, uid: 0
-2023/12/22 21:45:56 endpoint: 0x5001, chain: 00, channel: 5 threshold: 0x5e59, uid: 0
-2023/12/22 21:45:56 endpoint: 0x5001, chain: 00, channel: 6 threshold: 0x648f, uid: 0
-2023/12/22 21:45:56 endpoint: 0x5001, chain: 00, channel: 7 threshold: 0x65ed, uid: 0
-2023/12/22 21:46:11 endpoint: 0x5002, chain: 00, channel: 0 threshold: 0x47f0, uid: 0
-2023/12/22 21:46:11 endpoint: 0x5002, chain: 00, channel: 1 threshold: 0x4cc6, uid: 0
-2023/12/22 21:46:11 endpoint: 0x5002, chain: 00, channel: 2 threshold: 0x5bfb, uid: 0
-2023/12/22 21:46:11 endpoint: 0x5002, chain: 00, channel: 3 threshold: 0x523d, uid: 0
-2023/12/22 21:46:11 endpoint: 0x5002, chain: 00, channel: 4 threshold: 0x4d53, uid: 0
-2023/12/22 21:46:11 endpoint: 0x5002, chain: 00, channel: 5 threshold: 0x5b95, uid: 0
-2023/12/22 21:46:11 endpoint: 0x5002, chain: 00, channel: 6 threshold: 0x463e, uid: 0
-2023/12/22 21:46:11 endpoint: 0x5002, chain: 00, channel: 7 threshold: 0x5302, uid: 0
-2023/12/22 21:46:25 endpoint: 0x5003, chain: 00, channel: 0 threshold: 0x635f, uid: 0
-2023/12/22 21:46:25 endpoint: 0x5003, chain: 00, channel: 1 threshold: 0x6825, uid: 0
-2023/12/22 21:46:25 endpoint: 0x5003, chain: 00, channel: 2 threshold: 0x5d1b, uid: 0
-2023/12/22 21:46:25 endpoint: 0x5003, chain: 00, channel: 3 threshold: 0x68bb, uid: 0
-2023/12/22 21:46:25 endpoint: 0x5003, chain: 00, channel: 4 threshold: 0x60ef, uid: 0
-2023/12/22 21:46:25 endpoint: 0x5003, chain: 00, channel: 5 threshold: 0x5d0b, uid: 0
-2023/12/22 21:46:25 endpoint: 0x5003, chain: 00, channel: 6 threshold: 0x6237, uid: 0
-2023/12/22 21:46:25 endpoint: 0x5003, chain: 00, channel: 7 threshold: 0x65d3, uid: 0
-2023/12/22 21:46:40 endpoint: 0x5004, chain: 00, channel: 0 threshold: 0x7c87, uid: 0
-2023/12/22 21:46:40 endpoint: 0x5004, chain: 00, channel: 1 threshold: 0x7c57, uid: 0
-2023/12/22 21:46:40 endpoint: 0x5004, chain: 00, channel: 2 threshold: 0x7b55, uid: 0
-2023/12/22 21:46:40 endpoint: 0x5004, chain: 00, channel: 3 threshold: 0x7b4b, uid: 0
-2023/12/22 21:46:40 endpoint: 0x5004, chain: 00, channel: 4 threshold: 0x7c07, uid: 0
-2023/12/22 21:46:40 endpoint: 0x5004, chain: 00, channel: 5 threshold: 0x7c29, uid: 0
-2023/12/22 21:46:40 endpoint: 0x5004, chain: 00, channel: 6 threshold: 0x7bee, uid: 0
-2023/12/22 21:46:40 endpoint: 0x5004, chain: 00, channel: 7 threshold: 0x7ca3, uid: 0
+2024/02/01 14:19:38 endpoint: 0x5000, chain: 00, channel: 0 threshold: 0x616d, uid: 0
+2024/02/01 14:19:38 endpoint: 0x5000, chain: 00, channel: 1 threshold: 0x6063, uid: 0
+2024/02/01 14:19:38 endpoint: 0x5000, chain: 00, channel: 2 threshold: 0xfffa, uid: 0
+2024/02/01 14:19:38 endpoint: 0x5000, chain: 00, channel: 3 threshold: 0x5fb3, uid: 0
+2024/02/01 14:19:38 endpoint: 0x5000, chain: 00, channel: 4 threshold: 0x6009, uid: 0
+2024/02/01 14:19:38 endpoint: 0x5000, chain: 00, channel: 5 threshold: 0xfffa, uid: 0
+2024/02/01 14:19:38 endpoint: 0x5000, chain: 00, channel: 6 threshold: 0x6145, uid: 0
+2024/02/01 14:19:38 endpoint: 0x5000, chain: 00, channel: 7 threshold: 0x60d5, uid: 0
+2024/02/01 14:19:52 endpoint: 0x5001, chain: 00, channel: 0 threshold: 0x54d5, uid: 0
+2024/02/01 14:19:52 endpoint: 0x5001, chain: 00, channel: 1 threshold: 0x5600, uid: 0
+2024/02/01 14:19:52 endpoint: 0x5001, chain: 00, channel: 2 threshold: 0x000f, uid: 0
+2024/02/01 14:19:52 endpoint: 0x5001, chain: 00, channel: 3 threshold: 0x583e, uid: 0
+2024/02/01 14:19:52 endpoint: 0x5001, chain: 00, channel: 4 threshold: 0x5706, uid: 0
+2024/02/01 14:19:52 endpoint: 0x5001, chain: 00, channel: 5 threshold: 0x000f, uid: 0
+2024/02/01 14:19:52 endpoint: 0x5001, chain: 00, channel: 6 threshold: 0x5401, uid: 0
+2024/02/01 14:19:52 endpoint: 0x5001, chain: 00, channel: 7 threshold: 0x5943, uid: 0
+2024/02/01 14:20:07 endpoint: 0x5002, chain: 00, channel: 0 threshold: 0x5f89, uid: 0
+2024/02/01 14:20:07 endpoint: 0x5002, chain: 00, channel: 1 threshold: 0x61eb, uid: 0
+2024/02/01 14:20:07 endpoint: 0x5002, chain: 00, channel: 2 threshold: 0xfffa, uid: 0
+2024/02/01 14:20:07 endpoint: 0x5002, chain: 00, channel: 3 threshold: 0x6191, uid: 0
+2024/02/01 14:20:07 endpoint: 0x5002, chain: 00, channel: 4 threshold: 0x5e9b, uid: 0
+2024/02/01 14:20:07 endpoint: 0x5002, chain: 00, channel: 5 threshold: 0xfffa, uid: 0
+2024/02/01 14:20:07 endpoint: 0x5002, chain: 00, channel: 6 threshold: 0x5e7b, uid: 0
+2024/02/01 14:20:07 endpoint: 0x5002, chain: 00, channel: 7 threshold: 0x5fc7, uid: 0
+2024/02/01 14:20:21 endpoint: 0x5003, chain: 00, channel: 0 threshold: 0x54cd, uid: 0
+2024/02/01 14:20:21 endpoint: 0x5003, chain: 00, channel: 1 threshold: 0x5913, uid: 0
+2024/02/01 14:20:21 endpoint: 0x5003, chain: 00, channel: 2 threshold: 0x000f, uid: 0
+2024/02/01 14:20:21 endpoint: 0x5003, chain: 00, channel: 3 threshold: 0x5833, uid: 0
+2024/02/01 14:20:21 endpoint: 0x5003, chain: 00, channel: 4 threshold: 0x575a, uid: 0
+2024/02/01 14:20:21 endpoint: 0x5003, chain: 00, channel: 5 threshold: 0x000f, uid: 0
+2024/02/01 14:20:21 endpoint: 0x5003, chain: 00, channel: 6 threshold: 0x5657, uid: 0
+2024/02/01 14:20:21 endpoint: 0x5003, chain: 00, channel: 7 threshold: 0x58e2, uid: 0
+2024/02/01 14:20:36 endpoint: 0x5004, chain: 00, channel: 0 threshold: 0x7cf9, uid: 0
+2024/02/01 14:20:36 endpoint: 0x5004, chain: 00, channel: 1 threshold: 0x7d79, uid: 0
+2024/02/01 14:20:36 endpoint: 0x5004, chain: 00, channel: 2 threshold: 0x7d85, uid: 0
+2024/02/01 14:20:36 endpoint: 0x5004, chain: 00, channel: 3 threshold: 0x7bd1, uid: 0
+2024/02/01 14:20:36 endpoint: 0x5004, chain: 00, channel: 4 threshold: 0x7c01, uid: 0
+2024/02/01 14:20:36 endpoint: 0x5004, chain: 00, channel: 5 threshold: 0x7c6d, uid: 0
+2024/02/01 14:20:36 endpoint: 0x5004, chain: 00, channel: 6 threshold: 0x7b2f, uid: 0
+2024/02/01 14:20:36 endpoint: 0x5004, chain: 00, channel: 7 threshold: 0x7cdb, uid: 0
0xfe71 10 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0xffffffff 0x0000ffff 0x00000000 0x00000000
0xfe71 2 0x00ffffff 0x00030000 0x00000400
- 0xfe61 0 0x000fffff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
- 0x8a00 1 0x00000015 0x00000000
- 0x8a01 1 0x00000051 0x00015100
- 0x8a02 1 0x00000000 0x00015400
- 0x8a03 1 0x00000054 0x00000000
- 0x8a04 1 0x00000015 0x00015400
- 0x8a05 1 0x00000000 0x00015100
+ 0xfe61 0 0xffffffff 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
+ 0x8a00 1 0x00000045 0x00015400
+ 0x8a01 1 0x00000051 0x00014500
+ 0x8a02 1 0x00000015 0x00015400
+ 0x8a03 1 0x00000054 0x00015400
+ 0x8a04 1 0x00000015 0x00005500
+ 0x8a05 1 0x00000054 0x00015100
#left half of crate on output 1, right half on output 2
# 0x0100 0 0x00007e7e 0x00007e7e 0x00000000 0x00000000 0x00000000 0x00007e7e 0x00000000 0x00000000 0x00000000
- 0x0100 0 0x00003f7f 0x00003e3e 0x00000000 0x00000000 0x00000000 0x00003f3f 0x00000000 0x00000000 0x00000000
+# 0x0100 0 0x00003f7f 0x00003e3e 0x00000000 0x00000000 0x00000000 0x00003f3f 0x00000000 0x00000000 0x00000000
+ 0x0100 0 0xffffffff 0x00000000 0x00003f3f 0x00000000 0x00000000 0x00000000 0x00003f3f 0x00000000 0x00000000
#0..5: output 1, #8..13 output 2, #6 from pulser addon
0x0100 2 0x00007c7c 0x00020000 0x00000200
-20230530_FW_analogsum_as_PT8.trbcmd
\ No newline at end of file
+triggerbox_secmult2_as_outp4_forHKR_240124.trbcmd
\ No newline at end of file
--- /dev/null
+w 0x0010 40960 0x007c0112
+w 0x0010 40961 0x00700112
+w 0x0010 40962 0x00700112
+w 0x0010 40963 0x00700112
+w 0x0010 40964 0x007c0112
+w 0x0010 40965 0x00700112
+w 0x0010 40966 0x00700112
+w 0x0010 40967 0x00700112
+w 0x0010 40968 0x007c0112
+w 0x0010 40969 0x00700112
+w 0x0010 40970 0x00700112
+w 0x0010 40971 0x00700112
+w 0x0010 40972 0x00780112
+w 0x0010 40973 0x00700112
+w 0x0010 40974 0x00700112
+w 0x0010 40975 0x00700112
+w 0x0010 40976 0x007c0112
+w 0x0010 40977 0x00700112
+w 0x0010 40978 0x00700112
+w 0x0010 40979 0x00700112
+w 0x0010 40980 0x007c0112
+w 0x0010 40981 0x00700112
+w 0x0010 40982 0x00700112
+w 0x0010 40983 0x00700112
+w 0x0010 40984 0x00000002
+w 0x0010 40985 0x0000000a
+w 0x0010 40986 0x00000000
+w 0x0010 40987 0x00000002
+w 0x0010 40988 0x00000000
+w 0x0010 40989 0x00000000
+w 0x0010 40990 0x00000000
+w 0x0010 40991 0x00000000
+w 0x0010 40992 0x0004019a
+w 0x0010 40993 0x0004019a
+w 0x0010 40994 0x0004019a
+w 0x0010 40995 0x0004019a
+w 0x0010 40996 0x0004019a
+w 0x0010 40997 0x0004019a
+w 0x0010 40998 0x00000000
+w 0x0010 40999 0x00000000
+w 0x0010 41000 0x0004019a
+w 0x0010 41001 0x0004019a
+w 0x0010 41002 0x0004019a
+w 0x0010 41003 0x0004019a
+w 0x0010 41004 0x00000000
+w 0x0010 41005 0x0004019a
+w 0x0010 41006 0x0004019a
+w 0x0010 41007 0x00000000
+w 0x0010 41008 0x00380006
+w 0x0010 41009 0x00000006
+w 0x0010 41010 0x00000006
+w 0x0010 41011 0x00000000
+w 0x0010 41012 0x00000000
+w 0x0010 41013 0x00000000
+w 0x0010 41014 0x00000000
+w 0x0010 41015 0x00000000
+w 0x0010 41016 0x00000002
+w 0x0010 41017 0x00000002
+w 0x0010 41018 0x00000002
+w 0x0010 41019 0x00000002
+w 0x0010 41020 0x00000002
+w 0x0010 41021 0x00000002
+w 0x0010 41022 0x00000000
+w 0x0010 41023 0x00000000
+w 0x0010 41024 0x0000009a
+w 0x0010 41025 0x0000009a
+w 0x0010 41026 0x0000001a
+w 0x0010 41027 0x00000000
+w 0x0010 41028 0x00000000
+w 0x0010 41029 0x00000000
+w 0x0010 41030 0x00000000
+w 0x0010 41031 0x00000000
+w 0x0010 41032 0x00000000
+w 0x0010 41033 0x00000000
+w 0x0010 41034 0x00000000
+w 0x0010 41035 0x00000000
+w 0x0010 41036 0x00000000
+w 0x0010 41037 0x00000000
+w 0x0010 41038 0x00000000
+w 0x0010 41039 0x00000002
+w 0x0010 41088 0x0000000e
+w 0x0010 41089 0x00000000
+w 0x0010 41090 0x00000000
+w 0x0010 41091 0x00000000
+w 0x0010 41092 0x000000e0
+w 0x0010 41093 0x00000000
+w 0x0010 41094 0x00000000
+w 0x0010 41095 0x00000000
+w 0x0010 41096 0x00000e00
+w 0x0010 41097 0x00000000
+w 0x0010 41098 0x00000000
+w 0x0010 41099 0x00000000
+w 0x0010 41100 0x0000e000
+w 0x0010 41101 0x00000000
+w 0x0010 41102 0x00000000
+w 0x0010 41103 0x00000000
+w 0x0010 41104 0x000e0000
+w 0x0010 41105 0x00000000
+w 0x0010 41106 0x00000000
+w 0x0010 41107 0x00000000
+w 0x0010 41108 0x00e00000
+w 0x0010 41109 0x00000000
+w 0x0010 41110 0x00000000
+w 0x0010 41111 0x00000000
+w 0x0010 41112 0x00000000
+w 0x0010 41113 0x00000100
+w 0x0010 41114 0x00000000
+w 0x0010 41115 0x00000000
+w 0x0010 41116 0x00000000
+w 0x0010 41117 0x00000200
+w 0x0010 41118 0x00000000
+w 0x0010 41119 0x00000000
+w 0x0010 41120 0x00000000
+w 0x0010 41121 0x00000400
+w 0x0010 41122 0x00000000
+w 0x0010 41123 0x00000000
+w 0x0010 41124 0x00000000
+w 0x0010 41125 0x00000800
+w 0x0010 41126 0x00000000
+w 0x0010 41127 0x00000000
+w 0x0010 41128 0x00000000
+w 0x0010 41129 0x00002000
+w 0x0010 41130 0x00000000
+w 0x0010 41131 0x00000000
+w 0x0010 41132 0x00000000
+w 0x0010 41133 0x00004000
+w 0x0010 41134 0x00000000
+w 0x0010 41135 0x00000000
+w 0x0010 41136 0x00000000
+w 0x0010 41137 0x00000000
+w 0x0010 41138 0x00000000
+w 0x0010 41139 0x00000000
+w 0x0010 41140 0x00000000
+w 0x0010 41141 0x00000000
+w 0x0010 41142 0x00000000
+w 0x0010 41143 0x00000000
+w 0x0010 41144 0x00000000
+w 0x0010 41145 0x00000000
+w 0x0010 41146 0x00000000
+w 0x0010 41147 0x00000000
+w 0x0010 41148 0x00000000
+w 0x0010 41149 0x00000000
+w 0x0010 41150 0x00000000
+w 0x0010 41151 0x00000000
+w 0x0010 41216 0x00000050
+w 0x0010 41217 0x00000051
+w 0x0010 41218 0x00000052
+w 0x0010 41219 0x00000000
+w 0x0010 41220 0x00000000
+w 0x0010 41221 0x00000000
+w 0x0010 41222 0x00000000
+w 0x0010 41223 0x00000000
+w 0x0010 41224 0x0000003b
+w 0x0010 41225 0x0000003f
+w 0x0010 41226 0x0000004b
+w 0x0010 41227 0x0000004f
+w 0x0010 41228 0x00000044
+w 0x0010 41229 0x00000045
+w 0x0010 41230 0x00000046
+w 0x0010 41231 0x00000000
+w 0x0010 41232 0x0000005e
+w 0x0010 41233 0x0000005e
+w 0x0010 41234 0x0000005f
+w 0x0010 41235 0x00000000
+w 0x0010 41236 0x00000000
+w 0x0010 41237 0x00000000
+w 0x0010 41238 0x00000000
+w 0x0010 41239 0x00000000
+w 0x0010 41240 0x00000000
+w 0x0010 41241 0x00000000
+w 0x0010 41242 0x00000000
+w 0x0010 41243 0x00000000
+w 0x0010 41244 0x00000000
+w 0x0010 41245 0x00000000
+w 0x0010 41246 0x00000000
+w 0x0010 41247 0x00000050
+w 0x0010 41248 0x78002820
+w 0x0010 41249 0x78042921
+w 0x0010 41250 0x78082a22
+w 0x0010 41251 0x780c2b23
+w 0x0010 41252 0x78102d24
+w 0x0010 41253 0x78142e25
+w 0x0010 41254 0x70626161
+w 0x0010 41255 0x00000000
+w 0x0010 41256 0x00000000
+w 0x0010 41257 0x00000000
+w 0x0010 41258 0x00000000
+w 0x0010 41259 0x00000000
+w 0x0010 41260 0x00000000
+w 0x0010 41261 0x00000000
+w 0x0010 41262 0x00000000
+w 0x0010 41263 0x68300019
+w 0x0010 41280 0x00000001
+w 0x0010 41281 0x00000003
+w 0x0010 41282 0x00000002
+w 0x0010 41283 0x0000000f
+w 0x0010 41284 0x00000001
+w 0x0010 41285 0x00000002
+w 0x0010 41286 0x00000000
+w 0x0010 41287 0x00000000
+w 0x0010 41312 0x000000d1
+w 0x0010 41313 0x000000d2
+w 0x0010 41314 0x000000d3
+w 0x0010 41315 0x000000c6
+w 0x0010 41316 0x000000d8
+w 0x0010 41317 0x000000d9
+w 0x0010 41318 0x000000da
+w 0x0010 41319 0x00000071
+w 0x0010 41320 0x00000072
+w 0x0010 41321 0x00000073
+w 0x0010 41322 0x0000008e
+w 0x0010 41323 0x00000089
+w 0x0010 41324 0x00000088
+w 0x0010 41325 0x00000000
+w 0x0010 41326 0x0000009f
+w 0x0010 41327 0x00000092
+w 0x0010 41344 0x003f0000
+w 0x0010 41345 0x00000000
+w 0x0010 41346 0x00000000
+w 0x0010 41347 0x00000000
+w 0x0010 41348 0x00000000
+w 0x0010 41349 0x00eeeeee
+w 0x0010 41350 0x00000000
+w 0x0010 41351 0x00000000
+w 0x0010 41352 0x003f0000
+w 0x0010 41353 0x00000000
+w 0x0010 41354 0x00000000
+w 0x0010 41355 0x00000000
+w 0x0010 41356 0x003f0000
+w 0x0010 41357 0x00000000
+w 0x0010 41358 0x00000000
+w 0x0010 41359 0x00000000
+w 0x0010 41360 0x00000000
+w 0x0010 41361 0x00eeeeee
+w 0x0010 41362 0x00000000
+w 0x0010 41363 0x00000000
+w 0x0010 41364 0x00000fc0
+w 0x0010 41365 0x00000000
+w 0x0010 41366 0x00000000
+w 0x0010 41367 0x00000000
+w 0x0010 41368 0x00000000
+w 0x0010 41369 0x00000000
+w 0x0010 41370 0x00000000
+w 0x0010 41371 0x00000000
+w 0x0010 41372 0x00000000
+w 0x0010 41373 0x00000000
+w 0x0010 41374 0x00000000
+w 0x0010 41375 0x00000000
+w 0x0010 41408 0x00000000
+w 0x0010 41472 0x00000000
+w 0x0010 41473 0x00010000
+w 0x0010 41474 0x00000000
+w 0x0010 41475 0x00000000
+w 0x0010 41476 0x00000000
+w 0x0010 41477 0x00000000
+w 0x0010 41478 0x00000000
+w 0x0010 41479 0x00000000
+w 0x0010 41480 0x00000000
+w 0x0010 41481 0x00000000
+w 0x0010 41482 0x00000000
+w 0x0010 41483 0x00000001
+w 0x0010 41484 0x00000000
+w 0x0010 41485 0x00000000
+w 0x0010 41486 0x00000000
+w 0x0010 41487 0x00000000
+w 0x0010 41488 0x00000000
+w 0x0010 41489 0x00000000
+w 0x0010 41490 0x00400000
+w 0x0010 41491 0x00000008
+w 0x0010 41492 0x00000000
+w 0x0010 41493 0x00000000
+w 0x0010 41494 0x00000000
+w 0x0010 41495 0x00000000
+w 0x0010 41496 0x00000000
+w 0x0010 41497 0x00000000
+w 0x0010 41498 0x00008000
+w 0x0010 41499 0x00000000
+w 0x0010 41500 0x00000000
+w 0x0010 41501 0x00000000
+w 0x0010 41502 0x00000000
+w 0x0010 41503 0x00000000
+w 0x0010 41504 0x00000000
+w 0x0010 41505 0x00000000
+w 0x0010 41506 0x00000000
+w 0x0010 41507 0x00000010
+w 0x0010 41508 0x00000000
+w 0x0010 41509 0x00000000
+w 0x0010 41510 0x00000000
+w 0x0010 41511 0x00000000
+w 0x0010 41512 0x00000000
+w 0x0010 41513 0x00000000
+w 0x0010 41514 0x00000000
+w 0x0010 41515 0x00000020
+w 0x0010 41516 0x00000000
+w 0x0010 41517 0x00000000
+w 0x0010 41518 0x00000000
+w 0x0010 41519 0x00000000
+w 0x0010 41520 0x00000000
+w 0x0010 41521 0x00000000
+w 0x0010 41522 0x00000002
+w 0x0010 41523 0x00000000
+w 0x0010 41524 0x00000000
+w 0x0010 41525 0x00000000
+w 0x0010 41526 0x00000000
+w 0x0010 41527 0x00000000
+w 0x0010 41528 0x00000000
+w 0x0010 41529 0x00000000
+w 0x0010 41530 0x00000004
+w 0x0010 41531 0x00000000
+w 0x0010 41532 0x00000000
+w 0x0010 41533 0x00000000
+w 0x0010 41534 0x00000000
+w 0x0010 41535 0x00000000
+w 0x0010 41728 0x00000000
+w 0x0010 41729 0x00010000
+w 0x0010 41730 0x00000000
+w 0x0010 41731 0x00000000
+w 0x0010 41732 0x00000000
+w 0x0010 41733 0x00000000
+w 0x0010 41734 0x00000000
+w 0x0010 41735 0x00000000
+w 0x0010 41736 0x00000000
+w 0x0010 41737 0x00000000
+w 0x0010 41738 0x00000000
+w 0x0010 41739 0x00000001
+w 0x0010 41740 0x00000000
+w 0x0010 41741 0x00000000
+w 0x0010 41742 0x00000000
+w 0x0010 41743 0x00000000
+w 0x0010 41744 0x00000000
+w 0x0010 41745 0x00000000
+w 0x0010 41746 0x00400000
+w 0x0010 41747 0x00000008
+w 0x0010 41748 0x00000000
+w 0x0010 41749 0x00000000
+w 0x0010 41750 0x00000000
+w 0x0010 41751 0x00000000
+w 0x0010 41752 0x00000000
+w 0x0010 41753 0x00000000
+w 0x0010 41754 0x00008000
+w 0x0010 41755 0x00000000
+w 0x0010 41756 0x00000000
+w 0x0010 41757 0x00000000
+w 0x0010 41758 0x00000000
+w 0x0010 41759 0x00000000
+w 0x0010 41760 0x00000000
+w 0x0010 41761 0x00000000
+w 0x0010 41762 0x00000000
+w 0x0010 41763 0x00000010
+w 0x0010 41764 0x00000000
+w 0x0010 41765 0x00000000
+w 0x0010 41766 0x00000000
+w 0x0010 41767 0x00000000
+w 0x0010 41768 0x00000000
+w 0x0010 41769 0x00000000
+w 0x0010 41770 0x00000000
+w 0x0010 41771 0x00000020
+w 0x0010 41772 0x00000000
+w 0x0010 41773 0x00000000
+w 0x0010 41774 0x00000000
+w 0x0010 41775 0x00000000
+w 0x0010 41776 0x00000000
+w 0x0010 41777 0x00000000
+w 0x0010 41778 0x00000002
+w 0x0010 41779 0x00000000
+w 0x0010 41780 0x00000000
+w 0x0010 41781 0x00000000
+w 0x0010 41782 0x00000000
+w 0x0010 41783 0x00000000
+w 0x0010 41784 0x00000000
+w 0x0010 41785 0x00000000
+w 0x0010 41786 0x00000004
+w 0x0010 41787 0x00000000
+w 0x0010 41788 0x00000000
+w 0x0010 41789 0x00000000
+w 0x0010 41790 0x00000000
+w 0x0010 41791 0x00000000
--- /dev/null
+w 0x0010 40960 0x007c0112
+w 0x0010 40961 0x00700112
+w 0x0010 40962 0x00700112
+w 0x0010 40963 0x00700112
+w 0x0010 40964 0x007c0112
+w 0x0010 40965 0x00700112
+w 0x0010 40966 0x00700112
+w 0x0010 40967 0x00700112
+w 0x0010 40968 0x007c0112
+w 0x0010 40969 0x00700112
+w 0x0010 40970 0x00700112
+w 0x0010 40971 0x00700112
+w 0x0010 40972 0x00780112
+w 0x0010 40973 0x00700112
+w 0x0010 40974 0x00700112
+w 0x0010 40975 0x00700112
+w 0x0010 40976 0x007c0112
+w 0x0010 40977 0x00700112
+w 0x0010 40978 0x00700112
+w 0x0010 40979 0x00700112
+w 0x0010 40980 0x007c0112
+w 0x0010 40981 0x00700112
+w 0x0010 40982 0x00700112
+w 0x0010 40983 0x00700112
+w 0x0010 40984 0x00000002
+w 0x0010 40985 0x0000000a
+w 0x0010 40986 0x00000000
+w 0x0010 40987 0x00000002
+w 0x0010 40988 0x00000000
+w 0x0010 40989 0x00000000
+w 0x0010 40990 0x00000000
+w 0x0010 40991 0x00000000
+w 0x0010 40992 0x0004019a
+w 0x0010 40993 0x0004019a
+w 0x0010 40994 0x0004019a
+w 0x0010 40995 0x0004019a
+w 0x0010 40996 0x0004019a
+w 0x0010 40997 0x0004019a
+w 0x0010 40998 0x00000000
+w 0x0010 40999 0x00000000
+w 0x0010 41000 0x0004019a
+w 0x0010 41001 0x0004019a
+w 0x0010 41002 0x0004019a
+w 0x0010 41003 0x0004019a
+w 0x0010 41004 0x00000000
+w 0x0010 41005 0x0004019a
+w 0x0010 41006 0x0004019a
+w 0x0010 41007 0x00000000
+w 0x0010 41008 0x00380006
+w 0x0010 41009 0x00000006
+w 0x0010 41010 0x00000006
+w 0x0010 41011 0x00000000
+w 0x0010 41012 0x00000000
+w 0x0010 41013 0x00000000
+w 0x0010 41014 0x00000000
+w 0x0010 41015 0x00000000
+w 0x0010 41016 0x00000002
+w 0x0010 41017 0x00000002
+w 0x0010 41018 0x00000002
+w 0x0010 41019 0x00000002
+w 0x0010 41020 0x00000002
+w 0x0010 41021 0x00000002
+w 0x0010 41022 0x00000000
+w 0x0010 41023 0x00000000
+w 0x0010 41024 0x0000009a
+w 0x0010 41025 0x0000009a
+w 0x0010 41026 0x0000001a
+w 0x0010 41027 0x00000000
+w 0x0010 41028 0x00000000
+w 0x0010 41029 0x00000000
+w 0x0010 41030 0x00000000
+w 0x0010 41031 0x00000000
+w 0x0010 41032 0x00000000
+w 0x0010 41033 0x00000000
+w 0x0010 41034 0x00000000
+w 0x0010 41035 0x00000000
+w 0x0010 41036 0x00000000
+w 0x0010 41037 0x00000000
+w 0x0010 41038 0x00000000
+w 0x0010 41039 0x00000002
+w 0x0010 41088 0x0000000e
+w 0x0010 41089 0x00000000
+w 0x0010 41090 0x00000000
+w 0x0010 41091 0x00000000
+w 0x0010 41092 0x000000e0
+w 0x0010 41093 0x00000000
+w 0x0010 41094 0x00000000
+w 0x0010 41095 0x00000000
+w 0x0010 41096 0x00000e00
+w 0x0010 41097 0x00000000
+w 0x0010 41098 0x00000000
+w 0x0010 41099 0x00000000
+w 0x0010 41100 0x0000e000
+w 0x0010 41101 0x00000000
+w 0x0010 41102 0x00000000
+w 0x0010 41103 0x00000000
+w 0x0010 41104 0x000e0000
+w 0x0010 41105 0x00000000
+w 0x0010 41106 0x00000000
+w 0x0010 41107 0x00000000
+w 0x0010 41108 0x00e00000
+w 0x0010 41109 0x00000000
+w 0x0010 41110 0x00000000
+w 0x0010 41111 0x00000000
+w 0x0010 41112 0x00000000
+w 0x0010 41113 0x00000100
+w 0x0010 41114 0x00000000
+w 0x0010 41115 0x00000000
+w 0x0010 41116 0x00000000
+w 0x0010 41117 0x00000200
+w 0x0010 41118 0x00000000
+w 0x0010 41119 0x00000000
+w 0x0010 41120 0x00000000
+w 0x0010 41121 0x00000400
+w 0x0010 41122 0x00000000
+w 0x0010 41123 0x00000000
+w 0x0010 41124 0x00000000
+w 0x0010 41125 0x00000800
+w 0x0010 41126 0x00000000
+w 0x0010 41127 0x00000000
+w 0x0010 41128 0x00000000
+w 0x0010 41129 0x00002000
+w 0x0010 41130 0x00000000
+w 0x0010 41131 0x00000000
+w 0x0010 41132 0x00000000
+w 0x0010 41133 0x00004000
+w 0x0010 41134 0x00000000
+w 0x0010 41135 0x00000000
+w 0x0010 41136 0x00000000
+w 0x0010 41137 0x00000000
+w 0x0010 41138 0x00000000
+w 0x0010 41139 0x00000000
+w 0x0010 41140 0x00000000
+w 0x0010 41141 0x00000000
+w 0x0010 41142 0x00000000
+w 0x0010 41143 0x00000000
+w 0x0010 41144 0x00000000
+w 0x0010 41145 0x00000000
+w 0x0010 41146 0x00000000
+w 0x0010 41147 0x00000000
+w 0x0010 41148 0x00000000
+w 0x0010 41149 0x00000000
+w 0x0010 41150 0x00000000
+w 0x0010 41151 0x00000000
+w 0x0010 41216 0x00000050
+w 0x0010 41217 0x00000051
+w 0x0010 41218 0x00000052
+w 0x0010 41219 0x00000000
+w 0x0010 41220 0x00000000
+w 0x0010 41221 0x00000000
+w 0x0010 41222 0x00000000
+w 0x0010 41223 0x00000000
+w 0x0010 41224 0x0000003b
+w 0x0010 41225 0x0000003f
+w 0x0010 41226 0x0000004b
+w 0x0010 41227 0x0000004f
+w 0x0010 41228 0x00000044
+w 0x0010 41229 0x00000045
+w 0x0010 41230 0x00000046
+w 0x0010 41231 0x00000000
+w 0x0010 41232 0x0000005e
+w 0x0010 41233 0x0000005e
+w 0x0010 41234 0x0000005f
+w 0x0010 41235 0x00000000
+w 0x0010 41236 0x00000000
+w 0x0010 41237 0x00000000
+w 0x0010 41238 0x00000000
+w 0x0010 41239 0x00000000
+w 0x0010 41240 0x00000000
+w 0x0010 41241 0x00000000
+w 0x0010 41242 0x00000000
+w 0x0010 41243 0x00000000
+w 0x0010 41244 0x00000000
+w 0x0010 41245 0x00000000
+w 0x0010 41246 0x00000000
+w 0x0010 41247 0x00000050
+w 0x0010 41248 0x58002820
+w 0x0010 41249 0x58042921
+w 0x0010 41250 0x58082a22
+w 0x0010 41251 0x580c2b23
+w 0x0010 41252 0x58102d24
+w 0x0010 41253 0x58142e25
+w 0x0010 41254 0x70626161
+w 0x0010 41255 0x00000000
+w 0x0010 41256 0x00000000
+w 0x0010 41257 0x00000000
+w 0x0010 41258 0x00000000
+w 0x0010 41259 0x00000000
+w 0x0010 41260 0x00000000
+w 0x0010 41261 0x00000000
+w 0x0010 41262 0x00000000
+w 0x0010 41263 0x68300019
+w 0x0010 41280 0x00000001
+w 0x0010 41281 0x00000003
+w 0x0010 41282 0x00000002
+w 0x0010 41283 0x0000000f
+w 0x0010 41284 0x00000001
+w 0x0010 41285 0x00000002
+w 0x0010 41286 0x00000000
+w 0x0010 41287 0x00000000
+w 0x0010 41312 0x000000d1
+w 0x0010 41313 0x000000d2
+w 0x0010 41314 0x000000d3
+w 0x0010 41315 0x000000c6
+w 0x0010 41316 0x000000d8
+w 0x0010 41317 0x000000d9
+w 0x0010 41318 0x000000da
+w 0x0010 41319 0x00000071
+w 0x0010 41320 0x00000072
+w 0x0010 41321 0x00000073
+w 0x0010 41322 0x0000008e
+w 0x0010 41323 0x00000089
+w 0x0010 41324 0x00000088
+w 0x0010 41325 0x00000000
+w 0x0010 41326 0x0000009f
+w 0x0010 41327 0x00000092
+w 0x0010 41344 0x003f0000
+w 0x0010 41345 0x00000000
+w 0x0010 41346 0x00000000
+w 0x0010 41347 0x00000000
+w 0x0010 41348 0x00000000
+w 0x0010 41349 0x00eeeeee
+w 0x0010 41350 0x00000000
+w 0x0010 41351 0x00000000
+w 0x0010 41352 0x003f0000
+w 0x0010 41353 0x00000000
+w 0x0010 41354 0x00000000
+w 0x0010 41355 0x00000000
+w 0x0010 41356 0x003f0000
+w 0x0010 41357 0x00000000
+w 0x0010 41358 0x00000000
+w 0x0010 41359 0x00000000
+w 0x0010 41360 0x00000000
+w 0x0010 41361 0x00eeeeee
+w 0x0010 41362 0x00000000
+w 0x0010 41363 0x00000000
+w 0x0010 41364 0x00000fc0
+w 0x0010 41365 0x00000000
+w 0x0010 41366 0x00000000
+w 0x0010 41367 0x00000000
+w 0x0010 41368 0x00000000
+w 0x0010 41369 0x00000000
+w 0x0010 41370 0x00000000
+w 0x0010 41371 0x00000000
+w 0x0010 41372 0x00000000
+w 0x0010 41373 0x00000000
+w 0x0010 41374 0x00000000
+w 0x0010 41375 0x00000000
+w 0x0010 41408 0x00000000
+w 0x0010 41472 0x00000000
+w 0x0010 41473 0x00010000
+w 0x0010 41474 0x00000000
+w 0x0010 41475 0x00000000
+w 0x0010 41476 0x00000000
+w 0x0010 41477 0x00000000
+w 0x0010 41478 0x00000000
+w 0x0010 41479 0x00000000
+w 0x0010 41480 0x00000000
+w 0x0010 41481 0x00000000
+w 0x0010 41482 0x00000000
+w 0x0010 41483 0x00000001
+w 0x0010 41484 0x00000000
+w 0x0010 41485 0x00000000
+w 0x0010 41486 0x00000000
+w 0x0010 41487 0x00000000
+w 0x0010 41488 0x00000000
+w 0x0010 41489 0x00000000
+w 0x0010 41490 0x00400000
+w 0x0010 41491 0x00000008
+w 0x0010 41492 0x00000000
+w 0x0010 41493 0x00000000
+w 0x0010 41494 0x00000000
+w 0x0010 41495 0x00000000
+w 0x0010 41496 0x00000000
+w 0x0010 41497 0x00000000
+w 0x0010 41498 0x00000000
+w 0x0010 41499 0x00000004
+w 0x0010 41500 0x00000000
+w 0x0010 41501 0x00000000
+w 0x0010 41502 0x00000000
+w 0x0010 41503 0x00000000
+w 0x0010 41504 0x00000000
+w 0x0010 41505 0x00000000
+w 0x0010 41506 0x00000000
+w 0x0010 41507 0x00000010
+w 0x0010 41508 0x00000000
+w 0x0010 41509 0x00000000
+w 0x0010 41510 0x00000000
+w 0x0010 41511 0x00000000
+w 0x0010 41512 0x00000000
+w 0x0010 41513 0x00000000
+w 0x0010 41514 0x00000000
+w 0x0010 41515 0x00000020
+w 0x0010 41516 0x00000000
+w 0x0010 41517 0x00000000
+w 0x0010 41518 0x00000000
+w 0x0010 41519 0x00000000
+w 0x0010 41520 0x00000000
+w 0x0010 41521 0x00000000
+w 0x0010 41522 0x00000002
+w 0x0010 41523 0x00000000
+w 0x0010 41524 0x00000000
+w 0x0010 41525 0x00000000
+w 0x0010 41526 0x00000000
+w 0x0010 41527 0x00000000
+w 0x0010 41528 0x00000000
+w 0x0010 41529 0x00000000
+w 0x0010 41530 0x00000004
+w 0x0010 41531 0x00000000
+w 0x0010 41532 0x00000000
+w 0x0010 41533 0x00000000
+w 0x0010 41534 0x00000000
+w 0x0010 41535 0x00000000
+w 0x0010 41728 0x00000000
+w 0x0010 41729 0x00010000
+w 0x0010 41730 0x00000000
+w 0x0010 41731 0x00000000
+w 0x0010 41732 0x00000000
+w 0x0010 41733 0x00000000
+w 0x0010 41734 0x00000000
+w 0x0010 41735 0x00000000
+w 0x0010 41736 0x00000000
+w 0x0010 41737 0x00000000
+w 0x0010 41738 0x00000000
+w 0x0010 41739 0x00000001
+w 0x0010 41740 0x00000000
+w 0x0010 41741 0x00000000
+w 0x0010 41742 0x00000000
+w 0x0010 41743 0x00000000
+w 0x0010 41744 0x00000000
+w 0x0010 41745 0x00000000
+w 0x0010 41746 0x00400000
+w 0x0010 41747 0x00000008
+w 0x0010 41748 0x00000000
+w 0x0010 41749 0x00000000
+w 0x0010 41750 0x00000000
+w 0x0010 41751 0x00000000
+w 0x0010 41752 0x00000000
+w 0x0010 41753 0x00000000
+w 0x0010 41754 0x00000000
+w 0x0010 41755 0x00000004
+w 0x0010 41756 0x00000000
+w 0x0010 41757 0x00000000
+w 0x0010 41758 0x00000000
+w 0x0010 41759 0x00000000
+w 0x0010 41760 0x00000000
+w 0x0010 41761 0x00000000
+w 0x0010 41762 0x00000000
+w 0x0010 41763 0x00000010
+w 0x0010 41764 0x00000000
+w 0x0010 41765 0x00000000
+w 0x0010 41766 0x00000000
+w 0x0010 41767 0x00000000
+w 0x0010 41768 0x00000000
+w 0x0010 41769 0x00000000
+w 0x0010 41770 0x00000000
+w 0x0010 41771 0x00000020
+w 0x0010 41772 0x00000000
+w 0x0010 41773 0x00000000
+w 0x0010 41774 0x00000000
+w 0x0010 41775 0x00000000
+w 0x0010 41776 0x00000000
+w 0x0010 41777 0x00000000
+w 0x0010 41778 0x00000002
+w 0x0010 41779 0x00000000
+w 0x0010 41780 0x00000000
+w 0x0010 41781 0x00000000
+w 0x0010 41782 0x00000000
+w 0x0010 41783 0x00000000
+w 0x0010 41784 0x00000000
+w 0x0010 41785 0x00000000
+w 0x0010 41786 0x00000004
+w 0x0010 41787 0x00000000
+w 0x0010 41788 0x00000000
+w 0x0010 41789 0x00000000
+w 0x0010 41790 0x00000000
+w 0x0010 41791 0x00000000
&help();
exit(0);
}
-print $ENV{'EPICS_CA_ADDR_LIST'}."\n";
-print $ENV{'EPICS_CA_AUTO_ADDR_LIST'}."\n";
+#print $ENV{'EPICS_CA_ADDR_LIST'}."\n";
+#print $ENV{'EPICS_CA_AUTO_ADDR_LIST'}."\n";
my $P=$opt_plane;
my $S=$opt_sector;
Perl2Epics::Put("MDC_LV_Switch",$on);
Perl2Epics::Update(0.2);
sleep 2;
+#print "Done. Do a Reboot OEP!\n"; #not useful because of some cycles that have to touch two sectors
exit(0);
#-----------
#my $cmd = "gdialog --yesno \"$text\" --title \"Restart/Stop DAQ\"";
#my $cmd = "Xdialog --title \"Restart/Stop DAQ\" --yesno \"$text\" 10 100";
-my $cmd = "zenity --question --title=\"Restart/Stop DAQ\" --text=\"$text\" --height=10 --width=100";
+my $cmd = "zenity --question --title=\"DAQ Control\" --text=\"$text\" --height=10 --width=100";
my $r = system($cmd);
-xset -display :0 dpms force off
+XAUTHORITY=$(ls -1 /tmp/xauth_*| tail -1) xset -display :0 dpms force off