#!/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); }