]> jspc29.x-matter.uni-frankfurt.de Git - hades_mdc_settings.git/commitdiff
add script to decode address and show settings master
authorJan Michel <michel@physik.uni-frankfurt.de>
Tue, 21 Apr 2026 16:26:52 +0000 (18:26 +0200)
committerJan Michel <michel@physik.uni-frankfurt.de>
Tue, 21 Apr 2026 16:26:52 +0000 (18:26 +0200)
scripts/decode_address.pl [new file with mode: 0755]

diff --git a/scripts/decode_address.pl b/scripts/decode_address.pl
new file mode 100755 (executable)
index 0000000..b2e79c3
--- /dev/null
@@ -0,0 +1,67 @@
+#!/usr/bin/perl -w
+use warnings;
+no warnings "portable";
+use FileHandle;
+use Getopt::Long;
+use Data::Dumper;
+use HADES::TrbNet;
+use Pod::Usage;
+use lib '.';
+use MDC;
+use MDCPower;
+
+###############################################################################
+#Read file with list of installed boards & MBO size
+###############################################################################
+my $boards;
+my $longs;
+open FILE, "../installation/mbo_positions.db" or die $!."\nmbo_positions.db not found.";
+while (my $a = <FILE>) {
+  if(my @values = $a =~ /^\s*(\d)\s+(\d)\s+(\d+)\s+(\d)\s+(\d+)\s*/) {
+    my $p    = shift @values;
+    my $s    = shift @values;
+    my $b    = shift @values;
+    my $long = shift @values;
+    my $id   = shift @values;
+    
+    $boards->[$p][$s][$b] = $id;
+    $longs->[$p][$s][$b]  = $long;
+    }
+  }
+close FILE;
+
+###############################################################################
+#Read baseline file and store values
+###############################################################################
+open FILE, "../pasttrec/pasttrec_baseline.db" or die $!."\npasttrec_baseline.db not found.";
+while (my $a = <FILE>) {
+  if(my @values = $a =~ /^\s*(\d+)\s+(\d)\s+(\w\w\s+\w\w\s+\w\w\s+\w\w\s+\w\w\s+\w\w\s+\w\w\s+\w\w)\s*$/) {
+    my $s = shift @values;
+    my $pt = shift @values;
+    $baselines->{$s}{$pt}=shift @values;
+    }
+  }
+close FILE;
+
+my $addr = shift @ARGV;
+   $addr = hex($addr);
+
+my ($p,$s,$b,$e) = MDC::get_position($addr);
+my ($fs) = $boards->[$p][$s][$b].$e;
+my $oepaddr = MDC::get_address($p,$s,$b,5);
+my ($v1,$v2) = MDCPower::get_voltage($oepaddr);
+
+if($e != 5) {
+  printf("0x%04x\tPlane %i\tSect %i\tBoard %i\tTDC %i\n",$addr,$p,$s,$b,$e);
+  }
+else { 
+  printf("0x%04x\tPlane %i\tSect %i\tBoard %i\tOEP\n",$addr,$p,$s,$b);
+  }
+
+printf("\t\tSerial %i (%s)\n\n",$boards->[$p][$s][$b],$longs->[$p][$s][$b]?"long":"short");
+print("PT 0 \t $baselines->{$fs}{0}\n");
+print("PT 1 \t $baselines->{$fs}{1}\n");
+print("PT 2 \t $baselines->{$fs}{2}\n");
+print("PT 3 \t $baselines->{$fs}{3}\n\n");
+
+print("V1  $v1\tV2  $v2\n\n");