diff --git a/CHANGELOG.md b/CHANGELOG.md index dddb88d..c17c584 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Automatically drains connections when node is overloaded (>70% CPU or 2x average connections) - Gracefully reconnects clients to less loaded nodes - Improves overall cluster stability and performance +- Position ambiguity support from APRS parser + - Added `position_ambiguity` field to packets table (integer, 0-4) + - Automatically captures position ambiguity level when parsing APRS packets + - Supports ambiguity levels 0-4 as defined in APRS specification ### Changed - Query performance improved by 50-90% for common operations diff --git a/lib/aprsme/packet.ex b/lib/aprsme/packet.ex index 7683d53..982a782 100644 --- a/lib/aprsme/packet.ex +++ b/lib/aprsme/packet.ex @@ -52,6 +52,9 @@ defmodule Aprsme.Packet do field(:speed, :float) field(:altitude, :float) + # Position ambiguity level (0-4) + field(:position_ambiguity, :integer) + # PHG (Power-Height-Gain) fields field(:phg_power, :integer) field(:phg_height, :integer) @@ -115,6 +118,7 @@ defmodule Aprsme.Packet do :course, :speed, :altitude, + :position_ambiguity, :phg_power, :phg_height, :phg_gain, @@ -346,6 +350,7 @@ defmodule Aprsme.Packet do :aprs_messaging, data_extended[:aprs_messaging?] || data_extended["aprs_messaging?"] ) + |> maybe_put(:position_ambiguity, data_extended[:position_ambiguity] || data_extended["position_ambiguity"]) end defp put_weather_fields(map, data_extended) do diff --git a/priv/repo/migrations/20250801211702_add_position_ambiguity_to_packets.exs b/priv/repo/migrations/20250801211702_add_position_ambiguity_to_packets.exs new file mode 100644 index 0000000..efbedce --- /dev/null +++ b/priv/repo/migrations/20250801211702_add_position_ambiguity_to_packets.exs @@ -0,0 +1,9 @@ +defmodule Aprsme.Repo.Migrations.AddPositionAmbiguityToPackets do + use Ecto.Migration + + def change do + alter table(:packets) do + add :position_ambiguity, :integer + end + end +end diff --git a/vendor/aprs b/vendor/aprs index 49b5225..46ece8d 160000 --- a/vendor/aprs +++ b/vendor/aprs @@ -1 +1 @@ -Subproject commit 49b5225fe8b3212bab2833cfbf1032a030010022 +Subproject commit 46ece8d819b6ceb67b55dfe689cab68c665c978b