Changelog

View Source

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[0.1.5] - 2025-08-01

Fixed

  • Third-Party Traffic Parsing: Fixed FunctionClauseError in third-party packet parsing caused by incorrect SSID extraction in tunneled packets
  • Invalid Position Data Handling: Added graceful error handling for packets with invalid UTF-8 characters in position data
    • Packets with invalid characters in compressed positions now return descriptive error messages instead of crashing
    • Added proper handling of UnicodeConversionError in compressed position helpers
    • Distinguishes between "Invalid compressed location" and "Invalid uncompressed location" errors
  • Compressed Latitude Calculation: Fixed incorrect divisor (was 456976, now 380926) for compressed latitude
  • Telemetry Parsing: Fixed telemetry parsing to handle both "T#" and "#" prefixes correctly

Added

  • Enhanced Error Messages: Position parsing now returns specific error messages for different types of invalid data
  • UTF-8 Safety: Added safe_to_charlist function to handle invalid UTF-8 sequences in compressed position data
  • Comprehensive Test Coverage: Added tests for various invalid packet formats including:
    • DB0WV-11 packet with UTF-8 characters in uncompressed position
    • HB9ZF-12 packet with UTF-8 characters in compressed position
    • TSwWV-8 packet with mixed format position data
    • HB9ELZ-7 packet with malformed UTF-8 encoding
    • KO6TX-1 third-party traffic packet validation
  • Position Resolution Parsing: Added full support for compressed position resolution (ambiguity) levels 0-4
    • Extracts position resolution from compression type byte (bits 2-4)
    • Supports all standard APRS ambiguity levels: exact, 0.1', 1', 10', 1°
  • Compression Type Details: Enhanced parsing of compression type byte to extract:
    • GPS fix type (other, GLL/GGA, RMC)
    • Position resolution/ambiguity level
    • Old GPS data flag
  • Alternate Compressed Formats: Support for compressed positions with leading symbol table ID (e.g., 'L' format)
  • Position Resolution Field: Added posresolution field showing position accuracy in meters
    • Uncompressed positions: 18.52m to 111,120m based on ambiguity
    • Compressed positions: 0.291m precision
  • Format Field: Added format field indicating "compressed" or "uncompressed" position type
  • Telemetry in Comments: Extract base91-encoded telemetry data from position comments
  • Enhanced Telemetry Parsing: Improved telemetry packet structure with seq, vals, and bits fields
  • Decimal Coordinate Conversion: Convert latitude/longitude to float values instead of Decimal structs

[0.1.4] - 2025-07-07

Added

  • Device ID Parser: New comprehensive device ID parsing functionality with support for various device types and formats
  • Enhanced Mic-E Packet Support: Improved parsing of Mic-E packets with better error handling and validation
  • Compressed Position Helpers: New dedicated module for handling compressed position calculations and conversions
  • Weather Position Integration: Enhanced weather packet parsing with position data integration
  • Telemetry Helpers: New comprehensive telemetry parsing and validation utilities
  • Utility Helpers: New module providing common utility functions for APRS packet processing
  • Device Parser Tests: Comprehensive test suite for device ID parsing functionality
  • Compressed Position Tests: Extensive test coverage for compressed position parsing
  • Weather Helpers Tests: Complete test suite for weather data parsing and validation
  • Telemetry Helpers Tests: Comprehensive tests for telemetry data processing
  • Utility Helpers Tests: Full test coverage for utility functions

Changed

  • Performance Improvements: Significant performance optimizations in packet parsing logic
  • Enhanced Error Handling: Improved error handling and validation throughout the parsing pipeline
  • Refined Parsing Logic: More robust and accurate packet parsing with better edge case handling
  • Weather Parser Enhancements: Improved weather data parsing with better field validation
  • Test Coverage: Dramatically increased test coverage across all modules
  • Code Organization: Better module structure and separation of concerns

Fixed

  • Weather Packet Parsing: Fixed issues with weather packet parsing and field extraction
  • Position Ambiguity Calculation: Improved accuracy of position ambiguity calculations
  • Unicode Handling: Better handling of Unicode characters in packet data
  • Binary Pattern Matching: Enhanced binary pattern matching for more reliable parsing
  • Coordinate Validation: Improved coordinate validation and error handling

Technical Improvements

  • Binary-Safe Operations: Enhanced binary operations for better Unicode support
  • Memory Efficiency: Optimized memory usage in packet processing
  • Type Safety: Improved type specifications and validation
  • Documentation: Enhanced inline documentation and code comments
  • Code Quality: Improved code formatting and adherence to Elixir best practices

[0.1.3] - Initial Release

Added

  • Core APRS Parsing: Basic APRS packet parsing functionality
  • Position Reports: Support for uncompressed and compressed position reports
  • Weather Reports: Basic weather data parsing
  • Status Reports: Status message parsing
  • Messages: APRS message parsing
  • Objects and Items: Object and item packet support
  • Mic-E Packets: Basic Mic-E packet parsing
  • Telemetry Data: Telemetry packet support
  • PHG Data: PHG (Power, Height, Gain) data parsing
  • NMEA Support: NMEA sentence parsing for GPS data
  • AX.25 Support: AX.25 callsign parsing and validation
  • Basic Documentation: Initial README and usage examples