Commit graph

19 commits

Author SHA1 Message Date
d06ec8b13d
test: Add comprehensive test suite for Aprsme.Packets module
- Add tests for store_packet/1 functionality including validation, MicE data, and error handling
- Add tests for store_bad_packet/2 with proper error type conversion
- Add tests for get_recent_packets/1 with time, bounds, and callsign filtering
- Add tests for get_nearby_stations/4 with distance ordering and exclusions
- Add tests for weather packet queries and cleanup functions
- Add tests for packet replay, streaming, and counting operations
- Fix MicE struct access to use Access behavior instead of dot notation
- Fix error_type conversion to string for BadPacket storage
- Ensure all tests are passing (437 tests, 0 failures)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 17:18:39 -05:00
179e2e407d
fix: Convert telemetry_seq string values to integers
The APRS parser returns telemetry sequence numbers as strings (e.g., "094"),
but the database schema expects integers. This was causing Ecto.ChangeError
in production when processing telemetry packets.

Changes:
- Updated put_telemetry_fields/2 to convert string seq values to integers
- Added comprehensive tests for telemetry_seq type conversion
- Handles nil, string, integer, and invalid seq values gracefully

Production deployment notes:
1. Check if migration 20250801215236 has run in production
2. If not, run pending migrations before deploying this fix

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 17:12:47 -05:00
5ddbb18a10
fix: Handle atom format field from APRS parser
The APRS parser sometimes returns :unknown as an atom for the format field,
but the database expects a string. This was causing Ecto.ChangeError when
inserting packets.

Added normalize_format_field/1 function to convert atom values to strings
before database insertion. This ensures compatibility between the parser
output and database schema requirements.

Fixes error: value `:unknown` for `Aprsme.Packet.format` in `insert_all`
does not match type :string

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 17:04:32 -05:00
86d3837075
feat: Add support for enhanced APRS parser features
- Added position resolution field (posresolution) showing accuracy in meters
  - 18.52m for uncompressed positions
  - 0.291m for compressed positions
- Added format field indicating "compressed" or "uncompressed" position type
- Added telemetry support with three new fields:
  - telemetry_seq: sequence number
  - telemetry_vals: array of telemetry values
  - telemetry_bits: binary telemetry bits
- Updated packet schema and database migration
- Enhanced packet extraction logic to handle new fields
- All tests pass successfully

These improvements provide better position accuracy information and
enable telemetry packet processing from APRS stations.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 16:57:28 -05:00
82e97e5e31
feat: Add position ambiguity support from APRS parser
- Added position_ambiguity field (integer, 0-4) to packets table
- Created migration to add the new database column
- Updated packet schema and processing to extract position ambiguity
- Position ambiguity levels indicate precision of reported coordinates:
  - 0: No ambiguity (exact position)
  - 1: ~0.1 mile ambiguity
  - 2: ~1 mile ambiguity
  - 3: ~10 mile ambiguity
  - 4: ~60 mile ambiguity
- Automatically captures ambiguity level when parsing APRS packets
- All tests pass with no failures

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-01 16:21:19 -05:00
c59744f352
Fix ArgumentError for unknown field :phg in schema
The :phg field was being added as a map to packet attributes, but it's
not a database field. PHG data should be split into individual fields
(phg_power, phg_height, phg_gain, phg_directivity) which are actual
database columns.

Removed the :phg map from being added to attributes. The put_phg_fields
function already handles extracting individual PHG components.

Updated tests to check for individual PHG fields instead of the map.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 12:27:19 -05:00
623800dfc1
Fix failing packet parsing tests for altitude and PHG extraction
The APRS parser wasn't extracting altitude and PHG data from the comment
field. Added extraction functions to parse:
- Altitude from /A=XXXXXX format (converts to feet)
- PHG (Power-Height-Gain-Directivity) from PHGXXXX format

Also updated the comment cleaning to remove these technical details,
leaving only the human-readable station description.

Updated tests to properly use Packet.extract_additional_data() which
is where the parsing happens during packet processing.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 12:20:52 -05:00
c09f9175f4
add PHG parsing 2025-07-12 10:22:43 -05:00
7da91f5ccb
fix some accidental weather decoded packets 2025-07-10 16:30:48 -05:00
514d1b66d5
fix all the main map display issues 2025-07-09 16:20:29 -05:00
d6417ff16b
more live updates and chart version update 2025-07-04 12:15:38 -05:00
d15821e72e
more detail fixing 2025-07-04 10:23:37 -05:00
4baf3cffe7
dialyzer fixes 2025-07-03 10:56:06 -05:00
7ef3f59026
parsing improvements 2025-06-28 15:53:27 -05:00
f08330b46c
weather fixing 2025-06-25 11:40:04 -05:00
a0798c49f9
batch insert fix 2025-06-25 08:34:07 -05:00
0beb278371
add packet batcher 2025-06-24 15:06:09 -05:00
229c8f8305
fix messaging name 2025-06-24 14:29:47 -05:00
ce7c50caa1
refactor to use external parser 2025-06-24 14:22:09 -05:00
Renamed from lib/aprs/packet.ex (Browse further)