[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/safe/tools decode_flid.pl, NONE, 1.1

John Regehr regehr at users.sourceforge.net
Tue Feb 12 11:08:43 PST 2008


Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/safe/tools
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv851

Added Files:
	decode_flid.pl 
Log Message:
perl script for decompression safe tinyos error messages

--- NEW FILE: decode_flid.pl ---
#!/usr/bin/perl -w

use strict;

sub decode ($$) {
    my $a = shift;
    my $b = shift;
    die if ($a<0 || $a>3);
    die if ($b<0 || $b>3);
    my $c = ($a << 2) + $b;
    my $h = sprintf "%X", $c;
    return $h;
}

sub make_flid () {

    my $flid = $ARGV[0];
    die "expected 8 characters" if (length($flid) != 8);
    
    my $flidstr =
	"0x" .
	decode(substr($flid,0,1),substr($flid,1,1)) .
	decode(substr($flid,2,1),substr($flid,3,1)) .
	decode(substr($flid,4,1),substr($flid,5,1)) .
	decode(substr($flid,6,1),substr($flid,7,1));
}

my $flidstr = make_flid();

my $fn = $ARGV[1];
my $found = 0;

if (defined ($fn)) {
    open INF, "<$fn" or die;
    while (my $line = <INF>) {
	chomp $line;

	my @fields = split /\#\#\#/, $line;
	foreach (@fields) {
	    (s/^\s*//g);
	    (s/\s*$//g);
	    (s/^\"//g);
	    (s/\"$//g);
	}
	if (hex($fields[0]) == hex($flidstr)) {
	    $found = 1;
	    my $text = $fields[2];
	    my $check = $fields[3];
	    my $file = $fields[5];
	    my $line = $fields[6];
	    my $func = $fields[7];

	    print "\n$line\n\n";

	    print "Deputy error message for flid $flidstr:\n\n";

	    printf "%s:%d: %s: Assertion failed in %s:\n  %s\n", 
	    $file, $line, $func, $check, $text;
	    
	    print "\n";
	}
    }
    close INF;
}

if (!$found) {
    print "oops -- flid $flidstr not found in file\n";
}



More information about the Tinyos-2-commits mailing list