]> www.fi.muni.cz Git - slotcarman.git/blob - annotate_log
gui.pl renamed to slotcarman
[slotcarman.git] / annotate_log
1 #!/usr/bin/perl -w
2
3 use strict;
4
5 use Getopt::Std;
6 use SCX::LogPrinter;
7
8 my %opt;
9 if (!getopts('abi:su', \%opt) || !$ARGV[0]) {
10         die "Usage: $0 [-a] [-b] [-s] [-u] [-i type1,type2,...] logfile\n"
11                 . "-a ... print all packet types, not only default types\n"
12                 . "-b ... print also bad bytes (wrong CRC, non-packets, etc.)\n"
13                 . "-i ... also ignore packets of given types\n"
14                 . "-s ... print also strange packets\n"
15                 . "-u ... print unique packets only (filter out duplicates)\n";
16 }
17
18 my $logfile = shift @ARGV;
19
20 open my $logfh, '<', $logfile
21         or die "Can't open $logfile: $!";
22
23 my %args;
24
25 $args{dump_bad_bytes} = 1 if $opt{b};
26 $args{dump_strange} = 1 if $opt{s};
27 $args{uniq_only} = 1 if $opt{u};
28
29 my %default_skip_types = map { $_ => 1 } qw(bus_free_time controller);
30 my %skip_types = ($opt{a} ? () : %default_skip_types);
31
32 if ($opt{i}) {
33         %skip_types = (%skip_types, map { $_ => 1 } split(/,/, $opt{i}));
34 }
35
36 $args{skip_types} = \%skip_types;
37
38 my $printer = SCX::LogPrinter->new(\%args);
39
40 while (my $line = <$logfh>) {
41         chomp $line;
42         $line =~ s/\A\s+//xms;
43         my ($l_time, @data) = split(/\s+/, $line);
44
45         $printer->add_data($l_time, map { hex $_ } @data);
46 }
47