#!/usr/bin/perl
use utf8;
use strict;
use warnings;
use Data::Dumper;
use Ham::APRS::FAP qw(parseaprs);
use Time::HiRes qw(sleep time);
my $lines = 0;
my $parse_ok = 0;
my $location_packet = 0;
my $start_t = time();
my $l;
while ($l = <>) {
if ($l =~ /^(\d+)\s+(.*)[\r\n]+$/) {
$lines++;
my %p;
my $ret = parseaprs($2, \%p);
print "$1 $2\n$ret";
foreach my $k ('resultcode', 'type', 'srccallsign', 'dstcallsign', 'objectname', 'itemname', 'symbolcode', 'symboltable', 'latitude', 'longitude', 'comment', 'messaging') {
if (defined $p{$k}) {
print " $k '$p{$k}'";
}
}
#print Dumper(\%p);
print "\n";
next if ($ret != 1);
$parse_ok++;
next if (!defined $p{'type'} || $p{'type'} ne 'location');
$location_packet++;
}
}
my $end_t = time();
my $dur_t = $end_t - $start_t;
warn sprintf("parsed $lines lines in %.3f s: %.0f lines/s\n", $dur_t, $lines / $dur_t);
warn sprintf("$parse_ok (%.1f %% of total lines) parsed correctly using FAP\n", $parse_ok / $lines * 100);
warn sprintf("$location_packet (%.1f %% of total, %.1f %% of parsed) were location packets\n", $location_packet / $lines * 100, $location_packet / $parse_ok * 100);