From d08501913bf4585888be9f89717e954d9639d5c7 Mon Sep 17 00:00:00 2001 From: Jan Michel Date: Tue, 21 Apr 2026 18:26:52 +0200 Subject: [PATCH] add script to decode address and show settings --- scripts/decode_address.pl | 67 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 scripts/decode_address.pl diff --git a/scripts/decode_address.pl b/scripts/decode_address.pl new file mode 100755 index 0000000..b2e79c3 --- /dev/null +++ b/scripts/decode_address.pl @@ -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 = ) { + 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 = ) { + 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"); -- 2.51.0