]> www.fi.muni.cz Git - slotcarman.git/blobdiff - annotate_log
Log printing/annotating app
[slotcarman.git] / annotate_log
diff --git a/annotate_log b/annotate_log
new file mode 100755 (executable)
index 0000000..50d3683
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+use Getopt::Std;
+use SCX::LogPrinter;
+
+my %opt;
+if (!getopts('abi:su', \%opt) || !$ARGV[0]) {
+       die "Usage: $0 [-a] [-b] [-s] [-u] [-i type1,type2,...] logfile\n"
+               . "-a ... print all packet types, not only default types\n"
+               . "-b ... print also bad bytes (wrong CRC, non-packets, etc.)\n"
+               . "-i ... also ignore packets of given types\n"
+               . "-s ... print also strange packets\n"
+               . "-u ... print unique packets only (filter out duplicates)\n";
+}
+
+my $logfile = shift @ARGV;
+
+open my $logfh, '<', $logfile
+       or die "Can't open $logfile: $!";
+
+my %args;
+
+$args{dump_bad_bytes} = 1 if $opt{b};
+$args{dump_strange} = 1 if $opt{s};
+$args{uniq_only} = 1 if $opt{u};
+
+my %default_skip_types = map { $_ => 1 } qw(bus_free_time controller);
+my %skip_types = ($opt{a} ? () : %default_skip_types);
+
+if ($opt{i}) {
+       %skip_types = (%skip_types, map { $_ => 1 } split(/,/, $opt{i}));
+}
+
+$args{skip_types} = \%skip_types;
+
+my $printer = SCX::LogPrinter->new(\%args);
+
+while (my $line = <$logfh>) {
+       chomp $line;
+       $line =~ s/\A\s+//xms;
+        my ($l_time, @data) = split(/\s+/, $line);
+
+       $printer->add_data($l_time, map { hex $_ } @data);
+}
+