Revision history for Perl extension Ham::APRS::FAP. 0.01 Wed Feb 16 15:58:47 2005 - original version; created by h2xs 1.22 0.02 Sun Dec 9 22:10:04 EET 2007 - Hessu, OH7LZB - Merged first bunch of aprs.fi enhancements: - Return parser errors in the return hash, instead of printing to STDERR, so that they're more usable. See the 'resultcode' and 'resultmsg' hash entries - resultcode is a machine-readable error code, and 'resultmsg' is the human-readable equivalent. - The result_messages() function returns a hash of all possible resultcodes and their plain english descriptions. - Permit source callsigns to be in lower case - Catch experimental packets (report error) - Catch but ignore telemetry packets (report error) - Accept broken uncompressed location packets with minute > 59.99 in initial regexp parsing, and report a proper error code for them 0.03 Sun Dec 9 23:47:19 EET 2007 - Hessu, OH7LZB - Merged weather parsing code from aprs.fi branch, now parses a good majority of weather packets on the APRS-IS. The data goes in a new wx hash (see keys %{ $rethash->{'wx'} }). 0.04 Sun Dec 9 23:52:14 EET 2007 - Hessu, OH7LZB - Merged the rest of changes in the aprs.fi branch: - The third argument of parseaprs(), $isax25, is now gone and replaced with an options hash, which knows two options 'isax25' and 'accept_broken_mice'. They're used like this: my $ret = parseaprs( $l, $p, 'accept_broken_mice' => 1, 'isax25' => 0 ); The hash is optional, so parseaprs($l, $p); will work for APRS-IS lines. - The new 'accept_broken_mice' option enables parsing of mic-e packets from which some nonprintable characters have been removed. At least aprsd has a bug which replaces them with spaces, and possibly some other software then replaces multiple spaces with a single space. Some data is lost, but the position is still parseable. - Catches more PHG data and the newer PHGR format. It's not really parsed, just passed back in 'phg' field of the hash. 0.05 Wed Dec 12 17:04:31 EET 2007 - Hessu, OH7LZB - Added a lot of unit test cases over the last couple days - over 200 unique test items in 13 files. It isn't complete, though. - Renamed from APRS::Parser to Ham::APRS::FAP (Fabulous APRS Parser) to better align with the CPAN hierarchy, and to avoid clashing with the existing Ham::APRS::Parser) 0.06 Wed Dec 19 17:46:12 EET 2007 - Tapio, OH2KKU - Relaxed non-AX.25 callsign checking, i.e. now accept any alphanumeric "callsign" (including a variable amount of '-' chars) with a maximum total length of 9 characters. - Some cosmectic changes to unit conversions and comment clarifications. 0.07 Wed Dec 19 23:26:52 EET 2007 - Hessu, OH7LZB - Fixed tests. Tapio's changes removed the -0 from source callsigns with an SSID of 0, so I removed it from the destination callsigns too, and changed tests accordingly. 1.00 Wed Dec 19 23:39:55 EET 2007 - Hessu, OH7LZB - Some small POD documentation changes - Bumped version number for initial public release 1.01 Thu Dec 20 00:05:59 EET 2007 - Hessu, OH7LZB - Added Date::Calc in the Makefile.PM required modules list, so that CPAN installations will work properly 1.02 Fri Jan 4 01:29:47 EET 2008 - Hessu, OH7LZB - Fixed bug: Rain over past 24 hours and since midnight were mixed up by the "normal" APRS weather packet parser (thanks DK7IN) - Tuned POD documentation a little bit 1.10 Wed Mar 12 16:23:20 EET 2008 - Hessu, OH7LZB - Committed APRS telemetry parsing code (has been tested on aprs.fi for quite some time now) - Disabled timestamp checking in t/41decode-object.t - the parsed timestamp varies depending on when the parsing code is run, since the timestamp in the APRS packet is not fully specified. 1.11 Wed Mar 12 17:14:14 EET 2008 - Hessu, OH7LZB - Removed accidentally forgotten dependency on Data::Dumper - Documented dependency on the (standard) Math::Trig module in Makefile.PL - Added t/53decode-tlm.t to the distribution, oops 1.12 Mon May 19 18:13:54 EEST 2008 - Tapio, OH2KKU, and Hessu, OH7LZB - !DAO! extension support (Datum and additional position resolution for uncompressed and mic-e packets) implemented by Tapio. - Added position resolution reporting in meters (posresolution) to all packets containing a location and corresponding tests. Also added a quick test for position ambiguity parsing. - Additional unit tests and CPAN distribution cleanups. - Added an example script in the examples/ subdirectory. 1.13 Tue Nov 17 12:24:07 EET 2009 - Tapio, OH2KKU, and Hessu, OH7LZB - Allow anyone to update telemetry parameters, skip the source callsign check - Allow a PHG of 0000 for deleting PHG - Added new error code sym_inv_table for invalid symbol table char - Added local time zone parsing to object timestamps - Fixed comments parsing for last resort !-location packets - Parse APRS message rejects 1.14 Tue May 4 20:31:33 EEST 2010 - Hessu, OH7LZB - Fixed humidity parsing, h0 means 100% - Fixed peet bros $ULTW packet parsing, integers are signed (not unsigned), negative fahrenheit temperatures are now correctly parsed (and converted to Celsius) - Parse comment from end of weather reports - if it's short enough, treat it as the wx station/software type string - Parse weather data sent after a compressed position - Parse snowfall from normal wx packet - Added test for positionless wx packets - Added position packet format in hash ('format' => 'compressed') 1.15 Tue May 4 20:44:31 EEST 2010 - Hessu, OH7LZB - Added a couple of missing tests and 'format' => 'nmea' 1.16 Wed May 19 22:34:43 EEST 2010 - Hessu, OH7LZB - Added a couple of test cases - Added an example script to parse a whole file of timestamped APRS-IS packets - Fixed peet WX packet parsing for Perl 5.8 and older, which don't support n! packing - Minor speedups by reducing amount of regular expressions, extra variables, reordering things to catch the most common case first, and tightening a loop - Put '' around hash key strings (style issue) 1.17 Fri Sep 10 08:10:29 EEST 2010 - Hessu, OH7LZB - Remove / or ' ' from beginning of comment after parsing away PHG, altitude and other optional data - Allow hexadecimal IPv6 addresses in APRS-IS paths after q.. construct - Added tests for uncompressed packet altitude (negative, too) - Fixed destination callsign based symbol selection for 'BC' - Updated URLs to aprs.org, etc 1.18 Fri Aug 5 08:39:49 EEST 2011 - Hessu, OH7LZB and Tapio, OH2KKU - Added Ham::APRS::IS module - an APRS-IS client library - Fixed position resolution calculation for whole degree cases, and added tests - Implemented a 'raw_timestamp' option to return undecoded timestamps in all but status packets - Added tests for timestamp and status message parsing - Added support for new base91 comment telemetry 1.19 Sun Dec 30 13:13:19 EET 2012 - Hessu, OH7LZB - Fixed Binary Value bit order in base91 comment telemetry 1.20 Sun Feb 16 16:13:58 EET 2014 - Hessu, OH7LZB - Mic-E: Catch invalid symbol table errors even in broken mic-e packets - Mic-E: Indicate demangled packets with a 'mice_mangled' flag - Mic-E: If a mic-e packet was demangled, do not decode speed or course which were lost in transit - Mic-E: Obtain correct symbol table identifier after demangling - Mic-E: Added tests for demangled case - Added sock() method to IS.pm for obtaining socket - Comment telemetry: Decode before DAO to avoid stripping "DAO" from middle of telemetry 1.21 Fri Mar 24 07:55:01 EET 2017 - Hessu, OH7LZB - Improve make_position() to support HMS UTC timestamp. make_position() now returns the packet type character so that it can signal the presence of a timestamp. - Improve make_position() to support comment string, !DAO! extension, altitude encoding. Fix rounding errors in lat/lon/speed. Support generating packets with no speed or course. Take optional parameters in a hash parameter. Implement unit tests for make_position(). - Set up Travis for automatic unit test runs. - Additional character escaping in regular expressions to deal with deprecated functionality in Perl 5.22.