From 4112f06fb0f699e4bdbac9748f6e2d07f5b885da Mon Sep 17 00:00:00 2001 From: hadaq Date: Mon, 12 Aug 2024 14:39:13 +0200 Subject: [PATCH] add auto addresses for Trb3sc hubs --- scripts/autoaddress.pl | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/scripts/autoaddress.pl b/scripts/autoaddress.pl index 4b3be95..6ef1e84 100755 --- a/scripts/autoaddress.pl +++ b/scripts/autoaddress.pl @@ -21,17 +21,32 @@ while (my $a = ) { } close FILE; +open FILE, "../../daqtools/base/serials_trb3sc.db" or die $!."\nserials_trb3sc.db not found."; +while (my $a = ) { + if(my @values = $a =~ /^\s*(\d+)\s+0x([\w]{16})\s*.*$/) { + my $s = shift @values; + my $uid = shift @values; + $serials->{hex($uid)} = hex($s); + } + } +close FILE; + ############################################################################### #Find available boards ############################################################################### trb_init_ports() or die trb_strerror(); -my $boards = trb_read_uid(0xfffb); +my $boards = trb_read_uid(0xffff); foreach my $uid (keys %$boards) { foreach my $k (keys %{$boards->{$uid}}) { # $addresses->{$boards->{$uid}{$k}} = $serials->{$uid}; # printf("%016x %04x\n",$uid, $serials->{$uid}); - trb_set_address($uid,$serials->{$uid}%8,$serials->{$uid}); + if (($uid&0xff) == 0x28) { + trb_set_address($uid,$serials->{$uid}%8,($serials->{$uid}>>4)+0x8000); #Trb3sc + } + else { + trb_set_address($uid,$serials->{$uid}%8,$serials->{$uid}); #MDC + } } } -- 2.43.0