]> jspc29.x-matter.uni-frankfurt.de Git - hades_mdc_settings.git/commitdiff
add script to automatically set serial number as network address, JM
authorMDC Test <mdc@mdcgsi>
Sun, 16 Jun 2024 13:58:24 +0000 (15:58 +0200)
committerMDC Test <mdc@mdcgsi>
Sun, 16 Jun 2024 13:58:24 +0000 (15:58 +0200)
scripts/README.md
scripts/autoaddress.pl [new file with mode: 0755]

index 951bee4c277faf674f93f651e80f21eaf7a5d72f..b0bc30e0715a14ae032b42f61abf006b08078f5e 100644 (file)
@@ -10,6 +10,7 @@
 * `generate_merged_settings.pl` generates indiidual settings from the 'settings' directory
 * `load_flash_settings.pl` flashes settings to one or all FPGA
 * `load_mdc_addresses.sh` sets network addresses for all MBOs
+* `autoaddress.pl` sets some fake network addresses based on serial numbers
 
 ## Pasttrec Settings
 * `pasttrec_set_threshold.pl` sets an identical threshold to all Pasttrec (temporarily)
diff --git a/scripts/autoaddress.pl b/scripts/autoaddress.pl
new file mode 100755 (executable)
index 0000000..959cf3d
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/perl -w
+use warnings;
+no warnings "portable";
+use FileHandle;
+use Getopt::Long;
+use Data::Dumper;
+use HADES::TrbNet;
+use Pod::Usage;
+
+
+###############################################################################
+#Read serials file and store values
+###############################################################################
+open FILE, "../serials/serials_mdcmbo.db" or die $!."\nserials_mdcmbo.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);
+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});
+    }
+  }
+