]> jspc29.x-matter.uni-frankfurt.de Git - hades_mdc_settings.git/commitdiff
add auto addresses for Trb3sc hubs
authorhadaq <hadaq@hades33.gsi.de>
Mon, 12 Aug 2024 12:39:13 +0000 (14:39 +0200)
committerhadaq <hadaq@hades33.gsi.de>
Mon, 12 Aug 2024 12:39:13 +0000 (14:39 +0200)
scripts/autoaddress.pl

index 4b3be9530aa64acfb73e4627ade63cd41e5a29de..6ef1e840313ed119f5b88e039fc7183938be6a9f 100755 (executable)
@@ -21,17 +21,32 @@ while (my $a = <FILE>) {
   }
 close FILE;
 
+open FILE, "../../daqtools/base/serials_trb3sc.db" or die $!."\nserials_trb3sc.db not found.";
+while (my $a = <FILE>) {
+  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
+      }
     }
   }